Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: NSLU2 I2C patch



> I believe that the code in nslu2_iic.c is based on the incorrect assumption 
> that setting a bit in the GPIO output enable register configures the 
> corresponding pin as an output.
> 
> According to the IXP425 documentation from Intel, setting a bit in GPOER 
> configures the relevant pin as an input.

Hmm, I think you are right. I'll commit changes later if no one objects.

> @@ -134,13 +134,18 @@
>               reg = GPIO_CONF_READ_4(ixp425_softc, IXP425_GPIO_GPOUTR);
>               if ((reg & GPIO_I2C_SDA_BIT) == 0) {
>                       reg = GPIO_CONF_READ_4(ixp425_softc, IXP425_GPIO_GPOER);
> +                     reg &= ~GPIO_I2C_SDA_BIT;
> +                     GPIO_CONF_WRITE_4(ixp425_softc, IXP425_GPIO_GPOER, reg);
> +             } else {
> +                     /* SDA is high; disable SDA output */
> +                     reg = GPIO_CONF_READ_4(ixp425_softc, IXP425_GPIO_GPOER);
>                       reg |= GPIO_I2C_SDA_BIT;
>                       GPIO_CONF_WRITE_4(ixp425_softc, IXP425_GPIO_GPOER, reg);
>               }

BTW, is this else clause really needed?
I think the SDA direction is already input there.
---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index