Lines Matching refs:adap
52 struct i2c_adapter adap; member
73 static int uniphier_i2c_xfer_byte(struct i2c_adapter *adap, u32 txdata, in uniphier_i2c_xfer_byte() argument
76 struct uniphier_i2c_priv *priv = i2c_get_adapdata(adap); in uniphier_i2c_xfer_byte()
83 dev_dbg(&adap->dev, "write data: 0x%04x\n", txdata); in uniphier_i2c_xfer_byte()
86 time_left = wait_for_completion_timeout(&priv->comp, adap->timeout); in uniphier_i2c_xfer_byte()
88 dev_err(&adap->dev, "transaction timeout\n"); in uniphier_i2c_xfer_byte()
93 dev_dbg(&adap->dev, "read data: 0x%04x\n", rxdata); in uniphier_i2c_xfer_byte()
101 static int uniphier_i2c_send_byte(struct i2c_adapter *adap, u32 txdata) in uniphier_i2c_send_byte() argument
106 ret = uniphier_i2c_xfer_byte(adap, txdata, &rxdata); in uniphier_i2c_send_byte()
111 dev_dbg(&adap->dev, "arbitration lost\n"); in uniphier_i2c_send_byte()
115 dev_dbg(&adap->dev, "could not get ACK\n"); in uniphier_i2c_send_byte()
122 static int uniphier_i2c_tx(struct i2c_adapter *adap, u16 addr, u16 len, in uniphier_i2c_tx() argument
127 dev_dbg(&adap->dev, "start condition\n"); in uniphier_i2c_tx()
128 ret = uniphier_i2c_send_byte(adap, addr << 1 | in uniphier_i2c_tx()
135 ret = uniphier_i2c_send_byte(adap, in uniphier_i2c_tx()
144 static int uniphier_i2c_rx(struct i2c_adapter *adap, u16 addr, u16 len, in uniphier_i2c_rx() argument
149 dev_dbg(&adap->dev, "start condition\n"); in uniphier_i2c_rx()
150 ret = uniphier_i2c_send_byte(adap, addr << 1 | in uniphier_i2c_rx()
160 ret = uniphier_i2c_xfer_byte(adap, in uniphier_i2c_rx()
171 static int uniphier_i2c_stop(struct i2c_adapter *adap) in uniphier_i2c_stop() argument
173 dev_dbg(&adap->dev, "stop condition\n"); in uniphier_i2c_stop()
174 return uniphier_i2c_send_byte(adap, UNIPHIER_I2C_DTRM_STO | in uniphier_i2c_stop()
178 static int uniphier_i2c_master_xfer_one(struct i2c_adapter *adap, in uniphier_i2c_master_xfer_one() argument
185 dev_dbg(&adap->dev, "%s: addr=0x%02x, len=%d, stop=%d\n", in uniphier_i2c_master_xfer_one()
189 ret = uniphier_i2c_rx(adap, msg->addr, msg->len, msg->buf); in uniphier_i2c_master_xfer_one()
191 ret = uniphier_i2c_tx(adap, msg->addr, msg->len, msg->buf); in uniphier_i2c_master_xfer_one()
203 int ret2 = uniphier_i2c_stop(adap); in uniphier_i2c_master_xfer_one()
213 i2c_recover_bus(adap); in uniphier_i2c_master_xfer_one()
218 static int uniphier_i2c_check_bus_busy(struct i2c_adapter *adap) in uniphier_i2c_check_bus_busy() argument
220 struct uniphier_i2c_priv *priv = i2c_get_adapdata(adap); in uniphier_i2c_check_bus_busy()
229 i2c_recover_bus(adap); in uniphier_i2c_check_bus_busy()
240 static int uniphier_i2c_master_xfer(struct i2c_adapter *adap, in uniphier_i2c_master_xfer() argument
246 ret = uniphier_i2c_check_bus_busy(adap); in uniphier_i2c_master_xfer()
254 ret = uniphier_i2c_master_xfer_one(adap, msg, stop); in uniphier_i2c_master_xfer()
262 static u32 uniphier_i2c_functionality(struct i2c_adapter *adap) in uniphier_i2c_functionality() argument
280 static int uniphier_i2c_get_scl(struct i2c_adapter *adap) in uniphier_i2c_get_scl() argument
282 struct uniphier_i2c_priv *priv = i2c_get_adapdata(adap); in uniphier_i2c_get_scl()
288 static void uniphier_i2c_set_scl(struct i2c_adapter *adap, int val) in uniphier_i2c_set_scl() argument
290 struct uniphier_i2c_priv *priv = i2c_get_adapdata(adap); in uniphier_i2c_set_scl()
296 static int uniphier_i2c_get_sda(struct i2c_adapter *adap) in uniphier_i2c_get_sda() argument
298 struct uniphier_i2c_priv *priv = i2c_get_adapdata(adap); in uniphier_i2c_get_sda()
304 static void uniphier_i2c_unprepare_recovery(struct i2c_adapter *adap) in uniphier_i2c_unprepare_recovery() argument
306 uniphier_i2c_reset(i2c_get_adapdata(adap), false); in uniphier_i2c_unprepare_recovery()
385 priv->adap.owner = THIS_MODULE; in uniphier_i2c_probe()
386 priv->adap.algo = &uniphier_i2c_algo; in uniphier_i2c_probe()
387 priv->adap.dev.parent = dev; in uniphier_i2c_probe()
388 priv->adap.dev.of_node = dev->of_node; in uniphier_i2c_probe()
389 strlcpy(priv->adap.name, "UniPhier I2C", sizeof(priv->adap.name)); in uniphier_i2c_probe()
390 priv->adap.bus_recovery_info = &uniphier_i2c_bus_recovery_info; in uniphier_i2c_probe()
391 i2c_set_adapdata(&priv->adap, priv); in uniphier_i2c_probe()
403 ret = i2c_add_adapter(&priv->adap); in uniphier_i2c_probe()
415 i2c_del_adapter(&priv->adap); in uniphier_i2c_remove()