ARM: pxa27x: fix ac97 controller warm reset code
Subsystems (3)
PATCH RESEND 1/1 ARM: pxa27x: fix ac97 controller warm reset code
This patch fixes some code that implements a work-around to a hardware bug in the ac97 controller on the pxa27x. A bug in the controller's warm reset functionality requires that the mfp used by the controller as the AC97_RESET_n line be temporarily reconfigured as a generic output gpio (AF0) and manually held high for the duration of the warm reset cycle. This is what was done in the original code, but it was broken long ago by commit fb1bf8cd13bfa7ed0364ab0d82f717fc020d35f6
([ARM] pxa: introduce processor specific pxa27x_assert_ac97reset()) which changed the mfp to a GPIO input instead of a high output.
--- arch/arm/mach-pxa/pxa27x.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
arch/arm/mach-pxa/pxa27x.c +2 -2
@@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void)EXPORT_SYMBOL (pxa27x_clear_otgph);static unsigned long ac97_reset_config[] = { -GPIO113_GPIO , +MFP_CFG_OUT (GPIO113 ,AF0 ,DRIVE_HIGH ), GPIO113_AC97_nRESET, -GPIO95_GPIO , +MFP_CFG_OUT (GPIO95 ,AF0 ,DRIVE_HIGH ), GPIO95_AC97_nRESET, };
--
1.7.8.6
PATCH RESEND 1/1 ARM: pxa27x: fix ac97 controller warm reset code
Quoted 9 lines · Mike Dunn
This patch fixes some code that implements a work-around to a hardware bug in the ac97 controller on the pxa27x. A bug in the controller's warm reset functionality requires that the mfp used by the controller as the
AC97_RESET_nline be temporarily reconfigured as a generic output gpio (AF0) and manually held high for the duration of the warm reset cycle. This is what was done in the original code, but it was broken long ago by commitfb1bf8cd13bfa7ed0364ab0d82f717fc020d35f6
([ARM] pxa: introduce processor specificpxa27x_assert_ac97reset()) which changed the mfp to a GPIO input instead of a high output.
Apparently, it is broken only on boards with no external pullups on these lines.
Quoted 11 lines
Signed-off-by Mike Dunn <[email protected]>--- arch/arm/mach-pxa/pxa27x.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)arch/arm/mach-pxa/pxa27x.c +0
-0
arch/arm/mach-pxa/pxa27x.c void pxa27x_clear_otgph(void) · line 52
Quoted 8 lines
arch/arm/mach-pxa/pxa27x.c +2
-2@@ -47,9 +47,9 @@ void pxa27x_clear_otgph(void)EXPORT_SYMBOL (pxa27x_clear_otgph);static unsigned long ac97_reset_config[] = { -GPIO113_GPIO , +MFP_CFG_OUT (GPIO113 ,AF0 ,DRIVE_HIGH ), GPIO113_AC97_nRESET, -GPIO95_GPIO , +MFP_CFG_OUT (GPIO95 ,AF0 ,DRIVE_HIGH ),
It was always discouraged to code the above directly. How about one of the below:
1)GPIO113_GPIO | MFP_PULL_HIGH,GPIO95_GPIO | MFP_PULL_HIGH,
or
2) introduce something like:GPIO113_AC97_nRESET_GPIO_HIGH GPIO95_AC97_nRESET_GPIO_HIGH
in the mfp-pxa27x.h file and use them in the structure above.
Quoted 12 lines
arch/arm/mach-pxa/pxa27x.c +0
-1GPIO95_AC97_nRESET, }; --1.7.8.6
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Signature · 2 lines
Regards, Igor.
PATCH RESEND 1/1 ARM: pxa27x: fix ac97 controller warm reset code
Quoted 1 line · Igor Grinberg
On 12/28/12 23:06, Mike Dunn wrote:
[..]
Quoted 9 lines
arch/arm/mach-pxa/pxa27x.c void pxa27x_clear_otgph(void) · line 52
Quoted 7 lines
static unsigned long ac97_reset_config[] = {
arch/arm/mach-pxa/pxa27x.c +2
-2-GPIO113_GPIO , +MFP_CFG_OUT (GPIO113 ,AF0 ,DRIVE_HIGH ), GPIO113_AC97_nRESET, - GPIO95_GPIO, + MFP_CFG_OUT(GPIO95, AF0, DRIVE_HIGH),It was always discouraged to code the above directly.
Had a funny feeling about that when I coded it... I should have heeded the feeling instead of being hasty.
Quoted 11 lines
How about one of the below:
1)GPIO113_GPIO|MFP_PULL_HIGH,GPIO95_GPIO|MFP_PULL_HIGH,or
2) introduce something like:
GPIO113_AC97_nRESET_GPIO_HIGHGPIO95_AC97_nRESET_GPIO_HIGH
in themfp-pxa27x.hfile and use them in the structure above.
OK, will implement your suggestion and resubmit. To me, your first option seems clearer to the casual reader.
Thanks Igor,
Mike
PATCH RESEND 1/1 ARM: pxa27x: fix ac97 controller warm reset code
Quoted 2 lines · Mike Dunn
Quoted 1 line · Igor Grinberg
On 12/28/12 23:06, Mike Dunn wrote:
[...]
Quoted 7 lines
Quoted 7 lines
How about one of the below:
1)GPIO113_GPIO|MFP_PULL_HIGH,GPIO95_GPIO|MFP_PULL_HIGH,or
Quoted 8 lines
Quoted 4 lines
2) introduce something like:
GPIO113_AC97_nRESET_GPIO_HIGHGPIO95_AC97_nRESET_GPIO_HIGH
in themfp-pxa27x.hfile and use them in the structure above.OK, will implement your suggestion and resubmit. To me, your first option seems clearer to the casual reader.
Actually, the second option is more robust, because you actually drive the pin.
Signature · 2 lines
Regards, Igor.