Message ID | 1308319892-13057-1-git-send-email-dbaryshkov@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, Dmitry Eremin-Solenikov writes: > On StrongARM GPSR is write-only according to docs, so don't read from > it. Just set the required GPIO. > Anyway GPSR (and GPCR) is a bit oriented register that allows asserting individual bits without the need for read-modify-write cycles, making the access inherently multithread safe. Using read-modify-write on this register is contrary to the HW design. A quick grep of the kernel source shows another abuse like this in drivers/video/sa1100fb.c: GPSR |= SHANNON_GPIO_DISP_EN; drivers/video/sa1100fb.c: GPCR |= SHANNON_GPIO_DISP_EN; Lothar Waßmann
Would it be better to switch to use gpio_* API instead of manipulating GPxR directly? On Fri, Jun 17, 2011 at 10:11 PM, Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> wrote: > On StrongARM GPSR is write-only according to docs, so don't read from > it. Just set the required GPIO. > > Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> > --- > arch/arm/mach-sa1100/collie.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c > index f28025e..3f32ba2 100644 > --- a/arch/arm/mach-sa1100/collie.c > +++ b/arch/arm/mach-sa1100/collie.c > @@ -339,7 +339,7 @@ static void __init collie_init(void) > > PCFR = PCFR_OPDE; > > - GPSR |= _COLLIE_GPIO_UCB1x00_RESET; > + GPSR = _COLLIE_GPIO_UCB1x00_RESET; > > > platform_scoop_config = &collie_pcmcia_config; > -- > 1.7.5.3 > >
On 6/17/11, Eric Miao <eric.y.miao@gmail.com> wrote: > Would it be better to switch to use gpio_* API instead of manipulating > GPxR directly? Yes. Probably. But this would require a much bigger cleanup effort. Waiting for spare time for it. > On Fri, Jun 17, 2011 at 10:11 PM, Dmitry Eremin-Solenikov > <dbaryshkov@gmail.com> wrote: >> On StrongARM GPSR is write-only according to docs, so don't read from >> it. Just set the required GPIO. >> >> Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> >> --- >> arch/arm/mach-sa1100/collie.c | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c >> index f28025e..3f32ba2 100644 >> --- a/arch/arm/mach-sa1100/collie.c >> +++ b/arch/arm/mach-sa1100/collie.c >> @@ -339,7 +339,7 @@ static void __init collie_init(void) >> >> PCFR = PCFR_OPDE; >> >> - GPSR |= _COLLIE_GPIO_UCB1x00_RESET; >> + GPSR = _COLLIE_GPIO_UCB1x00_RESET; >> >> >> platform_scoop_config = &collie_pcmcia_config; >> -- >> 1.7.5.3 >> >> >
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index f28025e..3f32ba2 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c @@ -339,7 +339,7 @@ static void __init collie_init(void) PCFR = PCFR_OPDE; - GPSR |= _COLLIE_GPIO_UCB1x00_RESET; + GPSR = _COLLIE_GPIO_UCB1x00_RESET; platform_scoop_config = &collie_pcmcia_config;
On StrongARM GPSR is write-only according to docs, so don't read from it. Just set the required GPIO. Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> --- arch/arm/mach-sa1100/collie.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)