2017-12-10 23:11:11

by Dmitry Osipenko

[permalink] [raw]
Subject: [PATCH v1 1/2] usb: phy: Add Kconfig entry for Tegra's PHY driver

Add Kconfig entry so that other drivers other than ehci-tegra
(like ChipIdea) could add Tegra's PHY to build dependencies.

Signed-off-by: Dmitry Osipenko <[email protected]>
---
drivers/usb/host/Kconfig | 2 +-
drivers/usb/phy/Kconfig | 8 ++++++++
drivers/usb/phy/Makefile | 2 +-
3 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index b80a94e632af..f19072f1f519 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -226,7 +226,7 @@ config USB_EHCI_TEGRA
tristate "NVIDIA Tegra HCD support"
depends on ARCH_TEGRA
select USB_EHCI_ROOT_HUB_TT
- select USB_PHY
+ select USB_TEGRA_PHY
select USB_ULPI
select USB_ULPI_VIEWPORT
help
diff --git a/drivers/usb/phy/Kconfig b/drivers/usb/phy/Kconfig
index 0f8ab981d572..2a50576e1a2a 100644
--- a/drivers/usb/phy/Kconfig
+++ b/drivers/usb/phy/Kconfig
@@ -159,6 +159,14 @@ config USB_MXS_PHY

MXS Phy is used by some of the i.MX SoCs, for example imx23/28/6x.

+config USB_TEGRA_PHY
+ tristate "NVIDIA Tegra USB PHY Driver"
+ depends on ARCH_TEGRA
+ select USB_PHY
+ help
+ This driver provides PHY support for the USB controllers found
+ on NVIDIA Tegra SoC's.
+
config USB_ULPI
bool "Generic ULPI Transceiver Driver"
depends on ARM || ARM64
diff --git a/drivers/usb/phy/Makefile b/drivers/usb/phy/Makefile
index 25e579fb92b8..df1d99010079 100644
--- a/drivers/usb/phy/Makefile
+++ b/drivers/usb/phy/Makefile
@@ -16,7 +16,7 @@ obj-$(CONFIG_AM335X_CONTROL_USB) += phy-am335x-control.o
obj-$(CONFIG_AM335X_PHY_USB) += phy-am335x.o
obj-$(CONFIG_OMAP_OTG) += phy-omap-otg.o
obj-$(CONFIG_TWL6030_USB) += phy-twl6030-usb.o
-obj-$(CONFIG_USB_EHCI_TEGRA) += phy-tegra-usb.o
+obj-$(CONFIG_USB_TEGRA_PHY) += phy-tegra-usb.o
obj-$(CONFIG_USB_GPIO_VBUS) += phy-gpio-vbus-usb.o
obj-$(CONFIG_USB_ISP1301) += phy-isp1301.o
obj-$(CONFIG_USB_MV_OTG) += phy-mv-usb.o
--
2.15.1


2017-12-10 23:11:17

by Dmitry Osipenko

[permalink] [raw]
Subject: [PATCH v1 2/2] usb: chipidea: tegra: Select Tegra's PHY in Kconfig

UDC driver won't probe without Tegra's PHY, hence select it in the
Kconfig.

Signed-off-by: Dmitry Osipenko <[email protected]>
---
drivers/usb/chipidea/Kconfig | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
index 785f0ed037f7..2ef3b27ea72b 100644
--- a/drivers/usb/chipidea/Kconfig
+++ b/drivers/usb/chipidea/Kconfig
@@ -27,6 +27,7 @@ config USB_CHIPIDEA_PCI
config USB_CHIPIDEA_UDC
bool "ChipIdea device controller"
depends on USB_GADGET
+ select USB_TEGRA_PHY if ARCH_TEGRA
help
Say Y here to enable device controller functionality of the
ChipIdea driver.
--
2.15.1

2017-12-11 10:02:54

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] usb: phy: Add Kconfig entry for Tegra's PHY driver

On Mon, Dec 11, 2017 at 02:09:59AM +0300, Dmitry Osipenko wrote:
> Add Kconfig entry so that other drivers other than ehci-tegra
> (like ChipIdea) could add Tegra's PHY to build dependencies.
>
> Signed-off-by: Dmitry Osipenko <[email protected]>
> ---
> drivers/usb/host/Kconfig | 2 +-
> drivers/usb/phy/Kconfig | 8 ++++++++
> drivers/usb/phy/Makefile | 2 +-
> 3 files changed, 10 insertions(+), 2 deletions(-)

