mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
ARM: S3C24XX: Add the gpio pull configuration for pull-up
Add the necessary gpio configuration helper for the devices which have a single-bit pull-up resistor disabled. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
This commit is contained in:
parent
9bbb851c70
commit
1ec7269fd8
@ -6,6 +6,7 @@ config CPU_S3C2410
|
|||||||
bool
|
bool
|
||||||
depends on ARCH_S3C2410
|
depends on ARCH_S3C2410
|
||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
|
select S3C_GPIO_PULL_UP
|
||||||
select S3C2410_CLOCK
|
select S3C2410_CLOCK
|
||||||
select S3C2410_GPIO
|
select S3C2410_GPIO
|
||||||
select CPU_LLSERIAL_S3C2410
|
select CPU_LLSERIAL_S3C2410
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/timer.h>
|
#include <linux/timer.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/sysdev.h>
|
#include <linux/sysdev.h>
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
@ -40,6 +41,10 @@
|
|||||||
#include <plat/clock.h>
|
#include <plat/clock.h>
|
||||||
#include <plat/pll.h>
|
#include <plat/pll.h>
|
||||||
|
|
||||||
|
#include <plat/gpio-core.h>
|
||||||
|
#include <plat/gpio-cfg.h>
|
||||||
|
#include <plat/gpio-cfg-helpers.h>
|
||||||
|
|
||||||
/* Initial IO mappings */
|
/* Initial IO mappings */
|
||||||
|
|
||||||
static struct map_desc s3c2410_iodesc[] __initdata = {
|
static struct map_desc s3c2410_iodesc[] __initdata = {
|
||||||
@ -65,6 +70,9 @@ void __init s3c2410_init_uarts(struct s3c2410_uartcfg *cfg, int no)
|
|||||||
|
|
||||||
void __init s3c2410_map_io(void)
|
void __init s3c2410_map_io(void)
|
||||||
{
|
{
|
||||||
|
s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1up;
|
||||||
|
s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1up;
|
||||||
|
|
||||||
iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
|
iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ config CPU_S3C2440
|
|||||||
bool
|
bool
|
||||||
depends on ARCH_S3C2410
|
depends on ARCH_S3C2410
|
||||||
select CPU_ARM920T
|
select CPU_ARM920T
|
||||||
|
select S3C_GPIO_PULL_UP
|
||||||
select S3C2410_CLOCK
|
select S3C2410_CLOCK
|
||||||
select S3C2410_PM if PM
|
select S3C2410_PM if PM
|
||||||
select S3C2410_GPIO
|
select S3C2410_GPIO
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/serial_core.h>
|
#include <linux/serial_core.h>
|
||||||
#include <linux/sysdev.h>
|
#include <linux/sysdev.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
#include <linux/clk.h>
|
#include <linux/clk.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
|
||||||
@ -33,6 +34,10 @@
|
|||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
#include <plat/s3c244x.h>
|
#include <plat/s3c244x.h>
|
||||||
|
|
||||||
|
#include <plat/gpio-core.h>
|
||||||
|
#include <plat/gpio-cfg.h>
|
||||||
|
#include <plat/gpio-cfg-helpers.h>
|
||||||
|
|
||||||
static struct sys_device s3c2440_sysdev = {
|
static struct sys_device s3c2440_sysdev = {
|
||||||
.cls = &s3c2440_sysclass,
|
.cls = &s3c2440_sysclass,
|
||||||
};
|
};
|
||||||
@ -41,6 +46,9 @@ int __init s3c2440_init(void)
|
|||||||
{
|
{
|
||||||
printk("S3C2440: Initialising architecture\n");
|
printk("S3C2440: Initialising architecture\n");
|
||||||
|
|
||||||
|
s3c24xx_gpiocfg_default.set_pull = s3c_gpio_setpull_1up;
|
||||||
|
s3c24xx_gpiocfg_default.get_pull = s3c_gpio_getpull_1up;
|
||||||
|
|
||||||
/* change irq for watchdog */
|
/* change irq for watchdog */
|
||||||
|
|
||||||
s3c_device_wdt.resource[1].start = IRQ_S3C2440_WDT;
|
s3c_device_wdt.resource[1].start = IRQ_S3C2440_WDT;
|
||||||
|
@ -164,3 +164,35 @@ s3c_gpio_pull_t s3c_gpio_getpull_updown(struct s3c_gpio_chip *chip,
|
|||||||
return (__force s3c_gpio_pull_t)pup;
|
return (__force s3c_gpio_pull_t)pup;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_S3C_GPIO_PULL_UP
|
||||||
|
int s3c_gpio_setpull_1up(struct s3c_gpio_chip *chip,
|
||||||
|
unsigned int off, s3c_gpio_pull_t pull)
|
||||||
|
{
|
||||||
|
void __iomem *reg = chip->base + 0x08;
|
||||||
|
u32 pup = __raw_readl(reg);
|
||||||
|
|
||||||
|
pup = __raw_readl(reg);
|
||||||
|
|
||||||
|
if (pup == S3C_GPIO_PULL_UP)
|
||||||
|
pup &= ~(1 << off);
|
||||||
|
else if (pup == S3C_GPIO_PULL_NONE)
|
||||||
|
pup |= (1 << off);
|
||||||
|
else
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
__raw_writel(pup, reg);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
|
||||||
|
unsigned int off)
|
||||||
|
{
|
||||||
|
void __iomem *reg = chip->base + 0x08;
|
||||||
|
u32 pup = __raw_readl(reg);
|
||||||
|
|
||||||
|
pup &= (1 << off);
|
||||||
|
return pup ? S3C_GPIO_PULL_NONE : S3C_GPIO_PULL_UP;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_S3C_GPIO_PULL_UP */
|
||||||
|
|
||||||
|
@ -145,6 +145,17 @@ extern int s3c_gpio_setpull_updown(struct s3c_gpio_chip *chip,
|
|||||||
extern s3c_gpio_pull_t s3c_gpio_getpull_updown(struct s3c_gpio_chip *chip,
|
extern s3c_gpio_pull_t s3c_gpio_getpull_updown(struct s3c_gpio_chip *chip,
|
||||||
unsigned int off);
|
unsigned int off);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* s3c_gpio_getpull_1up() - Get configuration for choice of up or none
|
||||||
|
* @chip: The gpio chip that the GPIO pin belongs to
|
||||||
|
* @off: The offset to the pin to get the configuration of.
|
||||||
|
*
|
||||||
|
* This helper function reads the state of the pull-up resistor for the
|
||||||
|
* given GPIO in the same case as s3c_gpio_setpull_1up.
|
||||||
|
*/
|
||||||
|
extern s3c_gpio_pull_t s3c_gpio_getpull_1up(struct s3c_gpio_chip *chip,
|
||||||
|
unsigned int off);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* s3c_gpio_setpull_s3c2443() - Pull configuration for s3c2443.
|
* s3c_gpio_setpull_s3c2443() - Pull configuration for s3c2443.
|
||||||
* @chip: The gpio chip that is being configured.
|
* @chip: The gpio chip that is being configured.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user