|
@@ -45,8 +45,10 @@ static void i810i2c_setscl(void *data, int state)
|
|
|
struct i810fb_par *par = chan->par;
|
|
|
u8 __iomem *mmio = par->mmio_start_virtual;
|
|
|
|
|
|
- i810_writel(mmio, chan->ddc_base, (state ? SCL_VAL_OUT : 0) | SCL_DIR |
|
|
|
- SCL_DIR_MASK | SCL_VAL_MASK);
|
|
|
+ if (state)
|
|
|
+ i810_writel(mmio, chan->ddc_base, SCL_DIR_MASK | SCL_VAL_MASK);
|
|
|
+ else
|
|
|
+ i810_writel(mmio, chan->ddc_base, SCL_DIR | SCL_DIR_MASK | SCL_VAL_MASK);
|
|
|
i810_readl(mmio, chan->ddc_base); /* flush posted write */
|
|
|
}
|
|
|
|
|
@@ -56,8 +58,10 @@ static void i810i2c_setsda(void *data, int state)
|
|
|
struct i810fb_par *par = chan->par;
|
|
|
u8 __iomem *mmio = par->mmio_start_virtual;
|
|
|
|
|
|
- i810_writel(mmio, chan->ddc_base, (state ? SDA_VAL_OUT : 0) | SDA_DIR |
|
|
|
- SDA_DIR_MASK | SDA_VAL_MASK);
|
|
|
+ if (state)
|
|
|
+ i810_writel(mmio, chan->ddc_base, SDA_DIR_MASK | SDA_VAL_MASK);
|
|
|
+ else
|
|
|
+ i810_writel(mmio, chan->ddc_base, SDA_DIR | SDA_DIR_MASK | SDA_VAL_MASK);
|
|
|
i810_readl(mmio, chan->ddc_base); /* flush posted write */
|
|
|
}
|
|
|
|