Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e97fb79 authored by Naveen Krishna Ch's avatar Naveen Krishna Ch Committed by Kukjin Kim
Browse files

ARM: EXYNOS4: Add keypad device helpers



This patch adds the samsung_keypad_cfg_gpio() for EXYNOS4.
Now, this helpers are only for keypad operating in PORT-0.

Signed-off-by: default avatarNaveen Krishna Ch <ch.naveen@samsung.com>
Signed-off-by: default avatarKukjin Kim <kgene.kim@samsung.com>
parent 40360217
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -65,6 +65,11 @@ config EXYNOS4_SETUP_I2C7
	help
	  Common setup code for i2c bus 7.

config EXYNOS4_SETUP_KEYPAD
	bool
	help
	  Common setup code for keypad.

config EXYNOS4_SETUP_SDHCI
	bool
	select EXYNOS4_SETUP_SDHCI_GPIO
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ obj-$(CONFIG_EXYNOS4_SETUP_I2C4) += setup-i2c4.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C5)	+= setup-i2c5.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C6)	+= setup-i2c6.o
obj-$(CONFIG_EXYNOS4_SETUP_I2C7)	+= setup-i2c7.o
obj-$(CONFIG_EXYNOS4_SETUP_KEYPAD)	+= setup-keypad.o
obj-$(CONFIG_EXYNOS4_SETUP_SDHCI)	+= setup-sdhci.o
obj-$(CONFIG_EXYNOS4_SETUP_SDHCI_GPIO)	+= setup-sdhci-gpio.o
obj-$(CONFIG_SATA_AHCI_PLATFORM)	+= dev-ahci.o
+35 −0
Original line number Diff line number Diff line
/* linux/arch/arm/mach-exynos4/setup-keypad.c
 *
 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * GPIO configuration for Exynos4 KeyPad device
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

#include <linux/gpio.h>
#include <plat/gpio-cfg.h>

void samsung_keypad_cfg_gpio(unsigned int rows, unsigned int cols)
{
	/* Keypads can be of various combinations, Just making sure */

	if (rows > 8) {
		/* Set all the necessary GPX2 pins: KP_ROW[0~7] */
		s3c_gpio_cfgrange_nopull(EXYNOS4_GPX2(0), 8, S3C_GPIO_SFN(3));

		/* Set all the necessary GPX3 pins: KP_ROW[8~] */
		s3c_gpio_cfgrange_nopull(EXYNOS4_GPX3(0), (rows - 8),
					 S3C_GPIO_SFN(3));
	} else {
		/* Set all the necessary GPX2 pins: KP_ROW[x] */
		s3c_gpio_cfgrange_nopull(EXYNOS4_GPX2(0), rows,
					 S3C_GPIO_SFN(3));
	}

	/* Set all the necessary GPX1 pins to special-function 3: KP_COL[x] */
	s3c_gpio_cfgrange_nopull(EXYNOS4_GPX1(0), cols, S3C_GPIO_SFN(3));
}