[U-Boot] [PATCH v3 00/13] usb: xhci: Add interrupt transfer support and full speed device support

Bin Meng bmeng.cn at gmail.com
Wed Jul 19 23:12:23 UTC 2017


This series is the final series of the xHCI driver update.

This adds the missing interrupt transfer support to xHCI driver, so
that devices like USB keyboard that uses interrupt transfer when
CONFIG_SYS_USB_EVENT_POLL is defined can work.

This also adds full speed device support. Unlike low/high/super speed
devices, full speed device may report its endpoint 0 max packet size
as 8/16/32/64. xHCI driver guesses 64 for the first attempt to get the
initial 8 bytes device descriptor, and later adjusts the context for
endpoint 0.

This series also made several updates to xHCI driver to conform with
the spec.

Previous two series:
[1]: usb: xhci: Fix USB xHCI support on Intel platform
https://lists.denx.de/pipermail/u-boot/2017-June/296166.html
[2]: usb: hub: Support USB 3.0 hubs
https://lists.denx.de/pipermail/u-boot/2017-June/296284.html

This series is available at u-boot-x86/xhci-working3 for testing.

Changes in v3:
- rebase on u-boot-usb/master
- add changes to poplar.h

Bin Meng (13):
  usb: xhci: Add interrupt transfer support
  usb: configs: Clean up CONFIG_SYS_USB_EVENT_POLL_(xxx) in board
    configs
  usb: kbd: kconfig: Set a default polling mechanism for USB keyboard
  usb: Only get 64 bytes device descriptor for full speed devices
  usb: Read device descriptor after device is addressed for xHCI
  usb: xhci: Fix max packet size for full speed device endpoint 0
  usb: hub: Clear port reset before usb_hub_port_connect_change()
  usb: hub: Clear BH reset status change for a 3.0 hub
  usb: Handle audio extension endpoint descriptor in usb_parse_config()
  usb: xhci: Honor endpoint's interval
  usb: xhci: Program max burst size for endpoint
  usb: xhci: Set 'Error Count' to 0 for isoch endpoints
  usb: xhci: Set 'Average TRB Length' to 8 for control endpoints

 common/usb.c                                   |  45 +++--
 common/usb_hub.c                               |  16 +-
 configs/A10-OLinuXino-Lime_defconfig           |   1 +
 configs/A10s-OLinuXino-M_defconfig             |   1 +
 configs/A13-OLinuXinoM_defconfig               |   1 +
 configs/A13-OLinuXino_defconfig                |   1 +
 configs/A20-OLinuXino-Lime2_defconfig          |   1 +
 configs/A20-OLinuXino-Lime_defconfig           |   1 +
 configs/A20-OLinuXino_MICRO_defconfig          |   1 +
 configs/A20-Olimex-SOM-EVB_defconfig           |   1 +
 configs/A33-OLinuXino_defconfig                |   1 +
 configs/Ainol_AW1_defconfig                    |   1 +
 configs/Ampe_A76_defconfig                     |   1 +
 configs/Auxtek-T003_defconfig                  |   1 +
 configs/Auxtek-T004_defconfig                  |   1 +
 configs/Bananapi_M2_Ultra_defconfig            |   1 +
 configs/Bananapi_defconfig                     |   1 +
 configs/Bananapro_defconfig                    |   1 +
 configs/CHIP_defconfig                         |   1 +
 configs/CHIP_pro_defconfig                     |   1 +
 configs/CSQ_CS908_defconfig                    |   1 +
 configs/Chuwi_V7_CW0825_defconfig              |   1 +
 configs/Colombus_defconfig                     |   1 +
 configs/Cubieboard2_defconfig                  |   1 +
 configs/Cubieboard4_defconfig                  |   1 +
 configs/Cubieboard_defconfig                   |   1 +
 configs/Cubietruck_defconfig                   |   1 +
 configs/Cubietruck_plus_defconfig              |   1 +
 configs/Empire_electronix_d709_defconfig       |   1 +
 configs/Empire_electronix_m712_defconfig       |   1 +
 configs/Hummingbird_A31_defconfig              |   1 +
 configs/Hyundai_A7HD_defconfig                 |   1 +
 configs/Itead_Ibox_A20_defconfig               |   1 +
 configs/Lamobo_R1_defconfig                    |   1 +
 configs/LicheePi_Zero_defconfig                |   1 +
 configs/Linksprite_pcDuino3_Nano_defconfig     |   1 +
 configs/Linksprite_pcDuino3_defconfig          |   1 +
 configs/Linksprite_pcDuino_defconfig           |   1 +
 configs/MK808C_defconfig                       |   1 +
 configs/MSI_Primo73_defconfig                  |   1 +
 configs/MSI_Primo81_defconfig                  |   1 +
 configs/Marsboard_A10_defconfig                |   1 +
 configs/Mele_A1000G_quad_defconfig             |   1 +
 configs/Mele_A1000_defconfig                   |   1 +
 configs/Mele_I7_defconfig                      |   1 +
 configs/Mele_M3_defconfig                      |   1 +
 configs/Mele_M5_defconfig                      |   1 +
 configs/Mele_M9_defconfig                      |   1 +
 configs/Merrii_A80_Optimus_defconfig           |   1 +
 configs/Mini-X_defconfig                       |   1 +
 configs/Nintendo_NES_Classic_Edition_defconfig |   1 +
 configs/Orangepi_defconfig                     |   1 +
 configs/Orangepi_mini_defconfig                |   1 +
 configs/Sinlinx_SinA31s_defconfig              |   1 +
 configs/Sinlinx_SinA33_defconfig               |   1 +
 configs/Sinovoip_BPI_M2_Plus_defconfig         |   1 +
 configs/Sinovoip_BPI_M2_defconfig              |   1 +
 configs/Sinovoip_BPI_M3_defconfig              |   1 +
 configs/Sunchip_CX-A99_defconfig               |   1 +
 configs/UTOO_P66_defconfig                     |   1 +
 configs/Wexler_TAB7200_defconfig               |   1 +
 configs/Wits_Pro_A20_DKT_defconfig             |   1 +
 configs/Wobo_i5_defconfig                      |   1 +
 configs/Yones_Toptech_BD1078_defconfig         |   1 +
 configs/Yones_Toptech_BS1078_V2_defconfig      |   1 +
 configs/ba10_tv_box_defconfig                  |   1 +
 configs/bananapi_m64_defconfig                 |   1 +
 configs/cgtqmx6eval_defconfig                  |   1 +
 configs/colorfly_e708_q1_defconfig             |   1 +
 configs/difrnce_dit4350_defconfig              |   1 +
 configs/dms-ba16-1g_defconfig                  |   1 +
 configs/dms-ba16_defconfig                     |   1 +
 configs/dserve_dsrv9703c_defconfig             |   1 +
 configs/ga10h_v1_1_defconfig                   |   1 +
 configs/gt90h_v4_defconfig                     |   1 +
 configs/gwventana_emmc_defconfig               |   1 +
 configs/gwventana_gw5904_defconfig             |   1 +
 configs/gwventana_nand_defconfig               |   1 +
 configs/h8_homlet_v2_defconfig                 |   1 +
 configs/i12-tvbox_defconfig                    |   1 +
 configs/iNet_3F_defconfig                      |   1 +
 configs/iNet_3W_defconfig                      |   1 +
 configs/iNet_86VS_defconfig                    |   1 +
 configs/iNet_D978_rev2_defconfig               |   1 +
 configs/icnova-a20-swac_defconfig              |   1 +
 configs/inet1_defconfig                        |   1 +
 configs/inet86dz_defconfig                     |   1 +
 configs/inet97fv2_defconfig                    |   1 +
 configs/inet98v_rev2_defconfig                 |   1 +
 configs/inet9f_rev03_defconfig                 |   1 +
 configs/inet_q972_defconfig                    |   1 +
 configs/jesurun_q5_defconfig                   |   1 +
 configs/mixtile_loftq_defconfig                |   1 +
 configs/mk802_a10s_defconfig                   |   1 +
 configs/mk802_defconfig                        |   1 +
 configs/mk802ii_defconfig                      |   1 +
 configs/mx6qsabrelite_defconfig                |   1 +
 configs/nanopi_m1_defconfig                    |   1 +
 configs/nanopi_m1_plus_defconfig               |   1 +
 configs/nanopi_neo2_defconfig                  |   1 +
 configs/nanopi_neo_air_defconfig               |   1 +
 configs/nanopi_neo_defconfig                   |   1 +
 configs/nitrogen6dl2g_defconfig                |   1 +
 configs/nitrogen6dl_defconfig                  |   1 +
 configs/nitrogen6q2g_defconfig                 |   1 +
 configs/nitrogen6q_defconfig                   |   1 +
 configs/nitrogen6s1g_defconfig                 |   1 +
 configs/nitrogen6s_defconfig                   |   1 +
 configs/novena_defconfig                       |   1 +
 configs/orangepi_2_defconfig                   |   1 +
 configs/orangepi_lite_defconfig                |   1 +
 configs/orangepi_one_defconfig                 |   1 +
 configs/orangepi_pc2_defconfig                 |   1 +
 configs/orangepi_pc_defconfig                  |   1 +
 configs/orangepi_pc_plus_defconfig             |   1 +
 configs/orangepi_plus2e_defconfig              |   1 +
 configs/orangepi_plus_defconfig                |   1 +
 configs/orangepi_prime_defconfig               |   1 +
 configs/orangepi_win_defconfig                 |   1 +
 configs/orangepi_zero_defconfig                |   1 +
 configs/orangepi_zero_plus2_defconfig          |   1 +
 configs/parrot_r16_defconfig                   |   1 +
 configs/pine64_plus_defconfig                  |   1 +
 configs/polaroid_mid2407pxe03_defconfig        |   1 +
 configs/polaroid_mid2809pxe04_defconfig        |   1 +
 configs/pov_protab2_ips9_defconfig             |   1 +
 configs/q8_a13_tablet_defconfig                |   1 +
 configs/q8_a23_tablet_800x480_defconfig        |   1 +
 configs/q8_a33_tablet_1024x600_defconfig       |   1 +
 configs/q8_a33_tablet_800x480_defconfig        |   1 +
 configs/r7-tv-dongle_defconfig                 |   1 +
 configs/sandbox_defconfig                      |   1 -
 configs/sandbox_flattree_defconfig             |   1 -
 configs/sandbox_noblk_defconfig                |   1 -
 configs/sandbox_spl_defconfig                  |   1 -
 configs/sopine_baseboard_defconfig             |   1 +
 configs/sun8i_a23_evb_defconfig                |   1 +
 configs/sunxi_Gemei_G9_defconfig               |   1 +
 configs/tbs2910_defconfig                      |   1 +
 drivers/usb/Kconfig                            |   2 +-
 drivers/usb/host/xhci-mem.c                    |   6 +
 drivers/usb/host/xhci.c                        | 264 ++++++++++++++++++++++++-
 drivers/usb/host/xhci.h                        |   5 +-
 include/configs/MPC8610HPCD.h                  |   1 -
 include/configs/MPC8641HPCN.h                  |   1 -
 include/configs/advantech_dms-ba16.h           |   1 -
 include/configs/am3517_crane.h                 |   1 -
 include/configs/am3517_evm.h                   |   1 -
 include/configs/apalis_imx6.h                  |   3 -
 include/configs/cgtqmx6eval.h                  |   1 -
 include/configs/colibri_imx6.h                 |   3 -
 include/configs/cyrus.h                        |   1 -
 include/configs/ge_bx50v3.h                    |   1 -
 include/configs/gw_ventana.h                   |   1 -
 include/configs/mx6cuboxi.h                    |   1 -
 include/configs/nitrogen6x.h                   |   1 -
 include/configs/novena.h                       |   1 -
 include/configs/omap3_evm.h                    |   1 -
 include/configs/poplar.h                       |   1 -
 include/configs/rpi.h                          |   1 -
 include/configs/sunxi-common.h                 |   1 -
 include/configs/tbs2910.h                      |   1 -
 include/configs/tegra-common-post.h            |   1 -
 include/configs/x86-common.h                   |   1 -
 include/linux/usb/ch9.h                        |  20 ++
 165 files changed, 457 insertions(+), 63 deletions(-)

-- 
2.9.2



More information about the U-Boot mailing list