Kyle Swenson | 8d8f654 | 2021-03-15 11:02:55 -0600 | [diff] [blame^] | 1 | S3C24XX USB Host support |
| 2 | ======================== |
| 3 | |
| 4 | |
| 5 | |
| 6 | Introduction |
| 7 | ------------ |
| 8 | |
| 9 | This document details the S3C2410/S3C2440 in-built OHCI USB host support. |
| 10 | |
| 11 | Configuration |
| 12 | ------------- |
| 13 | |
| 14 | Enable at least the following kernel options: |
| 15 | |
| 16 | menuconfig: |
| 17 | |
| 18 | Device Drivers ---> |
| 19 | USB support ---> |
| 20 | <*> Support for Host-side USB |
| 21 | <*> OHCI HCD support |
| 22 | |
| 23 | |
| 24 | .config: |
| 25 | CONFIG_USB |
| 26 | CONFIG_USB_OHCI_HCD |
| 27 | |
| 28 | |
| 29 | Once these options are configured, the standard set of USB device |
| 30 | drivers can be configured and used. |
| 31 | |
| 32 | |
| 33 | Board Support |
| 34 | ------------- |
| 35 | |
| 36 | The driver attaches to a platform device, which will need to be |
| 37 | added by the board specific support file in linux/arch/arm/mach-s3c2410, |
| 38 | such as mach-bast.c or mach-smdk2410.c |
| 39 | |
| 40 | The platform device's platform_data field is only needed if the |
| 41 | board implements extra power control or over-current monitoring. |
| 42 | |
| 43 | The OHCI driver does not ensure the state of the S3C2410's MISCCTRL |
| 44 | register, so if both ports are to be used for the host, then it is |
| 45 | the board support file's responsibility to ensure that the second |
| 46 | port is configured to be connected to the OHCI core. |
| 47 | |
| 48 | |
| 49 | Platform Data |
| 50 | ------------- |
| 51 | |
| 52 | See arch/arm/mach-s3c2410/include/mach/usb-control.h for the |
| 53 | descriptions of the platform device data. An implementation |
| 54 | can be found in linux/arch/arm/mach-s3c2410/usb-simtec.c . |
| 55 | |
| 56 | The `struct s3c2410_hcd_info` contains a pair of functions |
| 57 | that get called to enable over-current detection, and to |
| 58 | control the port power status. |
| 59 | |
| 60 | The ports are numbered 0 and 1. |
| 61 | |
| 62 | power_control: |
| 63 | |
| 64 | Called to enable or disable the power on the port. |
| 65 | |
| 66 | enable_oc: |
| 67 | |
| 68 | Called to enable or disable the over-current monitoring. |
| 69 | This should claim or release the resources being used to |
| 70 | check the power condition on the port, such as an IRQ. |
| 71 | |
| 72 | report_oc: |
| 73 | |
| 74 | The OHCI driver fills this field in for the over-current code |
| 75 | to call when there is a change to the over-current state on |
| 76 | an port. The ports argument is a bitmask of 1 bit per port, |
| 77 | with bit X being 1 for an over-current on port X. |
| 78 | |
| 79 | The function s3c2410_usb_report_oc() has been provided to |
| 80 | ensure this is called correctly. |
| 81 | |
| 82 | port[x]: |
| 83 | |
| 84 | This is struct describes each port, 0 or 1. The platform driver |
| 85 | should set the flags field of each port to S3C_HCDFLG_USED if |
| 86 | the port is enabled. |
| 87 | |
| 88 | |
| 89 | |
| 90 | Document Author |
| 91 | --------------- |
| 92 | |
| 93 | Ben Dooks, Copyright 2005 Simtec Electronics |