Lines Matching refs:i2c
65 static TEE_Result atmel_i2c_send_one_byte(struct atmel_i2c *i2c, uint8_t byte) in atmel_i2c_send_one_byte() argument
69 io_write32(i2c->base + TWIHS_THR, byte); in atmel_i2c_send_one_byte()
72 sr = io_read32(i2c->base + TWIHS_SR); in atmel_i2c_send_one_byte()
84 static void atmel_i2c_wait_txcomp(struct atmel_i2c *i2c) in atmel_i2c_wait_txcomp() argument
89 sr = io_read32(i2c->base + TWIHS_SR); in atmel_i2c_wait_txcomp()
95 static void atmel_i2c_send_start(struct atmel_i2c *i2c) in atmel_i2c_send_start() argument
97 io_write32(i2c->base + TWIHS_CR, TWIHS_CR_START); in atmel_i2c_send_start()
100 static void atmel_i2c_send_stop(struct atmel_i2c *i2c) in atmel_i2c_send_stop() argument
102 io_write32(i2c->base + TWIHS_CR, TWIHS_CR_STOP); in atmel_i2c_send_stop()
110 struct atmel_i2c *i2c = atmel_i2c_from_i2c_ctrl(i2c_dev->ctrl); in atmel_i2c_write_data_no_stop() local
113 io_write32(i2c->base + TWIHS_MMR, mmr); in atmel_i2c_write_data_no_stop()
116 res = atmel_i2c_send_one_byte(i2c, buf[i]); in atmel_i2c_write_data_no_stop()
128 struct atmel_i2c *i2c = atmel_i2c_from_i2c_ctrl(i2c_dev->ctrl); in atmel_i2c_write_data() local
134 atmel_i2c_send_stop(i2c); in atmel_i2c_write_data()
135 atmel_i2c_wait_txcomp(i2c); in atmel_i2c_write_data()
140 static TEE_Result atmel_i2c_recv_one_byte(struct atmel_i2c *i2c, in atmel_i2c_recv_one_byte() argument
146 sr = io_read32(i2c->base + TWIHS_SR); in atmel_i2c_recv_one_byte()
155 *byte = io_read32(i2c->base + TWIHS_RHR); in atmel_i2c_recv_one_byte()
165 struct atmel_i2c *i2c = atmel_i2c_from_i2c_ctrl(i2c_dev->ctrl); in atmel_i2c_read_data() local
169 io_write32(i2c->base + TWIHS_MMR, mmr); in atmel_i2c_read_data()
171 atmel_i2c_send_start(i2c); in atmel_i2c_read_data()
175 atmel_i2c_send_stop(i2c); in atmel_i2c_read_data()
177 res = atmel_i2c_recv_one_byte(i2c, &buf[i]); in atmel_i2c_read_data()
182 atmel_i2c_wait_txcomp(i2c); in atmel_i2c_read_data()
215 static TEE_Result atmel_i2c_init_clk(struct atmel_i2c *i2c) in atmel_i2c_init_clk() argument
222 unsigned long clk = clk_get_rate(i2c->clk); in atmel_i2c_init_clk()
240 if (i2c->sda_hold_time) { in atmel_i2c_init_clk()
242 hold = UDIV_ROUND_NEAREST(i2c->sda_hold_time * clk, 1000000000); in atmel_i2c_init_clk()
256 io_write32(i2c->base + TWIHS_CWGR, cwgr); in atmel_i2c_init_clk()
261 static TEE_Result atmel_i2c_init_hw(struct atmel_i2c *i2c) in atmel_i2c_init_hw() argument
264 io_write32(i2c->base + TWIHS_WPMR, TWIHS_WPMR_WPKEY); in atmel_i2c_init_hw()
267 io_write32(i2c->base + TWIHS_CR, TWIHS_CR_SWRST); in atmel_i2c_init_hw()
269 io_write32(i2c->base + TWIHS_CR, TWIHS_CR_SVDIS); in atmel_i2c_init_hw()
270 io_write32(i2c->base + TWIHS_CR, TWIHS_CR_MSEN); in atmel_i2c_init_hw()
272 return atmel_i2c_init_clk(i2c); in atmel_i2c_init_hw()