static int bit_s3via_getsda(void *bus) { struct s_i2c_bus *p = (struct s_i2c_bus *)bus; SET_CR_IX(p, p->i2c_reg); return (0 != (GET_CR_DATA(p) & I2C_SDA_IN)); }
static int prosavage_gpio_getsda(void* data) { struct savagefb_i2c_chan *chan = data; SET_CR_IX(chan->ioaddr, chan->reg); return (0 != (GET_CR_DATA(chan->ioaddr) & PROSAVAGE_I2C_SDA_IN)); }
static void prosavage_gpio_setscl(void* data, int val) { struct savagefb_i2c_chan *chan = data; u32 r; SET_CR_IX(chan->ioaddr, chan->reg); r = GET_CR_DATA(chan->ioaddr); r |= PROSAVAGE_I2C_ENAB; if (val) { r |= PROSAVAGE_I2C_SCL_OUT; } else { r &= ~PROSAVAGE_I2C_SCL_OUT; } SET_CR_DATA(chan->ioaddr, r); }
static void bit_s3via_setsda(void *bus, int val) { struct s_i2c_bus *p = (struct s_i2c_bus *)bus; unsigned int r; SET_CR_IX(p, p->i2c_reg); r = GET_CR_DATA(p); r |= I2C_ENAB; if (val) { r |= I2C_SDA_OUT; } else { r &= ~I2C_SDA_OUT; } SET_CR_DATA(p, r); }