I don't think we actually build-depend on the PHY driver from the
ChipIdea driver. In the past, we've refrained from modelling runtime
dependencies using Kconfig because in some cases (such as this) it'll
include more than necessary (ChipIdea will automatically pull in the
USB PHY driver irrespective of whether or not Tegra is enabled).

Thierry


Attachments:
(No filename) (766.00 B)
signature.asc (833.00 B)
Download all attachments

2017-12-11 10:04:07

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] usb: chipidea: tegra: Select Tegra's PHY in Kconfig

On Mon, Dec 11, 2017 at 02:10:00AM +0300, Dmitry Osipenko wrote:
> UDC driver won't probe without Tegra's PHY, hence select it in the
> Kconfig.
>
> Signed-off-by: Dmitry Osipenko <[email protected]>
> ---
> drivers/usb/chipidea/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
> index 785f0ed037f7..2ef3b27ea72b 100644
> --- a/drivers/usb/chipidea/Kconfig
> +++ b/drivers/usb/chipidea/Kconfig
> @@ -27,6 +27,7 @@ config USB_CHIPIDEA_PCI
> config USB_CHIPIDEA_UDC
> bool "ChipIdea device controller"
> depends on USB_GADGET
> + select USB_TEGRA_PHY if ARCH_TEGRA

This is kind of pointless given that USB_TEGRA_PHY originally was
automatically enabled if ARCH_TEGRA was enabled.

What do we gain by these two patches, other than maybe make the driver
buildable as a module?

Thierry


Attachments:
(No filename) (866.00 B)
signature.asc (833.00 B)
Download all attachments

2017-12-11 13:03:21

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v1 1/2] usb: phy: Add Kconfig entry for Tegra's PHY driver

On 11.12.2017 13:02, Thierry Reding wrote:
> On Mon, Dec 11, 2017 at 02:09:59AM +0300, Dmitry Osipenko wrote:
>> Add Kconfig entry so that other drivers other than ehci-tegra
>> (like ChipIdea) could add Tegra's PHY to build dependencies.
>>
>> Signed-off-by: Dmitry Osipenko <[email protected]>
>> ---
>> drivers/usb/host/Kconfig | 2 +-
>> drivers/usb/phy/Kconfig | 8 ++++++++
>> drivers/usb/phy/Makefile | 2 +-
>> 3 files changed, 10 insertions(+), 2 deletions(-)
>
> I don't think we actually build-depend on the PHY driver from the
> ChipIdea driver. In the past, we've refrained from modelling runtime
> dependencies using Kconfig because in some cases (such as this) it'll
> include more than necessary (ChipIdea will automatically pull in the
> USB PHY driver irrespective of whether or not Tegra is enabled).

Please take a closer look at the patch. Tegra PHY driver is only compiled if
ehci-tegra driver is compiled. So we need to decouple build dependency in order
fix it.

2017-12-11 13:09:51

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] usb: chipidea: tegra: Select Tegra's PHY in Kconfig

On 11.12.2017 13:04, Thierry Reding wrote:
> On Mon, Dec 11, 2017 at 02:10:00AM +0300, Dmitry Osipenko wrote:
>> UDC driver won't probe without Tegra's PHY, hence select it in the
>> Kconfig.
>>
>> Signed-off-by: Dmitry Osipenko <[email protected]>
>> ---
>> drivers/usb/chipidea/Kconfig | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
>> index 785f0ed037f7..2ef3b27ea72b 100644
>> --- a/drivers/usb/chipidea/Kconfig
>> +++ b/drivers/usb/chipidea/Kconfig
>> @@ -27,6 +27,7 @@ config USB_CHIPIDEA_PCI
>> config USB_CHIPIDEA_UDC
>> bool "ChipIdea device controller"
>> depends on USB_GADGET
>> + select USB_TEGRA_PHY if ARCH_TEGRA
>
> This is kind of pointless given that USB_TEGRA_PHY originally was
> automatically enabled if ARCH_TEGRA was enabled.

Again, please take a closer look at the patches. USB_TEGRA_PHY was enabled if
USB_EHCI_TEGRA was and not ARCH_TEGRA.

> What do we gain by these two patches, other than maybe make the driver
> buildable as a module?

Firstly, tegra-phy is built only if ehci-tegra is built.

Secondly, I think we need to enforce Tegra PHY to be compiled as built-in if one
of ehci-tegra or chipidea drivers is built-in and the other is compiled as a module.

2017-12-12 02:56:05

by Peter Chen

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] usb: chipidea: tegra: Select Tegra's PHY in Kconfig

