powerpc: Add support for PORTA and PORTB odr registers
PATCH 1/1 powerpc: Add support for PORTA and PORTB odr registers
PORTA and PORTB have odr registers, as well. However, the PORTB odr register is only 16bit.
Signed-off-by Jochen Friedrich <[email protected]>
--- arch/powerpc/sysdev/commproc.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-)
arch/powerpc/sysdev/commproc.c +16 -3
@@ -411,7 +411,7 @@ EXPORT_SYMBOL(cpm_dpram_phys);#endif /* !CONFIG_PPC_CPM_NEW_BINDING */ struct cpm_ioport16 { -__be16 dir, par, sor, dat, intr; +__be16 dir, par, odr_sor, dat, intr;__be16 res[3 ]; };
@@ -441,6 +441,13 @@ static void cpm1_set_pin32(int port, int pin, int flags)else clrbits32 (&iop->par, pin); +if (port ==CPM_PORTB ) { +if (flags &CPM_PIN_OPENDRAIN ) +setbits16 (&mpc8xx_immr->im_cpm.cp_pbodr, pin); +else +clrbits16 (&mpc8xx_immr->im_cpm.cp_pbodr, pin); + } +if (port ==CPM_PORTE ) {if (flags &CPM_PIN_SECONDARY )setbits32 (&iop->sor, pin);
@@ -474,11 +481,17 @@ static void cpm1_set_pin16(int port, int pin, int flags)else clrbits16 (&iop->par, pin); +if (port ==CPM_PORTA ) { +if (flags &CPM_PIN_OPENDRAIN ) +setbits16 (&iop->odr_sor, pin); +else +clrbits16 (&iop->odr_sor, pin); + }if (port ==CPM_PORTC ) {if (flags &CPM_PIN_SECONDARY ) -setbits16 (&iop->sor, pin); +setbits16 (&iop->odr_sor, pin);else -clrbits16 (&iop->sor, pin); +clrbits16 (&iop->odr_sor, pin); } }
Signature · 1 line
1.5.3.4
Quoted 4 lines · Jochen Friedrich
PORTA and PORTB have odr registers, as well. However, the PORTB odr register is only 16bit.
Signed-off-by Jochen Friedrich <[email protected]>
Acked-by Scott Wood <[email protected]>
BTW, you may want to send the patches to linuxppc-dev rather than linuxppc-embedded... Despite what MAINTAINERS says, the former is where most patches get posted.
-Scott