• Home
  • Raw
  • Download

Lines Matching refs:r8a66597

69 static void set_devadd(struct r8a66597 *r8a66597, u8 r8a66597_address,  in set_devadd()  argument
76 usbspd = r8a66597->speed; in set_devadd()
78 r8a66597_write(r8a66597, val, devadd_reg); in set_devadd()
81 static int r8a66597_clock_enable(struct r8a66597 *r8a66597) in r8a66597_clock_enable() argument
87 r8a66597_write(r8a66597, USBE, SYSCFG0); in r8a66597_clock_enable()
88 tmp = r8a66597_read(r8a66597, SYSCFG0); in r8a66597_clock_enable()
94 r8a66597_bclr(r8a66597, USBE, SYSCFG0); in r8a66597_clock_enable()
101 r8a66597_bset(r8a66597, XTAL, SYSCFG0); in r8a66597_clock_enable()
104 r8a66597_bset(r8a66597, UPLLE, SYSCFG0); in r8a66597_clock_enable()
106 r8a66597_bset(r8a66597, SUSPM, SUSPMODE0); in r8a66597_clock_enable()
111 static void r8a66597_clock_disable(struct r8a66597 *r8a66597) in r8a66597_clock_disable() argument
113 r8a66597_bclr(r8a66597, SUSPM, SUSPMODE0); in r8a66597_clock_disable()
115 r8a66597_bclr(r8a66597, UPLLE, SYSCFG0); in r8a66597_clock_disable()
117 r8a66597_bclr(r8a66597, USBE, SYSCFG0); in r8a66597_clock_disable()
121 static void r8a66597_enable_port(struct r8a66597 *r8a66597, int port) in r8a66597_enable_port() argument
126 r8a66597_bset(r8a66597, val, get_syscfg_reg(port)); in r8a66597_enable_port()
127 r8a66597_bset(r8a66597, HSE, get_syscfg_reg(port)); in r8a66597_enable_port()
130 static void r8a66597_disable_port(struct r8a66597 *r8a66597, int port) in r8a66597_disable_port() argument
134 r8a66597_write(r8a66597, 0, get_intenb_reg(port)); in r8a66597_disable_port()
135 r8a66597_write(r8a66597, 0, get_intsts_reg(port)); in r8a66597_disable_port()
137 r8a66597_port_power(r8a66597, port, 0); in r8a66597_disable_port()
140 tmp = r8a66597_read(r8a66597, SOFCFG) & EDGESTS; in r8a66597_disable_port()
145 r8a66597_bclr(r8a66597, val, get_syscfg_reg(port)); in r8a66597_disable_port()
146 r8a66597_bclr(r8a66597, HSE, get_syscfg_reg(port)); in r8a66597_disable_port()
149 static int enable_controller(struct r8a66597 *r8a66597) in enable_controller() argument
153 ret = r8a66597_clock_enable(r8a66597); in enable_controller()
157 r8a66597_bset(r8a66597, USBE, SYSCFG0); in enable_controller()
159 r8a66597_bset(r8a66597, INTL, SOFCFG); in enable_controller()
160 r8a66597_write(r8a66597, 0, INTENB0); in enable_controller()
162 r8a66597_write(r8a66597, 0, get_intenb_reg(port)); in enable_controller()
164 r8a66597_bclr(r8a66597, BIGEND, CFIFOSEL); in enable_controller()
165 r8a66597_bclr(r8a66597, BIGEND, D0FIFOSEL); in enable_controller()
166 r8a66597_bclr(r8a66597, BIGEND, D1FIFOSEL); in enable_controller()
167 r8a66597_bset(r8a66597, TRNENSEL, SOFCFG); in enable_controller()
170 r8a66597_enable_port(r8a66597, port); in enable_controller()
175 static void disable_controller(struct r8a66597 *r8a66597) in disable_controller() argument
179 if (!(r8a66597_read(r8a66597, SYSCFG0) & USBE)) in disable_controller()
182 r8a66597_write(r8a66597, 0, INTENB0); in disable_controller()
183 r8a66597_write(r8a66597, 0, INTSTS0); in disable_controller()
185 r8a66597_write(r8a66597, 0, D0FIFOSEL); in disable_controller()
186 r8a66597_write(r8a66597, 0, D1FIFOSEL); in disable_controller()
187 r8a66597_write(r8a66597, 0, DCPCFG); in disable_controller()
188 r8a66597_write(r8a66597, 0x40, DCPMAXP); in disable_controller()
189 r8a66597_write(r8a66597, 0, DCPCTR); in disable_controller()
192 r8a66597_write(r8a66597, 0, get_devadd_addr(i)); in disable_controller()
194 r8a66597_write(r8a66597, 0, get_pipetre_addr(i)); in disable_controller()
195 r8a66597_write(r8a66597, 0, get_pipetrn_addr(i)); in disable_controller()
198 r8a66597_write(r8a66597, 0, get_pipectr_addr(i)); in disable_controller()
199 r8a66597_write(r8a66597, i, PIPESEL); in disable_controller()
200 r8a66597_write(r8a66597, 0, PIPECFG); in disable_controller()
201 r8a66597_write(r8a66597, 0, PIPEBUF); in disable_controller()
202 r8a66597_write(r8a66597, 0, PIPEMAXP); in disable_controller()
203 r8a66597_write(r8a66597, 0, PIPEPERI); in disable_controller()
207 r8a66597_disable_port(r8a66597, i); in disable_controller()
209 r8a66597_clock_disable(r8a66597); in disable_controller()
212 static void r8a66597_reg_wait(struct r8a66597 *r8a66597, unsigned long reg, in r8a66597_reg_wait() argument
219 tmp = r8a66597_read(r8a66597, reg); in r8a66597_reg_wait()
227 static void pipe_buffer_setting(struct r8a66597 *r8a66597, in pipe_buffer_setting() argument
243 if (r8a66597->pipe_config & (1 << pipenum)) in pipe_buffer_setting()
245 r8a66597->pipe_config |= (1 << pipenum); in pipe_buffer_setting()
247 r8a66597_bset(r8a66597, ACLRM, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
248 r8a66597_bclr(r8a66597, ACLRM, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
249 r8a66597_write(r8a66597, pipenum, PIPESEL); in pipe_buffer_setting()
257 r8a66597_write(r8a66597, val, PIPECFG); in pipe_buffer_setting()
259 r8a66597_write(r8a66597, (8 << 10) | bufnum, PIPEBUF); in pipe_buffer_setting()
260 r8a66597_write(r8a66597, make_devsel(usb_pipedevice(pipe)) | in pipe_buffer_setting()
262 r8a66597_write(r8a66597, 0, PIPEPERI); in pipe_buffer_setting()
263 r8a66597_write(r8a66597, SQCLR, get_pipectr_addr(pipenum)); in pipe_buffer_setting()
266 static int send_setup_packet(struct r8a66597 *r8a66597, struct usb_device *dev, in send_setup_packet() argument
277 r8a66597_write(r8a66597, make_devsel(devsel) | in send_setup_packet()
279 r8a66597_write(r8a66597, ~(SIGN | SACK), INTSTS1); in send_setup_packet()
281 dcpctr = r8a66597_read(r8a66597, DCPCTR); in send_setup_packet()
283 if (readw_poll_timeout(r8a66597->reg + DCPCTR, dcpctr, in send_setup_packet()
291 r8a66597_write(r8a66597, le16_to_cpu(p[i]), setup_addr); in send_setup_packet()
294 r8a66597_write(r8a66597, ~0x0001, BRDYSTS); in send_setup_packet()
295 r8a66597_write(r8a66597, SUREQ, DCPCTR); in send_setup_packet()
298 intsts1 = r8a66597_read(r8a66597, INTSTS1); in send_setup_packet()
315 static int send_bulk_packet(struct r8a66597 *r8a66597, struct usb_device *dev, in send_bulk_packet() argument
324 r8a66597_mdfy(r8a66597, MBW | BULK_OUT_PIPENUM, in send_bulk_packet()
326 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, BULK_OUT_PIPENUM); in send_bulk_packet()
327 tmp = r8a66597_read(r8a66597, CFIFOCTR); in send_bulk_packet()
339 r8a66597_write(r8a66597, ~(1 << BULK_OUT_PIPENUM), BEMPSTS); in send_bulk_packet()
341 r8a66597_write_fifo(r8a66597, CFIFO, buf, size); in send_bulk_packet()
342 r8a66597_write(r8a66597, BVAL, CFIFOCTR); in send_bulk_packet()
348 r8a66597_mdfy(r8a66597, PID_BUF, PID, in send_bulk_packet()
351 while (!(r8a66597_read(r8a66597, BEMPSTS) & (1 << BULK_OUT_PIPENUM))) in send_bulk_packet()
354 r8a66597_write(r8a66597, ~(1 << BULK_OUT_PIPENUM), BEMPSTS); in send_bulk_packet()
357 r8a66597_mdfy(r8a66597, PID_NAK, PID, in send_bulk_packet()
363 static int receive_bulk_packet(struct r8a66597 *r8a66597, in receive_bulk_packet() argument
378 r8a66597_mdfy(r8a66597, PID_NAK, PID, in receive_bulk_packet()
380 r8a66597_write(r8a66597, ~(1 << pipenum), BRDYSTS); in receive_bulk_packet()
382 r8a66597_write(r8a66597, TRCLR, get_pipetre_addr(pipenum)); in receive_bulk_packet()
383 r8a66597_write(r8a66597, in receive_bulk_packet()
386 r8a66597_bset(r8a66597, TRENB, get_pipetre_addr(pipenum)); in receive_bulk_packet()
388 r8a66597_mdfy(r8a66597, PID_BUF, PID, in receive_bulk_packet()
392 r8a66597_mdfy(r8a66597, MBW | pipenum, MBW | CURPIPE, CFIFOSEL); in receive_bulk_packet()
393 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, pipenum); in receive_bulk_packet()
395 while (!(r8a66597_read(r8a66597, BRDYSTS) & (1 << pipenum))) in receive_bulk_packet()
398 r8a66597_write(r8a66597, ~(1 << pipenum), BRDYSTS); in receive_bulk_packet()
400 tmp = r8a66597_read(r8a66597, CFIFOCTR); in receive_bulk_packet()
412 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in receive_bulk_packet()
414 r8a66597_read_fifo(r8a66597, CFIFO, buf, rcv_len); in receive_bulk_packet()
420 static int receive_control_packet(struct r8a66597 *r8a66597, in receive_control_packet() argument
429 r8a66597_bclr(r8a66597, R8A66597_DIR, DCPCFG); in receive_control_packet()
430 r8a66597_mdfy(r8a66597, 0, ISEL | CURPIPE, CFIFOSEL); in receive_control_packet()
431 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in receive_control_packet()
432 r8a66597_bset(r8a66597, SQSET, DCPCTR); in receive_control_packet()
433 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in receive_control_packet()
434 r8a66597_mdfy(r8a66597, PID_BUF, PID, DCPCTR); in receive_control_packet()
436 while (!(r8a66597_read(r8a66597, BRDYSTS) & 0x0001)) in receive_control_packet()
439 r8a66597_write(r8a66597, ~0x0001, BRDYSTS); in receive_control_packet()
441 r8a66597_mdfy(r8a66597, MBW, MBW | CURPIPE, CFIFOSEL); in receive_control_packet()
442 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in receive_control_packet()
444 tmp = r8a66597_read(r8a66597, CFIFOCTR); in receive_control_packet()
453 r8a66597_mdfy(r8a66597, PID_NAK, PID, DCPCTR); in receive_control_packet()
457 r8a66597_write(r8a66597, BCLR, DCPCTR); in receive_control_packet()
459 r8a66597_read_fifo(r8a66597, CFIFO, buffer, rcv_len); in receive_control_packet()
465 static int send_status_packet(struct r8a66597 *r8a66597, in send_status_packet() argument
468 r8a66597_bset(r8a66597, SQSET, DCPCTR); in send_status_packet()
469 r8a66597_mdfy(r8a66597, PID_NAK, PID, DCPCTR); in send_status_packet()
472 r8a66597_bset(r8a66597, R8A66597_DIR, DCPCFG); in send_status_packet()
473 r8a66597_mdfy(r8a66597, ISEL, ISEL | CURPIPE, CFIFOSEL); in send_status_packet()
474 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in send_status_packet()
475 r8a66597_write(r8a66597, ~BEMP0, BEMPSTS); in send_status_packet()
476 r8a66597_write(r8a66597, BCLR | BVAL, CFIFOCTR); in send_status_packet()
478 r8a66597_bclr(r8a66597, R8A66597_DIR, DCPCFG); in send_status_packet()
479 r8a66597_mdfy(r8a66597, 0, ISEL | CURPIPE, CFIFOSEL); in send_status_packet()
480 r8a66597_reg_wait(r8a66597, CFIFOSEL, CURPIPE, 0); in send_status_packet()
481 r8a66597_write(r8a66597, BCLR, CFIFOCTR); in send_status_packet()
483 r8a66597_mdfy(r8a66597, PID_BUF, PID, DCPCTR); in send_status_packet()
485 while (!(r8a66597_read(r8a66597, BEMPSTS) & 0x0001)) in send_status_packet()
492 static void r8a66597_check_syssts(struct r8a66597 *r8a66597, int port) in r8a66597_check_syssts() argument
499 old_syssts = r8a66597_read(r8a66597, get_syssts_reg(port) & LNST); in r8a66597_check_syssts()
503 syssts = r8a66597_read(r8a66597, get_syssts_reg(port) & LNST); in r8a66597_check_syssts()
513 static void r8a66597_bus_reset(struct r8a66597 *r8a66597, int port) in r8a66597_bus_reset() argument
516 r8a66597_mdfy(r8a66597, USBRST, USBRST | UACT, get_dvstctr_reg(port)); in r8a66597_bus_reset()
518 r8a66597_mdfy(r8a66597, UACT, USBRST | UACT, get_dvstctr_reg(port)); in r8a66597_bus_reset()
522 static int check_usb_device_connecting(struct r8a66597 *r8a66597) in check_usb_device_connecting() argument
529 while (!(r8a66597_read(r8a66597, INTSTS1) & ATTCH)) { in check_usb_device_connecting()
538 r8a66597_check_syssts(r8a66597, 0); in check_usb_device_connecting()
540 r8a66597_bus_reset(r8a66597, 0); in check_usb_device_connecting()
541 r8a66597->speed = get_rh_usb_speed(r8a66597, 0); in check_usb_device_connecting()
543 if (!(r8a66597_read(r8a66597, INTSTS1) & DTCH)) { in check_usb_device_connecting()
544 r8a66597->port_change = USB_PORT_STAT_C_CONNECTION; in check_usb_device_connecting()
545 r8a66597->port_status = USB_PORT_STAT_CONNECTION | in check_usb_device_connecting()
551 r8a66597_write(r8a66597, ~DTCH, INTSTS1); in check_usb_device_connecting()
565 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_rh_msg() local
603 *(__u32 *)buffer = cpu_to_le32(r8a66597->port_status | in r8a66597_submit_rh_msg()
604 (r8a66597->port_change << 16)); in r8a66597_submit_rh_msg()
614 r8a66597->port_change &= ~USB_PORT_STAT_C_CONNECTION; in r8a66597_submit_rh_msg()
624 r8a66597_bus_reset(r8a66597, 0); in r8a66597_submit_rh_msg()
633 r8a66597->rh_devnum = wValue; in r8a66597_submit_rh_msg()
735 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_control_msg() local
743 if (usb_pipedevice(pipe) == r8a66597->rh_devnum) in r8a66597_submit_control_msg()
748 set_devadd(r8a66597, r8a66597_address, dev, 0); in r8a66597_submit_control_msg()
750 if (send_setup_packet(r8a66597, dev, setup) < 0) { in r8a66597_submit_control_msg()
757 if (receive_control_packet(r8a66597, dev, buffer, in r8a66597_submit_control_msg()
761 if (send_status_packet(r8a66597, pipe) < 0) in r8a66597_submit_control_msg()
773 struct r8a66597 *r8a66597 = dev_get_priv(udev); in r8a66597_submit_bulk_msg() local
782 set_devadd(r8a66597, dev->devnum, dev, 0); in r8a66597_submit_bulk_msg()
784 pipe_buffer_setting(r8a66597, dev, pipe); in r8a66597_submit_bulk_msg()
792 ret = receive_bulk_packet(r8a66597, dev, pipe, buffer, in r8a66597_submit_bulk_msg()
795 ret = send_bulk_packet(r8a66597, dev, pipe, buffer, in r8a66597_submit_bulk_msg()
807 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_ofdata_to_platdata()
820 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_probe()
859 struct r8a66597 *priv = dev_get_priv(dev); in r8a66597_usb_remove()
894 .priv_auto_alloc_size = sizeof(struct r8a66597),