On Mon, Dec 11, 2017 at 04:09:44PM +0300, Dmitry Osipenko wrote:
> On 11.12.2017 13:04, Thierry Reding wrote:
> > On Mon, Dec 11, 2017 at 02:10:00AM +0300, Dmitry Osipenko wrote:
> >> UDC driver won't probe without Tegra's PHY, hence select it in the
> >> Kconfig.
> >>
> >> Signed-off-by: Dmitry Osipenko <[email protected]>
> >> ---
> >> drivers/usb/chipidea/Kconfig | 1 +
> >> 1 file changed, 1 insertion(+)
> >>
> >> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
> >> index 785f0ed037f7..2ef3b27ea72b 100644
> >> --- a/drivers/usb/chipidea/Kconfig
> >> +++ b/drivers/usb/chipidea/Kconfig
> >> @@ -27,6 +27,7 @@ config USB_CHIPIDEA_PCI
> >> config USB_CHIPIDEA_UDC
> >> bool "ChipIdea device controller"
> >> depends on USB_GADGET
> >> + select USB_TEGRA_PHY if ARCH_TEGRA
> >
> > This is kind of pointless given that USB_TEGRA_PHY originally was
> > automatically enabled if ARCH_TEGRA was enabled.
>
> Again, please take a closer look at the patches. USB_TEGRA_PHY was enabled if
> USB_EHCI_TEGRA was and not ARCH_TEGRA.
>
> > What do we gain by these two patches, other than maybe make the driver
> > buildable as a module?
>
> Firstly, tegra-phy is built only if ehci-tegra is built.
>
> Secondly, I think we need to enforce Tegra PHY to be compiled as built-in if one
> of ehci-tegra or chipidea drivers is built-in and the other is compiled as a module.

You may not bind controller driver with PHY driver in Kconfig, we need
to make sure the controller driver has no build error if the PHY driver
is not select. And if the PHY driver is not loaded, the controller
driver should return -EPROBE_DEFER for it.

--

Best Regards,
Peter Chen

2017-12-12 11:39:56

by Dmitry Osipenko

[permalink] [raw]
Subject: Re: [PATCH v1 2/2] usb: chipidea: tegra: Select Tegra's PHY in Kconfig

On 12.12.2017 05:54, Peter Chen wrote:
> On Mon, Dec 11, 2017 at 04:09:44PM +0300, Dmitry Osipenko wrote:
>> On 11.12.2017 13:04, Thierry Reding wrote:
>>> On Mon, Dec 11, 2017 at 02:10:00AM +0300, Dmitry Osipenko wrote:
>>>> UDC driver won't probe without Tegra's PHY, hence select it in the
>>>> Kconfig.
>>>>
>>>> Signed-off-by: Dmitry Osipenko <[email protected]>
>>>> ---
>>>> drivers/usb/chipidea/Kconfig | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/drivers/usb/chipidea/Kconfig b/drivers/usb/chipidea/Kconfig
>>>> index 785f0ed037f7..2ef3b27ea72b 100644
>>>> --- a/drivers/usb/chipidea/Kconfig
>>>> +++ b/drivers/usb/chipidea/Kconfig
>>>> @@ -27,6 +27,7 @@ config USB_CHIPIDEA_PCI
>>>> config USB_CHIPIDEA_UDC
>>>> bool "ChipIdea device controller"
>>>> depends on USB_GADGET
>>>> + select USB_TEGRA_PHY if ARCH_TEGRA
>>>
>>> This is kind of pointless given that USB_TEGRA_PHY originally was
>>> automatically enabled if ARCH_TEGRA was enabled.
>>
>> Again, please take a closer look at the patches. USB_TEGRA_PHY was enabled if
>> USB_EHCI_TEGRA was and not ARCH_TEGRA.
>>
>>> What do we gain by these two patches, other than maybe make the driver
>>> buildable as a module?
>>
>> Firstly, tegra-phy is built only if ehci-tegra is built.
>>
>> Secondly, I think we need to enforce Tegra PHY to be compiled as built-in if one
>> of ehci-tegra or chipidea drivers is built-in and the other is compiled as a module.
>
> You may not bind controller driver with PHY driver in Kconfig, we need
> to make sure the controller driver has no build error if the PHY driver
> is not select. And if the PHY driver is not loaded, the controller
> driver should return -EPROBE_DEFER for it.

Okay, I'll drop the ChipIdea Kconfig patch and remove USB_TEGRA_PHY selection in
USB_EHCI_TEGRA config entry in the next iteration of the patch. Also, I noticed
that USB_ULPI* selection should be moved from ehci-tegra to tegra-phy Kconfig entry.