Lines Matching refs:host
52 static void cbus_send_bit(struct cbus_host *host, unsigned bit) in cbus_send_bit() argument
54 gpio_set_value(host->dat_gpio, bit ? 1 : 0); in cbus_send_bit()
55 gpio_set_value(host->clk_gpio, 1); in cbus_send_bit()
56 gpio_set_value(host->clk_gpio, 0); in cbus_send_bit()
65 static void cbus_send_data(struct cbus_host *host, unsigned data, unsigned len) in cbus_send_data() argument
70 cbus_send_bit(host, data & (1 << (i - 1))); in cbus_send_data()
77 static int cbus_receive_bit(struct cbus_host *host) in cbus_receive_bit() argument
81 gpio_set_value(host->clk_gpio, 1); in cbus_receive_bit()
82 ret = gpio_get_value(host->dat_gpio); in cbus_receive_bit()
83 gpio_set_value(host->clk_gpio, 0); in cbus_receive_bit()
91 static int cbus_receive_word(struct cbus_host *host) in cbus_receive_word() argument
97 int bit = cbus_receive_bit(host); in cbus_receive_word()
116 static int cbus_transfer(struct cbus_host *host, char rw, unsigned dev, in cbus_transfer() argument
123 spin_lock_irqsave(&host->lock, flags); in cbus_transfer()
126 gpio_set_value(host->sel_gpio, 0); in cbus_transfer()
129 gpio_direction_output(host->dat_gpio, 1); in cbus_transfer()
132 cbus_send_data(host, dev, CBUS_ADDR_BITS); in cbus_transfer()
135 cbus_send_bit(host, rw == I2C_SMBUS_READ); in cbus_transfer()
138 cbus_send_data(host, reg, CBUS_REG_BITS); in cbus_transfer()
141 cbus_send_data(host, data, 16); in cbus_transfer()
144 ret = gpio_direction_input(host->dat_gpio); in cbus_transfer()
146 dev_dbg(host->dev, "failed setting direction\n"); in cbus_transfer()
149 gpio_set_value(host->clk_gpio, 1); in cbus_transfer()
151 ret = cbus_receive_word(host); in cbus_transfer()
153 dev_dbg(host->dev, "failed receiving data\n"); in cbus_transfer()
159 gpio_set_value(host->sel_gpio, 1); in cbus_transfer()
160 gpio_set_value(host->clk_gpio, 1); in cbus_transfer()
161 gpio_set_value(host->clk_gpio, 0); in cbus_transfer()
164 spin_unlock_irqrestore(&host->lock, flags); in cbus_transfer()