| Introduction |
| -------------- |
| ksbridge is a simple misc device which bridges Kickstart application |
| to HSIC h/w. Driver supports two instances, one instance for |
| flash-less-boot/ram-dumps and other instance for EFS Sync. |
| |
| Initialization |
| -------------- |
| Create two bridge instances and register for usb devices 0x9008 and |
| 0x9048/0x904C. Misc device name depends on the USB PID. |
| For PID: 9008, misc device name is ks_bridge and for PID:9048/904C, |
| misc device name is efs_bridge. After KS opens the misc device, IN |
| URBs will be submitted to H/W; By default IN URBS are configured |
| to 20. |
| |
| TX PATH |
| ------- |
| Transmit path is very simple. Bridge driver will exposes write system |
| call to kickstart. Data from write call will be put into a list and a |
| work is scheduled to take the data from the list and write to HSIC. |
| |
| Functions: |
| ksb_fs_write: System call invoked when kickstart writes the data |
| ksb_tomdm_work: Work function which submits data to HSIC h/w. |
| |
| Data Structures: |
| to_mdm_list: Data is stored in this list |
| to_mdm_work: mapped to ksb_tomdm_work function |
| |
| RX PATH |
| ------- |
| During initialization 20 IN URBs are submitted to hsic controller. In |
| completion handler of each URB, buffer is de-queued and add to a list. |
| Read function is woken-up. A new buffer is created and submitted to |
| controller. |
| |
| Functions: |
| ksb_fs_read: system call invoked by ks when it tries to read the data |
| ksb_rx_cb: rx urb completion handler |
| ksb_start_rx_work: function called during initialization. |
| |
| Data Structures: |
| ks_wait_q: read system call will block on this queue until data is |
| available or device is disconnected |
| to_ks_list: data queued to this list by rx urb completion handler, |
| later de-queued by read system call. |