Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1478633 > unrolled thread

[PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS support

Started byStephen Boyd <stephen.boyd@linaro.org>
First post2016-09-07 23:40 +0200
Last post2016-09-09 02:50 +0200
Articles 2 on this page of 22 — 5 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS support Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:40 +0200
    [PATCH v4 14/22] usb: chipidea: msm: Add proper clk and reset support Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:40 +0200
    [PATCH v4 07/22] usb: chipidea: Notify events when switching host mode Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:40 +0200
    [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:40 +0200
      Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Peter Chen <hzpeterchen@gmail.com> - 2016-09-13 09:10 +0200
        Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Peter Chen <hzpeterchen@gmail.com> - 2016-09-14 04:20 +0200
          Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Peter Chen <hzpeterchen@gmail.com> - 2016-09-14 11:40 +0200
            Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Peter Chen <hzpeterchen@gmail.com> - 2016-09-15 07:30 +0200
      Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Kishon Vijay Abraham I <kishon@ti.com> - 2016-09-14 07:40 +0200
      Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Rob Herring <robh@kernel.org> - 2016-09-16 17:30 +0200
        Re: [PATCH v4 22/22] phy: Add support for Qualcomm's USB HS phy Rob Herring <robh@kernel.org> - 2016-09-19 23:10 +0200
    [PATCH v4 16/22] usb: chipidea: msm: Restore wrapper settings after reset Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:40 +0200
    [PATCH v4 05/22] usb: chipidea: Handle extcon events properly Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:50 +0200
    [PATCH v4 09/22] usb: chipidea: Add support for ULPI PHY bus Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:50 +0200
    [PATCH v4 03/22] usb: ulpi: Support device discovery via DT Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:50 +0200
      Re: [PATCH v4 03/22] usb: ulpi: Support device discovery via DT Rob Herring <robh+dt@kernel.org> - 2016-09-08 03:20 +0200
      Re: [PATCH v4 03/22] usb: ulpi: Support device discovery via DT Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-13 00:10 +0200
    [PATCH v4 04/22] usb: chipidea: Only read/write OTGSC from one place Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:50 +0200
    [PATCH v4 02/22] of: device: Export of_device_{get_modalias,uvent_modalias} to modules Stephen Boyd <stephen.boyd@linaro.org> - 2016-09-07 23:50 +0200
      Re: [PATCH v4 02/22] of: device: Export of_device_{get_modalias,uvent_modalias}  to modules Rob Herring <robh+dt@kernel.org> - 2016-09-08 03:00 +0200
    Re: [PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS support Peter Chen <hzpeterchen@gmail.com> - 2016-09-08 04:10 +0200
      Re: [PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS  support Peter Chen <hzpeterchen@gmail.com> - 2016-09-09 02:50 +0200

Page 2 of 2 — ← Prev page 1 [2]


#1478733

FromPeter Chen <hzpeterchen@gmail.com>
Date2016-09-08 04:10 +0200
Message-ID<seWWR-85x-13@gated-at.bofh.it>
In reply to#1478633
On Thu, Sep 8, 2016 at 5:34 AM, Stephen Boyd <stephen.boyd@linaro.org> wrote:
> The state of USB ChipIdea support on Qualcomm's platforms is not great.
> The DT description of these devices requires up to three different nodes
> for what amounts to be the same hardware block, when there should really
> only be one. Furthermore, the "phy" driver that is in mainline (phy-msm-usb.c)
> duplicates the OTG state machine and touches the ci controller wrapper
> registers when it should really be focused on the phy and the ULPI accesses
> needed to get the phy working. There's also a slimmed down phy driver for
> the msm8916 platform, but really the phy hardware is the same as other MSMs,
> so we have two drivers doing pretty much the same thing. This leads to a
> situtaion where we have the chipidea core driver, the "phy" driver, and
> sometimes the ehci-msm.c driver operating the same device all at the same
> time with very little coordination. This just isn't very safe and is
> confusing from a driver perspective when trying to figure out who does what.
> Finally, there isn't any HSIC support on platforms like apq8074 so we
> should add that.
>
> This patch series updates the ChipIdea driver and the MSM wrapper
> (ci_hdrc_msm.c) to properly handle the PHY and wrapper bits at the right
> times in the right places. To get there, we update the ChipIdea core to
> have support for the ULPI phy bus introduced by Heikki. Along the way
> we fix bugs with the extcon handling for peripheral and OTG mode controllers
> and move the parts of phy-usb-msm.c that are touching the CI controller
> wrapper into the wrapper driver (ci_hdrc_msm.c). Finally we add support
> for the HSIC phy based on the ULPI bus and rewrite the HS phy driver
> (phy-usb-msm.c) as a standard ULPI phy driver.
>
> Once this series is accepted, we should be able to delete the phy-usb-msm.c,
> phy-qcom-8x16-usb.c, and ehci-msm.c drivers from the tree and use the ULPI
> based phy driver (which also lives in drivers/phy/ instead of drivers/usb/phy/)
> and the chipidea host core instead.
>
> I've also sent separate patches for other minor pieces to make this
> all work. The full tree can be found here[3], hacks and all to get
> things working. I've tested this on the db410c, apq8074 dragonboard,
> and ifc6410 with configfs gadgets and otg cables.
>
> Patches based on v4.8-rc1
>
> Changes from v3:
>
>  * Picked up Acks from Peter
>
>  * Updated extcon consolidation patch per Peter's comments
>
>  * Folded in simplification from Heikki for ULPI DT matching
>

I find the kbuild dependency error when compile your series, I remembered
someone met it before, would you have a solution:

  GEN     ./Makefile
scripts/kconfig/conf  --silentoldconfig Kconfig
drivers/usb/Kconfig:39:error: recursive dependency detected!
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/Kconfig:39: symbol USB is selected by MOUSE_APPLETOUCH
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/input/mouse/Kconfig:187: symbol MOUSE_APPLETOUCH depends on INPUT
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/input/Kconfig:8: symbol INPUT is selected by VT
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/tty/Kconfig:12: symbol VT is selected by FB_STI
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/video/fbdev/Kconfig:674: symbol FB_STI depends on FB
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/video/fbdev/Kconfig:5: symbol FB is selected by DRM_KMS_FB_HELPER
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/Kconfig:42: symbol DRM_KMS_FB_HELPER is selected by
DRM_KMS_CMA_HELPER
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/Kconfig:98: symbol DRM_KMS_CMA_HELPER is selected by DRM_IMX
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/drm/imx/Kconfig:1: symbol DRM_IMX depends on IMX_IPUV3_CORE
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/gpu/ipu-v3/Kconfig:1: symbol IMX_IPUV3_CORE depends on RESET_CONTROLLER
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/reset/Kconfig:4: symbol RESET_CONTROLLER is selected by USB_CHIPIDEA
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/chipidea/Kconfig:1: symbol USB_CHIPIDEA depends on USB_EHCI_HCD
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/host/Kconfig:84: symbol USB_EHCI_HCD depends on USB
#

Peter

> Changes from v2:
>
>  * Added SoC specific compatibles in phy bindings
>
>  * Dropped AVVIS patch for OTG statemachine
>
>  * New patch to consolidate extcon handlers
>
>  * Picked up Acks from Peter
>
>  * Rebased onto v4.8-rc1
>
>  * Reworked ULPI OF code to look at vid == 0 instead of pid == 0
>
>  * Dropped ULPI bindings for vid and pid overrides
>
> Changes from v1:
>
>  * Reworked ULPI device probing to keep using vendor/product ids that
>    come from DT if needed and falls back to OF style match when product id
>    is 0
>
>  * PHY init later patch was rejected so that moved to a quirk flag and
>    the msm wrapper started managing the phy on/off
>
>  * Updated clk requirements for HSIC phy in binding doc
>
>  * Added optional clk in wrapper for "housekeeping" found on older qcom
>    platforms
>
>  * Bug fix to OTGSC polling function
>
>  * Changed runtime PM patch to set as active instead of get/put
>
> TODO:
>  * DMA fails on arm64 so we need something like [1] to make it work.
>
>  * The db410c needs a driver to toggle the onboard switch to connect
>    the usb hub instead of micro port when the usb cable is disconnected
>
>  * apq8064 platforms need a vbus regulator to really use otg and I haven't
>    tried out the RPM based regulators yet
>
>  * The HSIC phy on the apq8074 dragonboard is connected to a usb4604
>    device which requires the i2c driver to probe and send an i2c
>    sequence before the HSIC controller enumerates or HSIC doesn't work.
>    Right now I have a hack to force the controller to probe defer
>    once so that usb4604 probes first. This needs a more proper solution
>    like having the DT describe a linkage between the controller and
>    the usb device so we can enforce probe ordering.
>
>  * OTG support requires a working VBUS supply on apq8074 dragonboard
>    and that requires changes to the smbb_charger driver to support
>    the OTG OVP switch as a regulator[2]. This series needs revival
>    on the list so that OTG works properly on that board.
>
> [1] https://lkml.org/lkml/2016/2/22/7
> [2] http://lkml.kernel.org/g/1449621618-11900-1-git-send-email-tim.bird@sonymobile.com
> [3] https://git.linaro.org/people/stephen.boyd/linux.git/shortlog/refs/heads/usb-hsic-8074
>
>
> Stephen Boyd (22):
>   of: device: Support loading a module with OF based modalias
>   of: device: Export of_device_{get_modalias,uvent_modalias} to modules
>   usb: ulpi: Support device discovery via DT
>   usb: chipidea: Only read/write OTGSC from one place
>   usb: chipidea: Handle extcon events properly
>   usb: chipidea: Add platform flag for wrapper phy management
>   usb: chipidea: Notify events when switching host mode
>   usb: chipidea: Remove locking in ci_udc_start()
>   usb: chipidea: Add support for ULPI PHY bus
>   usb: chipidea: Consolidate extcon notifiers
>   usb: chipidea: msm: Mark device as runtime pm active
>   usb: chipidea: msm: Rely on core to override AHBBURST
>   usb: chipidea: msm: Use hw_write_id_reg() instead of writel
>   usb: chipidea: msm: Add proper clk and reset support
>   usb: chipidea: msm: Mux over secondary phy at the right time
>   usb: chipidea: msm: Restore wrapper settings after reset
>   usb: chipidea: msm: Make platform data driver local instead of global
>   usb: chipidea: msm: Add reset controller for PHY POR bit
>   usb: chipidea: msm: Handle phy power states
>   usb: chipidea: msm: Be silent on probe defer errors
>   phy: Add support for Qualcomm's USB HSIC phy
>   phy: Add support for Qualcomm's USB HS phy
>
>  .../devicetree/bindings/phy/qcom,usb-hs-phy.txt    |  83 ++++++
>  .../devicetree/bindings/phy/qcom,usb-hsic-phy.txt  |  65 +++++
>  Documentation/devicetree/bindings/usb/ulpi.txt     |  20 ++
>  drivers/of/device.c                                |  25 ++
>  drivers/phy/Kconfig                                |  15 ++
>  drivers/phy/Makefile                               |   2 +
>  drivers/phy/phy-qcom-usb-hs.c                      | 289 +++++++++++++++++++++
>  drivers/phy/phy-qcom-usb-hsic.c                    | 160 ++++++++++++
>  drivers/usb/chipidea/Kconfig                       |   8 +
>  drivers/usb/chipidea/Makefile                      |   1 +
>  drivers/usb/chipidea/ci.h                          |  22 +-
>  drivers/usb/chipidea/ci_hdrc_msm.c                 | 280 +++++++++++++++++---
>  drivers/usb/chipidea/core.c                        | 122 ++++-----
>  drivers/usb/chipidea/host.c                        |  10 +
>  drivers/usb/chipidea/otg.c                         |  86 +++++-
>  drivers/usb/chipidea/udc.c                         |   3 -
>  drivers/usb/chipidea/ulpi.c                        | 113 ++++++++
>  drivers/usb/common/ulpi.c                          |  77 +++++-
>  include/linux/of_device.h                          |   6 +
>  include/linux/usb/chipidea.h                       |   9 +-
>  20 files changed, 1259 insertions(+), 137 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/phy/qcom,usb-hs-phy.txt
>  create mode 100644 Documentation/devicetree/bindings/phy/qcom,usb-hsic-phy.txt
>  create mode 100644 Documentation/devicetree/bindings/usb/ulpi.txt
>  create mode 100644 drivers/phy/phy-qcom-usb-hs.c
>  create mode 100644 drivers/phy/phy-qcom-usb-hsic.c
>  create mode 100644 drivers/usb/chipidea/ulpi.c
>
> --
> 2.9.0.rc2.8.ga28705d
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-usb" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

[toc] | [prev] | [next] | [standalone]


#1479596 — Re: [PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS support

FromPeter Chen <hzpeterchen@gmail.com>
Date2016-09-09 02:50 +0200
SubjectRe: [PATCH v4 00/22] Support qcom's HSIC USB and rewrite USB2 HS support
Message-ID<sfib0-4rd-11@gated-at.bofh.it>
In reply to#1478733
On Thu, Sep 08, 2016 at 02:13:28PM -0700, Stephen Boyd wrote:
> Quoting Peter Chen (2016-09-07 19:06:45)
> > On Thu, Sep 8, 2016 at 5:34 AM, Stephen Boyd <stephen.boyd@linaro.org> wrote:
> > > The state of USB ChipIdea support on Qualcomm's platforms is not great.
> > > The DT description of these devices requires up to three different nodes
> > > for what amounts to be the same hardware block, when there should really
> > > only be one. Furthermore, the "phy" driver that is in mainline (phy-msm-usb.c)
> > > duplicates the OTG state machine and touches the ci controller wrapper
> > > registers when it should really be focused on the phy and the ULPI accesses
> > > needed to get the phy working. There's also a slimmed down phy driver for
> > > the msm8916 platform, but really the phy hardware is the same as other MSMs,
> > > so we have two drivers doing pretty much the same thing. This leads to a
> > > situtaion where we have the chipidea core driver, the "phy" driver, and
> > > sometimes the ehci-msm.c driver operating the same device all at the same
> > > time with very little coordination. This just isn't very safe and is
> > > confusing from a driver perspective when trying to figure out who does what.
> > > Finally, there isn't any HSIC support on platforms like apq8074 so we
> > > should add that.
> > >
> > > This patch series updates the ChipIdea driver and the MSM wrapper
> > > (ci_hdrc_msm.c) to properly handle the PHY and wrapper bits at the right
> > > times in the right places. To get there, we update the ChipIdea core to
> > > have support for the ULPI phy bus introduced by Heikki. Along the way
> > > we fix bugs with the extcon handling for peripheral and OTG mode controllers
> > > and move the parts of phy-usb-msm.c that are touching the CI controller
> > > wrapper into the wrapper driver (ci_hdrc_msm.c). Finally we add support
> > > for the HSIC phy based on the ULPI bus and rewrite the HS phy driver
> > > (phy-usb-msm.c) as a standard ULPI phy driver.
> > >
> > > Once this series is accepted, we should be able to delete the phy-usb-msm.c,
> > > phy-qcom-8x16-usb.c, and ehci-msm.c drivers from the tree and use the ULPI
> > > based phy driver (which also lives in drivers/phy/ instead of drivers/usb/phy/)
> > > and the chipidea host core instead.
> > >
> > > I've also sent separate patches for other minor pieces to make this
> > > all work. The full tree can be found here[3], hacks and all to get
> > > things working. I've tested this on the db410c, apq8074 dragonboard,
> > > and ifc6410 with configfs gadgets and otg cables.
> > >
> > > Patches based on v4.8-rc1
> > >
> > > Changes from v3:
> > >
> > >  * Picked up Acks from Peter
> > >
> > >  * Updated extcon consolidation patch per Peter's comments
> > >
> > >  * Folded in simplification from Heikki for ULPI DT matching
> > >
> > 
> > I find the kbuild dependency error when compile your series, I remembered
> > someone met it before, would you have a solution:
> 
> Yes. Should I send it through the drm maintainers?
> 

Yes, please add me at cc list, thanks.

Peter
> ---8<---
> From: Stephen Boyd <stephen.boyd@linaro.org>
> Subject: [PATCH] gpu: Remove depends on RESET_CONTROLLER when not a provider
> 
> These GPU drivers only depend on the RESET_CONTROLLER config
> option to fix build issues that existed when there weren't stub
> reset APIs for reset controller consumers. Given that these
> drivers aren't providing any reset controllers themselves, they
> don't actually depend on the API to build (just to function) so
> they don't need to depend on it. Remove the dependency to fix
> recursive build errors like the following:
> 
> drivers/usb/Kconfig:39:error: recursive dependency detected!
> drivers/usb/Kconfig:39: symbol USB is selected by MOUSE_APPLETOUCH
> drivers/input/mouse/Kconfig:187:        symbol MOUSE_APPLETOUCH depends on INPUT
> drivers/input/Kconfig:8:        symbol INPUT is selected by VT
> drivers/tty/Kconfig:12: symbol VT is selected by FB_STI
> drivers/video/fbdev/Kconfig:674:        symbol FB_STI depends on FB
> drivers/video/fbdev/Kconfig:5:  symbol FB is selected by DRM_KMS_FB_HELPER
> drivers/gpu/drm/Kconfig:42:     symbol DRM_KMS_FB_HELPER is selected by DRM_KMS_CMA_HELPER
> drivers/gpu/drm/Kconfig:98:     symbol DRM_KMS_CMA_HELPER is selected by DRM_IMX
> drivers/gpu/drm/imx/Kconfig:1:  symbol DRM_IMX depends on IMX_IPUV3_CORE
> drivers/gpu/ipu-v3/Kconfig:1:   symbol IMX_IPUV3_CORE depends on RESET_CONTROLLER
> drivers/reset/Kconfig:4:        symbol RESET_CONTROLLER is selected by USB_CHIPIDEA
> drivers/usb/chipidea/Kconfig:1: symbol USB_CHIPIDEA depends on USB_EHCI_HCD
> drivers/usb/host/Kconfig:84:    symbol USB_EHCI_HCD depends on USB
> 
> Cc: Arnd Bergmann <arnd@arndb.de>
> Cc: David Airlie <airlied@linux.ie>
> Cc: <dri-devel@lists.freedesktop.org>
> Cc: Heiko Stuebner <heiko@sntech.de>
> Cc: Mark Yao <mark.yao@rock-chips.com>
> Cc: Philipp Zabel <p.zabel@pengutronix.de>
> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org>
> ---
>  drivers/gpu/drm/rockchip/Kconfig | 1 -
>  drivers/gpu/drm/tegra/Kconfig    | 1 -
>  drivers/gpu/ipu-v3/Kconfig       | 1 -
>  3 files changed, 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
> index 3c58669a06ce..6f7f9c59f05b 100644
> --- a/drivers/gpu/drm/rockchip/Kconfig
> +++ b/drivers/gpu/drm/rockchip/Kconfig
> @@ -1,7 +1,6 @@
>  config DRM_ROCKCHIP
>  	tristate "DRM Support for Rockchip"
>  	depends on DRM && ROCKCHIP_IOMMU
> -	depends on RESET_CONTROLLER
>  	select DRM_GEM_CMA_HELPER
>  	select DRM_KMS_HELPER
>  	select DRM_PANEL
> diff --git a/drivers/gpu/drm/tegra/Kconfig b/drivers/gpu/drm/tegra/Kconfig
> index 63ebb154b9b5..bbf5a4b7e0b6 100644
> --- a/drivers/gpu/drm/tegra/Kconfig
> +++ b/drivers/gpu/drm/tegra/Kconfig
> @@ -3,7 +3,6 @@ config DRM_TEGRA
>  	depends on ARCH_TEGRA || (ARM && COMPILE_TEST)
>  	depends on COMMON_CLK
>  	depends on DRM
> -	depends on RESET_CONTROLLER
>  	select DRM_KMS_HELPER
>  	select DRM_MIPI_DSI
>  	select DRM_PANEL
> diff --git a/drivers/gpu/ipu-v3/Kconfig b/drivers/gpu/ipu-v3/Kconfig
> index aefdff95356d..08766c6e7856 100644
> --- a/drivers/gpu/ipu-v3/Kconfig
> +++ b/drivers/gpu/ipu-v3/Kconfig
> @@ -1,7 +1,6 @@
>  config IMX_IPUV3_CORE
>  	tristate "IPUv3 core support"
>  	depends on SOC_IMX5 || SOC_IMX6Q || ARCH_MULTIPLATFORM
> -	depends on RESET_CONTROLLER
>  	select GENERIC_IRQ_CHIP
>  	help
>  	  Choose this if you have a i.MX5/6 system and want to use the Image
> -- 
> 2.9.0.rc2.8.ga28705d

-- 

Best Regards,
Peter Chen

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | linux.kernel


csiph-web