Lines Matching refs:ccsr_i2c
22 struct ls_i2c *ccsr_i2c = (void *)nxp_i2c_addr; in i2c_init() local
26 i2c_out(&ccsr_i2c->cr, I2C_CR_DIS); in i2c_init()
27 i2c_out(&ccsr_i2c->fd, I2C_FD_CONSERV); in i2c_init()
28 i2c_out(&ccsr_i2c->sr, I2C_SR_RST); in i2c_init()
29 i2c_out(&ccsr_i2c->cr, I2C_CR_EN); in i2c_init()
32 static int wait_for_state(struct ls_i2c *ccsr_i2c, in wait_for_state() argument
40 sr = i2c_in(&ccsr_i2c->sr); in wait_for_state()
42 i2c_out(&ccsr_i2c->sr, sr); in wait_for_state()
60 static int tx_byte(struct ls_i2c *ccsr_i2c, unsigned char c) in tx_byte() argument
64 i2c_out(&ccsr_i2c->sr, I2C_SR_IF); in tx_byte()
65 i2c_out(&ccsr_i2c->dr, c); in tx_byte()
66 ret = wait_for_state(ccsr_i2c, I2C_SR_IF, I2C_SR_IF); in tx_byte()
79 static int gen_stop(struct ls_i2c *ccsr_i2c) in gen_stop() argument
84 cr = i2c_in(&ccsr_i2c->cr); in gen_stop()
86 i2c_out(&ccsr_i2c->cr, cr); in gen_stop()
87 ret = wait_for_state(ccsr_i2c, I2C_SR_IDLE, I2C_SR_BB); in gen_stop()
94 static int i2c_write_addr(struct ls_i2c *ccsr_i2c, unsigned char chip, in i2c_write_addr() argument
105 if (i2c_in(&ccsr_i2c->ad) == (chip << 1)) { in i2c_write_addr()
109 i2c_out(&ccsr_i2c->sr, I2C_SR_IF); in i2c_write_addr()
110 ret = wait_for_state(ccsr_i2c, I2C_SR_IDLE, I2C_SR_BB); in i2c_write_addr()
115 cr = i2c_in(&ccsr_i2c->cr); in i2c_write_addr()
117 i2c_out(&ccsr_i2c->cr, cr); in i2c_write_addr()
118 ret = wait_for_state(ccsr_i2c, I2C_SR_BB, I2C_SR_BB); in i2c_write_addr()
125 i2c_out(&ccsr_i2c->cr, cr); in i2c_write_addr()
126 ret = tx_byte(ccsr_i2c, chip << 1); in i2c_write_addr()
128 gen_stop(ccsr_i2c); in i2c_write_addr()
134 ret = tx_byte(ccsr_i2c, (addr >> (alen << 3)) & 0xff); in i2c_write_addr()
136 gen_stop(ccsr_i2c); in i2c_write_addr()
144 static int read_data(struct ls_i2c *ccsr_i2c, unsigned char chip, in read_data() argument
151 cr = i2c_in(&ccsr_i2c->cr); in read_data()
156 i2c_out(&ccsr_i2c->cr, cr); in read_data()
157 i2c_out(&ccsr_i2c->sr, I2C_SR_IF); in read_data()
158 i2c_in(&ccsr_i2c->dr); /* dummy read */ in read_data()
160 ret = wait_for_state(ccsr_i2c, I2C_SR_IF, I2C_SR_IF); in read_data()
162 gen_stop(ccsr_i2c); in read_data()
166 gen_stop(ccsr_i2c); in read_data()
171 cr = i2c_in(&ccsr_i2c->cr); in read_data()
173 i2c_out(&ccsr_i2c->cr, cr); in read_data()
175 i2c_out(&ccsr_i2c->sr, I2C_SR_IF); in read_data()
176 buf[i] = i2c_in(&ccsr_i2c->dr); in read_data()
182 static int write_data(struct ls_i2c *ccsr_i2c, unsigned char chip, in write_data() argument
189 ret = tx_byte(ccsr_i2c, buf[i]); in write_data()
194 ret = gen_stop(ccsr_i2c); in write_data()
205 struct ls_i2c *ccsr_i2c = (void *)g_nxp_i2c_addr; in i2c_read() local
207 ret = i2c_write_addr(ccsr_i2c, chip, addr, alen); in i2c_read()
209 gen_stop(ccsr_i2c); in i2c_read()
213 cr = i2c_in(&ccsr_i2c->cr); in i2c_read()
215 i2c_out(&ccsr_i2c->cr, cr); in i2c_read()
217 ret = tx_byte(ccsr_i2c, (chip << 1) | 1); in i2c_read()
219 gen_stop(ccsr_i2c); in i2c_read()
223 return read_data(ccsr_i2c, chip, buf, len); in i2c_read()
230 struct ls_i2c *ccsr_i2c = (void *)g_nxp_i2c_addr; in i2c_write() local
232 ret = i2c_write_addr(ccsr_i2c, chip, addr, alen); in i2c_write()
237 return write_data(ccsr_i2c, chip, buf, len); in i2c_write()
243 struct ls_i2c *ccsr_i2c = (void *)g_nxp_i2c_addr; in i2c_probe_chip() local
245 ret = i2c_write_addr(ccsr_i2c, chip, 0, 0); in i2c_probe_chip()
251 ret = gen_stop(ccsr_i2c); in i2c_probe_chip()