Kukjin Kim wrote: > > This patch fixes bug on gpio drive strength helper function. > > The offset should be like follwoing. > - off = chip->chip.base - pin; > + off = pin - chip->chip.base; > > In the s5p_gpio_get_drvstr(), > the second line is unnecessary, because overwrite drvstr. > drvstr = __raw_readl(reg); > - drvstr = 0xffff & (0x3 << shift); > > And need 2bit masking before return the drvstr value. > drvstr = drvstr >> shift; > + drvstr &= 0x3; > > In the s5p_gpio_set_drvstr(), need relevant bit clear. > tmp = __raw_readl(reg); > + tmp &= ~(0x3 << shift); > tmp |= drvstr << shift; > > Reported-by: Janghyuck Kim <janghyuck.kim@xxxxxxxxxxx> Sorry I confused, should be 'Reported-by: Jaecheol Lee <jc.lee@xxxxxxxxxxx>' > Signed-off-by: Kukjin Kim <kgene.kim@xxxxxxxxxxx> > --- > arch/arm/plat-samsung/gpio-config.c | 7 ++++--- > 1 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/arch/arm/plat-samsung/gpio-config.c b/arch/arm/plat-samsung/gpio- > config.c > index 57b68a5..e3d41ea 100644 > --- a/arch/arm/plat-samsung/gpio-config.c > +++ b/arch/arm/plat-samsung/gpio-config.c > @@ -273,13 +273,13 @@ s5p_gpio_drvstr_t s5p_gpio_get_drvstr(unsigned int pin) > if (!chip) > return -EINVAL; > > - off = chip->chip.base - pin; > + off = pin - chip->chip.base; > shift = off * 2; > reg = chip->base + 0x0C; > > drvstr = __raw_readl(reg); > - drvstr = 0xffff & (0x3 << shift); > drvstr = drvstr >> shift; > + drvstr &= 0x3; > > return (__force s5p_gpio_drvstr_t)drvstr; > } > @@ -296,11 +296,12 @@ int s5p_gpio_set_drvstr(unsigned int pin, > s5p_gpio_drvstr_t drvstr) > if (!chip) > return -EINVAL; > > - off = chip->chip.base - pin; > + off = pin - chip->chip.base; > shift = off * 2; > reg = chip->base + 0x0C; > > tmp = __raw_readl(reg); > + tmp &= ~(0x3 << shift); > tmp |= drvstr << shift; > > __raw_writel(tmp, reg); > -- > 1.6.2.5 Thanks. Best regards, Kgene. -- Kukjin Kim <kgene.kim@xxxxxxxxxxx>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html