Lines Matching refs:r8a66597

70 static void set_devadd(struct r8a66597 *r8a66597, u8 r8a66597_address,  in set_devadd()  argument
77 usbspd = r8a66597->speed; in set_devadd()
79 r8a66597_write(r8a66597, val, devadd_reg); in set_devadd()
82 static int r8a66597_clock_enable(struct r8a66597 *r8a66597) in r8a66597_clock_enable() argument
88 r8a66597_write(r8a66597, USBE, SYSCFG0); in r8a66597_clock_enable()
89 tmp = r8a66597_read(r8a66597, SYSCFG0); in r8a66597_clock_enable()
95 r8a66597_bclr(r8a66597, USBE, SYSCFG0); in r8a66597_clock_enable()
107 r8a66597_bset(r8a66597, SUSPM, SUSPMODE0); in r8a66597_clock_enable()
112 static void r8a66597_clock_disable(struct r8a66597 *r8a66597) in r8a66597_clock_disable() argument
114 r8a66597_bclr(r8a66597, SUSPM, SUSPMODE0); in r8a66597_clock_disable()
118 r8a66597_bclr(r8a66597, USBE, SYSCFG0); in r8a66597_clock_disable()
122 static void r8a66597_enable_port(struct r8a66597 *r8a66597, int port) in r8a66597_enable_port() argument
127 r8a66597_bset(r8a66597, val, get_syscfg_reg(port)); in r8a66597_enable_port()
128 r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port)); in r8a66597_enable_port()
131 static void r8a66597_disable_port(struct r8a66597 *r8a66597, int port) in r8a66597_disable_port() argument
135 r8a66597_write(r8a66597, 0, get_intenb_reg(port)); in r8a66597_disable_port()
136 r8a66597_write(r8a66597, 0, get_intsts_reg(port)); in r8a66597_disable_port()
138 r8a66597_port_power(r8a66597, port, 0); in r8a66597_disable_port()
141 tmp = r8a66597_read(r8a66597, SOFCFG) & EDGESTS; in r8a66597_disable_port()
146 r8a66597_bclr(r8a66597, val, get_syscfg_reg(port)); in r8a66597_disable_port()
147 r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port)); in r8a66597_disable_port()
150 static int enable_controller(struct r8a66597 *r8a66597) in enable_controller() argument
154 ret = r8a66597_clock_enable(r8a66597); in enable_controller()
158 r8a66597_bset(r8a66597, USBE, SYSCFG0); in enable_controller()
160 r8a66597_bset(r8a66597, INTL, SOFCFG); in enable_controller()
161 r8a66597_write(r8a66597, 0, INTENB0); in enable_controller()
163 r8a66597_write(r8a66597, 0, get_intenb_reg(port)); in enable_controller()
165 r8a66597_bclr(r8a66597, BIGEND, CFIFOSEL); in enable_controller()
166 r8a66597_bclr(r8a66597, BIGEND, D0FIFOSEL); in enable_controller()
167 r8a66597_bclr(r8a66597, BIGEND, D1FIFOSEL); in enable_controller()
168 r8a66597_bset(r8a66597, TRNENSEL, SOFCFG); in enable_controller()
171 r8a66597_enable_port(r8a66597, port); in enable_controller()
176 static void disable_controller(struct r8a66597 *r8a66597) in disable_controller() argument
180 if (!(r8a66597_read(r8a66597, SYSCFG0) & USBE)) in disable_controller()
183 r8a66597_write(r8a66597, 0, INTENB0); in disable_controller()
184 r8a66597_write(r8a66597, 0, INTSTS0); in disable_controller()
186 r8a66597_write(r8a66597, 0, D0FIFOSEL); in disable_controller()
187 r8a66597_write(r8a66597, 0, D1FIFOSEL); in disable_controller()
188 r8a66597_write(r8a66597, 0, DCPCFG); in disable_controller()
189 r8a66597_write(r8a66597, 0x40, DCPMAXP); in disable_controller()
190 r8a66597_write(r8a66597, 0, DCPCTR); in disable_controller()
193 r8a66597_write(r8a66597, 0, get_devadd_addr(i)); in disable_controller()
195 r8a66597_write(r8a66597, 0, get_pipetre_addr(i)); in disable_controller()
196 r8a66597_write(r8a66597, 0, get_pipetrn_addr(i)); in disable_controller()
199 r8a66597_write(r8a66597, 0, get_pipectr_addr(i)); in disable_controller()
200 r8a66597_write(r8a66597, i, PIPESEL); in disable_controller()
201 r8a66597_write(r8a66597, 0, PIPECFG); in disable_controller()
202 r8a66597_write(r8a66597, 0, PIPEBUF); in disable_controller()
203 r8a66597_write(r8a66597, 0, PIPEMAXP); in disable_controller()
204 r8a66597_write(r8a66597, 0, PIPEPERI); in disable_controller()
208 r8a66597_disable_port(r8a66597, i); in disable_controller()
210 r8a66597_clock_disable(r8a66597); in disable_controller()
213 static void r8a66597_reg_wait(struct r8a66597 *r8a66597, unsigned long reg, in r8a66597_reg_wait() argument
220 tmp = r8a66597_read(r8a66597, reg); in r8a66597_reg_wait()
228 static void pipe_buffer_setting(struct r8a66597 *r8a66597, in pipe_buffer_setting() argument
244 if (r8a66597->pipe_config & (1 << pipenum)) in pipe_buffer_setting()
246 r8a66597->pipe_config |= (1 << pipenum); in pipe_buffer_setting()
248 r8a66597_bset(r8a66597, ACLRM, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
249 r8a66597_bclr(r8a66597, ACLRM, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
250 r8a66597_write(r8a66597, pipenum, PIPESEL); in pipe_buffer_setting()
258 r8a66597_write(r8a66597, val, PIPECFG); in pipe_buffer_setting()
260 r8a66597_write(r8a66597, (8 << 10) | bufnum, PIPEBUF); in pipe_buffer_setting()
261 r8a66597_write(r8a66597, make_devsel(usb_pipedevice(pipe)) | in pipe_buffer_setting()
263 r8a66597_write(r8a66597, 0, PIPEPERI); in pipe_buffer_setting()
264 r8a66597_write(r8a66597, SQCLR, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
267 static int send_setup_packet(struct r8a66597 *r8a66597, struct usb_device *dev, in send_setup_packet() argument
278 r8a66597_write(r8a66597, make_devsel(devsel) | in send_setup_packet()
280 r8a66597_write(r8a66597, ~(SIGN | SACK), INTSTS1); in send_setup_packet()
282 dcpctr = r8a66597_read(r8a66597, DCPCTR); in send_setup_packet()
284 if (readw_poll_timeout(r8a66597->reg + DCPCTR, dcpctr, in send_setup_packet()
292 r8a66597_write(r8a66597, le16_to_cpu(p[i]), setup_addr); in send_setup_packet()
295 r8a66597_write(r8a66597, ~0x0001, BRDYSTS); in send_setup_packet()
296 r8a66597_write(r8a66597, SUREQ, DCPCTR); in send_setup_packet()
299 intsts1 = r8a66597_read(r8a66597, INTSTS1); in send_setup_packet()
316 static int send_bulk_packet(struct r8a66597 *r8a66597, struct usb_device *dev, in send_bulk_packet() argument
325 r8a66597_mdfy(r8a66597, MBW | BULK_OUT_PIPENUM, in send_bulk_packet()
327 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, BULK_OUT_PIPENUM); in send_bulk_packet()
328 tmp = r8a66597_read(r8a66597, CFIFOCTR); in send_bulk_packet()
340 r8a66597_write(r8a66597, ~(1 << BULK_OUT_PIPENUM), BEMPSTS); in send_bulk_packet()
342 r8a66597_write_fifo(r8a66597, CFIFO, buf, size); in send_bulk_packet()
343 r8a66597_write(r8a66597, BVAL, CFIFOCTR); in send_bulk_packet()
349 r8a66597_mdfy(r8a66597, PID_BUF, PID, in send_bulk_packet()
352 while (!(r8a66597_read(r8a66597, BEMPSTS) & (1 << BULK_OUT_PIPENUM))) in send_bulk_packet()
355 r8a66597_write(r8a66597, ~(1 << BULK_OUT_PIPENUM), BEMPSTS); in send_bulk_packet()
358 r8a66597_mdfy(r8a66597, PID_NAK, PID, in send_bulk_packet()
364 static int receive_bulk_packet(struct r8a66597 *r8a66597, in receive_bulk_packet() argument
379 r8a66597_mdfy(r8a66597, PID_NAK, PID, in receive_bulk_packet()
381 r8a66597_write(r8a66597, ~(1 << pipenum), BRDYSTS); in receive_bulk_packet()
383 r8a66597_write(r8a66597, TRCLR, get_pipetre_addr(pipenum)); in receive_bulk_packet()
384 r8a66597_write(r8a66597, in receive_bulk_packet()
387 r8a66597_bset(r8a66597, TRENB, get_pipetre_addr(pipenum)); in receive_bulk_packet()
389 r8a66597_mdfy(r8a66597, PID_BUF, PID, in receive_bulk_packet()
393 r8a66597_mdfy(r8a66597, MBW | pipenum, MBW | CURPIPE, CFIFOSEL); in receive_bulk_packet()
394 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, pipenum); in receive_bulk_packet()
396 while (!(r8a66597_read(r8a66597, BRDYSTS) & (1 << pipenum))) in receive_bulk_packet()
399 r8a66597_write(r8a66597, ~(1 << pipenum), BRDYSTS); in receive_bulk_packet()
401 tmp = r8a66597_read(r8a66597, CFIFOCTR); in receive_bulk_packet()
413 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in receive_bulk_packet()
415 r8a66597_read_fifo(r8a66597, CFIFO, buf, rcv_len); in receive_bulk_packet()
421 static int receive_control_packet(struct r8a66597 *r8a66597, in receive_control_packet() argument
430 r8a66597_bclr(r8a66597, R8A66597_DIR, DCPCFG); in receive_control_packet()
431 r8a66597_mdfy(r8a66597, 0, ISEL | CURPIPE, CFIFOSEL); in receive_control_packet()
432 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in receive_control_packet()
433 r8a66597_bset(r8a66597, SQSET, DCPCTR); in receive_control_packet()
434 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in receive_control_packet()
435 r8a66597_mdfy(r8a66597, PID_BUF, PID, DCPCTR); in receive_control_packet()
437 while (!(r8a66597_read(r8a66597, BRDYSTS) & 0x0001)) in receive_control_packet()
440 r8a66597_write(r8a66597, ~0x0001, BRDYSTS); in receive_control_packet()
442 r8a66597_mdfy(r8a66597, MBW, MBW | CURPIPE, CFIFOSEL); in receive_control_packet()
443 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in receive_control_packet()
445 tmp = r8a66597_read(r8a66597, CFIFOCTR); in receive_control_packet()
454 r8a66597_mdfy(r8a66597, PID_NAK, PID, DCPCTR); in receive_control_packet()
458 r8a66597_write(r8a66597, BCLR, DCPCTR); in receive_control_packet()
460 r8a66597_read_fifo(r8a66597, CFIFO, buffer, rcv_len); in receive_control_packet()
466 static int send_status_packet(struct r8a66597 *r8a66597, in send_status_packet() argument
469 r8a66597_bset(r8a66597, SQSET, DCPCTR); in send_status_packet()
470 r8a66597_mdfy(r8a66597, PID_NAK, PID, DCPCTR); in send_status_packet()
473 r8a66597_bset(r8a66597, R8A66597_DIR, DCPCFG); in send_status_packet()
474 r8a66597_mdfy(r8a66597, ISEL, ISEL | CURPIPE, CFIFOSEL); in send_status_packet()
475 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in send_status_packet()
476 r8a66597_write(r8a66597, ~BEMP0, BEMPSTS); in send_status_packet()
477 r8a66597_write(r8a66597, BCLR | BVAL, CFIFOCTR); in send_status_packet()
479 r8a66597_bclr(r8a66597, R8A66597_DIR, DCPCFG); in send_status_packet()
480 r8a66597_mdfy(r8a66597, 0, ISEL | CURPIPE, CFIFOSEL); in send_status_packet()
481 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in send_status_packet()
482 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in send_status_packet()
484 r8a66597_mdfy(r8a66597, PID_BUF, PID, DCPCTR); in send_status_packet()
486 while (!(r8a66597_read(r8a66597, BEMPSTS) & 0x0001)) in send_status_packet()
493 static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port) in r8a66597_check_syssts() argument
500 old_syssts = r8a66597_read(r8a66597, get_syssts_reg(port) & LNST); in r8a66597_check_syssts()
504 syssts = r8a66597_read(r8a66597, get_syssts_reg(port) & LNST); in r8a66597_check_syssts()
514 static void r8a66597_bus_reset(struct r8a66597 *r8a66597, int port) in r8a66597_bus_reset() argument
517 r8a66597_mdfy(r8a66597, USBRST, USBRST | UACT, get_dvstctr_reg(port)); in r8a66597_bus_reset()
519 r8a66597_mdfy(r8a66597, UACT, USBRST | UACT, get_dvstctr_reg(port)); in r8a66597_bus_reset()
523 static int check_usb_device_connecting(struct r8a66597 *r8a66597) in check_usb_device_connecting() argument
530 while (!(r8a66597_read(r8a66597, INTSTS1) & ATTCH)) { in check_usb_device_connecting()
539 r8a66597_check_syssts(r8a66597, 0); in check_usb_device_connecting()
541 r8a66597_bus_reset(r8a66597, 0); in check_usb_device_connecting()
542 r8a66597->speed = get_rh_usb_speed(r8a66597, 0); in check_usb_device_connecting()
544 if (!(r8a66597_read(r8a66597, INTSTS1) & DTCH)) { in check_usb_device_connecting()
545 r8a66597->port_change = USB_PORT_STAT_C_CONNECTION; in check_usb_device_connecting()
546 r8a66597->port_status = USB_PORT_STAT_CONNECTION | in check_usb_device_connecting()
552 r8a66597_write(r8a66597, ~DTCH, INTSTS1); in check_usb_device_connecting()
566 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_rh_msg() local
604 *(__u32 *)buffer = cpu_to_le32(r8a66597->port_status | in r8a66597_submit_rh_msg()
605 (r8a66597->port_change << 16)); in r8a66597_submit_rh_msg()
615 r8a66597->port_change &= ~USB_PORT_STAT_C_CONNECTION; in r8a66597_submit_rh_msg()
625 r8a66597_bus_reset(r8a66597, 0); in r8a66597_submit_rh_msg()
634 r8a66597->rh_devnum = wValue; in r8a66597_submit_rh_msg()
736 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_control_msg() local
744 if (usb_pipedevice(pipe) == r8a66597->rh_devnum) in r8a66597_submit_control_msg()
749 set_devadd(r8a66597, r8a66597_address, dev, 0); in r8a66597_submit_control_msg()
751 if (send_setup_packet(r8a66597, dev, setup) < 0) { in r8a66597_submit_control_msg()
758 if (receive_control_packet(r8a66597, dev, buffer, in r8a66597_submit_control_msg()
762 if (send_status_packet(r8a66597, pipe) < 0) in r8a66597_submit_control_msg()
774 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_bulk_msg() local
783 set_devadd(r8a66597, dev->devnum, dev, 0); in r8a66597_submit_bulk_msg()
785 pipe_buffer_setting(r8a66597, dev, pipe); in r8a66597_submit_bulk_msg()
793 ret = receive_bulk_packet(r8a66597, dev, pipe, buffer, in r8a66597_submit_bulk_msg()
796 ret = send_bulk_packet(r8a66597, dev, pipe, buffer, in r8a66597_submit_bulk_msg()
808 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_ofdata_to_platdata()
821 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_probe()
860 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_remove()
895 .priv_auto_alloc_size = sizeof(struct r8a66597),