Lines Matching refs:dev

70 static inline u16 hpi_read_reg(struct c67x00_device *dev, int reg)  in hpi_read_reg()  argument
73 return __raw_readw(dev->hpi.base + reg * dev->hpi.regstep); in hpi_read_reg()
76 static inline void hpi_write_reg(struct c67x00_device *dev, int reg, u16 value) in hpi_write_reg() argument
79 __raw_writew(value, dev->hpi.base + reg * dev->hpi.regstep); in hpi_write_reg()
82 static inline u16 hpi_read_word_nolock(struct c67x00_device *dev, u16 reg) in hpi_read_word_nolock() argument
84 hpi_write_reg(dev, HPI_ADDR, reg); in hpi_read_word_nolock()
85 return hpi_read_reg(dev, HPI_DATA); in hpi_read_word_nolock()
88 static u16 hpi_read_word(struct c67x00_device *dev, u16 reg) in hpi_read_word() argument
93 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_read_word()
94 value = hpi_read_word_nolock(dev, reg); in hpi_read_word()
95 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_read_word()
100 static void hpi_write_word_nolock(struct c67x00_device *dev, u16 reg, u16 value) in hpi_write_word_nolock() argument
102 hpi_write_reg(dev, HPI_ADDR, reg); in hpi_write_word_nolock()
103 hpi_write_reg(dev, HPI_DATA, value); in hpi_write_word_nolock()
106 static void hpi_write_word(struct c67x00_device *dev, u16 reg, u16 value) in hpi_write_word() argument
110 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_write_word()
111 hpi_write_word_nolock(dev, reg, value); in hpi_write_word()
112 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_write_word()
118 static void hpi_write_words_le16(struct c67x00_device *dev, u16 addr, in hpi_write_words_le16() argument
124 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_write_words_le16()
126 hpi_write_reg(dev, HPI_ADDR, addr); in hpi_write_words_le16()
128 hpi_write_reg(dev, HPI_DATA, le16_to_cpu(*data++)); in hpi_write_words_le16()
130 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_write_words_le16()
136 static void hpi_read_words_le16(struct c67x00_device *dev, u16 addr, in hpi_read_words_le16() argument
142 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_read_words_le16()
143 hpi_write_reg(dev, HPI_ADDR, addr); in hpi_read_words_le16()
145 *data++ = cpu_to_le16(hpi_read_reg(dev, HPI_DATA)); in hpi_read_words_le16()
147 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_read_words_le16()
150 static void hpi_set_bits(struct c67x00_device *dev, u16 reg, u16 mask) in hpi_set_bits() argument
155 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_set_bits()
156 value = hpi_read_word_nolock(dev, reg); in hpi_set_bits()
157 hpi_write_word_nolock(dev, reg, value | mask); in hpi_set_bits()
158 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_set_bits()
161 static void hpi_clear_bits(struct c67x00_device *dev, u16 reg, u16 mask) in hpi_clear_bits() argument
166 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_clear_bits()
167 value = hpi_read_word_nolock(dev, reg); in hpi_clear_bits()
168 hpi_write_word_nolock(dev, reg, value & ~mask); in hpi_clear_bits()
169 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_clear_bits()
172 static u16 hpi_recv_mbox(struct c67x00_device *dev) in hpi_recv_mbox() argument
177 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_recv_mbox()
178 value = hpi_read_reg(dev, HPI_MAILBOX); in hpi_recv_mbox()
179 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_recv_mbox()
184 static u16 hpi_send_mbox(struct c67x00_device *dev, u16 value) in hpi_send_mbox() argument
188 spin_lock_irqsave(&dev->hpi.lock, flags); in hpi_send_mbox()
189 hpi_write_reg(dev, HPI_MAILBOX, value); in hpi_send_mbox()
190 spin_unlock_irqrestore(&dev->hpi.lock, flags); in hpi_send_mbox()
195 u16 c67x00_ll_hpi_status(struct c67x00_device *dev) in c67x00_ll_hpi_status() argument
200 spin_lock_irqsave(&dev->hpi.lock, flags); in c67x00_ll_hpi_status()
201 value = hpi_read_reg(dev, HPI_STATUS); in c67x00_ll_hpi_status()
202 spin_unlock_irqrestore(&dev->hpi.lock, flags); in c67x00_ll_hpi_status()
207 void c67x00_ll_hpi_reg_init(struct c67x00_device *dev) in c67x00_ll_hpi_reg_init() argument
211 hpi_recv_mbox(dev); in c67x00_ll_hpi_reg_init()
212 c67x00_ll_hpi_status(dev); in c67x00_ll_hpi_reg_init()
213 hpi_write_word(dev, HPI_IRQ_ROUTING_REG, 0); in c67x00_ll_hpi_reg_init()
216 hpi_write_word(dev, SIEMSG_REG(i), 0); in c67x00_ll_hpi_reg_init()
217 hpi_read_word(dev, SIEMSG_REG(i)); in c67x00_ll_hpi_reg_init()
223 hpi_set_bits(sie->dev, HPI_IRQ_ROUTING_REG, in c67x00_ll_hpi_enable_sofeop()
229 hpi_clear_bits(sie->dev, HPI_IRQ_ROUTING_REG, in c67x00_ll_hpi_disable_sofeop()
236 static inline int ll_recv_msg(struct c67x00_device *dev) in ll_recv_msg() argument
240 res = wait_for_completion_timeout(&dev->hpi.lcp.msg_received, 5 * HZ); in ll_recv_msg()
249 u16 c67x00_ll_fetch_siemsg(struct c67x00_device *dev, int sie_num) in c67x00_ll_fetch_siemsg() argument
253 val = hpi_read_word(dev, SIEMSG_REG(sie_num)); in c67x00_ll_fetch_siemsg()
255 hpi_write_word(dev, SIEMSG_REG(sie_num), 0); in c67x00_ll_fetch_siemsg()
262 return hpi_read_word(sie->dev, USB_CTL_REG(sie->sie_num)); in c67x00_ll_get_usb_ctl()
270 hpi_write_word(sie->dev, USB_STAT_REG(sie->sie_num), bits); in c67x00_ll_usb_clear_status()
275 return hpi_read_word(sie->dev, USB_STAT_REG(sie->sie_num)); in c67x00_ll_usb_get_status()
280 static int c67x00_comm_exec_int(struct c67x00_device *dev, u16 nr, in c67x00_comm_exec_int() argument
285 mutex_lock(&dev->hpi.lcp.mutex); in c67x00_comm_exec_int()
286 hpi_write_word(dev, COMM_INT_NUM, nr); in c67x00_comm_exec_int()
288 hpi_write_word(dev, COMM_R(i), data->regs[i]); in c67x00_comm_exec_int()
289 hpi_send_mbox(dev, COMM_EXEC_INT); in c67x00_comm_exec_int()
290 rc = ll_recv_msg(dev); in c67x00_comm_exec_int()
291 mutex_unlock(&dev->hpi.lcp.mutex); in c67x00_comm_exec_int()
299 void c67x00_ll_set_husb_eot(struct c67x00_device *dev, u16 value) in c67x00_ll_set_husb_eot() argument
301 mutex_lock(&dev->hpi.lcp.mutex); in c67x00_ll_set_husb_eot()
302 hpi_write_word(dev, HUSB_pEOT, value); in c67x00_ll_set_husb_eot()
303 mutex_unlock(&dev->hpi.lcp.mutex); in c67x00_ll_set_husb_eot()
308 struct c67x00_device *dev = sie->dev; in c67x00_ll_husb_sie_init() local
312 rc = c67x00_comm_exec_int(dev, HUSB_SIE_INIT_INT(sie->sie_num), &data); in c67x00_ll_husb_sie_init()
318 struct c67x00_device *dev = sie->dev; in c67x00_ll_husb_reset() local
324 rc = c67x00_comm_exec_int(dev, HUSB_RESET_INT, &data); in c67x00_ll_husb_reset()
330 hpi_write_word(sie->dev, HUSB_SIE_pCurrentTDPtr(sie->sie_num), addr); in c67x00_ll_husb_set_current_td()
335 return hpi_read_word(sie->dev, HUSB_SIE_pCurrentTDPtr(sie->sie_num)); in c67x00_ll_husb_get_current_td()
340 return hpi_read_word(sie->dev, HOST_FRAME_REG(sie->sie_num)); in c67x00_ll_husb_get_frame()
346 hpi_set_bits(sie->dev, USB_CTL_REG(sie->sie_num), HOST_MODE); in c67x00_ll_husb_init_host_port()
351 if (!(hpi_read_word(sie->dev, USB_CTL_REG(sie->sie_num)) & HOST_MODE)) in c67x00_ll_husb_init_host_port()
362 hpi_set_bits(sie->dev, HPI_IRQ_ROUTING_REG, in c67x00_ll_husb_reset_port()
364 hpi_set_bits(sie->dev, HOST_IRQ_EN_REG(sie->sie_num), in c67x00_ll_husb_reset_port()
368 hpi_set_bits(sie->dev, USB_CTL_REG(sie->sie_num), PORT_RES_EN(port)); in c67x00_ll_husb_reset_port()
373 void c67x00_ll_irq(struct c67x00_device *dev, u16 int_status) in c67x00_ll_irq() argument
378 dev->hpi.lcp.last_msg = hpi_recv_mbox(dev); in c67x00_ll_irq()
379 complete(&dev->hpi.lcp.msg_received); in c67x00_ll_irq()
384 int c67x00_ll_reset(struct c67x00_device *dev) in c67x00_ll_reset() argument
388 mutex_lock(&dev->hpi.lcp.mutex); in c67x00_ll_reset()
389 hpi_send_mbox(dev, COMM_RESET); in c67x00_ll_reset()
390 rc = ll_recv_msg(dev); in c67x00_ll_reset()
391 mutex_unlock(&dev->hpi.lcp.mutex); in c67x00_ll_reset()
402 void c67x00_ll_write_mem_le16(struct c67x00_device *dev, u16 addr, in c67x00_ll_write_mem_le16() argument
409 dev_err(&dev->pdev->dev, in c67x00_ll_write_mem_le16()
417 tmp = hpi_read_word(dev, addr - 1); in c67x00_ll_write_mem_le16()
419 hpi_write_word(dev, addr - 1, tmp); in c67x00_ll_write_mem_le16()
424 hpi_write_words_le16(dev, addr, (__le16 *)buf, len / 2); in c67x00_ll_write_mem_le16()
431 tmp = hpi_read_word(dev, addr); in c67x00_ll_write_mem_le16()
433 hpi_write_word(dev, addr, tmp); in c67x00_ll_write_mem_le16()
441 void c67x00_ll_read_mem_le16(struct c67x00_device *dev, u16 addr, in c67x00_ll_read_mem_le16() argument
449 tmp = hpi_read_word(dev, addr - 1); in c67x00_ll_read_mem_le16()
455 hpi_read_words_le16(dev, addr, (__le16 *)buf, len / 2); in c67x00_ll_read_mem_le16()
462 tmp = hpi_read_word(dev, addr); in c67x00_ll_read_mem_le16()
469 void c67x00_ll_init(struct c67x00_device *dev) in c67x00_ll_init() argument
471 mutex_init(&dev->hpi.lcp.mutex); in c67x00_ll_init()
472 init_completion(&dev->hpi.lcp.msg_received); in c67x00_ll_init()
475 void c67x00_ll_release(struct c67x00_device *dev) in c67x00_ll_release() argument