diff mbox

[v2] USB: chipidea: Do not hang when CONFIG_USB_CHIPIDEA_ULPI is not selected

Message ID 1529936712-13081-1-git-send-email-festevam@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Fabio Estevam June 25, 2018, 2:25 p.m. UTC
From: Fabio Estevam <fabio.estevam@nxp.com>

Since commit 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51") the
kernel hangs on a imx51-babbage board, when using the ULPI interface with
the CONFIG_USB_CHIPIDEA_ULPI option unselected.

Instead of hanging the kernel, let's warn the user that
CONFIG_USB_CHIPIDEA_ULPI needs to be selected, propagate an error
and continue with booting the kernel.

The user can then react to the warning and select
CONFIG_USB_CHIPIDEA_ULPI as needed.

Fixes: 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51")
Suggested-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
Changes since v1:
- Only propagate the error when CONFIG_USB_CHIPIDEA_ULPI is unselected

 drivers/usb/chipidea/core.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Peter Chen June 26, 2018, 2:51 a.m. UTC | #1
> 
> Fixes: 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51")
> Suggested-by: Lucas Stach <l.stach@pengutronix.de>
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
> ---
> Changes since v1:
> - Only propagate the error when CONFIG_USB_CHIPIDEA_ULPI is unselected
> 
>  drivers/usb/chipidea/core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c index
> 85fc6db..e7018a1 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -608,6 +608,17 @@ static int ci_get_platdata(struct device *dev,
>  	if (!platdata->phy_mode)
>  		platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
> 
> +	if (platdata->phy_mode == USBPHY_INTERFACE_MODE_ULPI) {
> +		/*
> +		 * CONFIG_USB_CHIPIDEA_ULPI needs to be selected
> +		 * for proper usage of the ULPI mode
> +		 */
> +		if (!IS_ENABLED(CONFIG_USB_CHIPIDEA_ULPI)) {
> +			WARN_ONCE(1, "Select CONFIG_USB_CHIPIDEA_ULPI in
> order to use ULPI mode\n");
> +			return -EINVAL;
> +		}
> +	}
> +
>  	if (!platdata->dr_mode)
>  		platdata->dr_mode = usb_get_dr_mode(dev);
> 

Fabio, I wonder it may cause the USB not work at imx27 which
do not use this configuration now. Any possibilities to test and verify it?

b29397@b29397-desktop:~/work/projects/usb$ find arch/arm/boot/dts/ -name imx* | xargs grep -rn "ulpi"
arch/arm/boot/dts/imx53-ppd.dts:630:	phy_type = "ulpi";
arch/arm/boot/dts/imx53-ppd.dts:640:	phy_type = "ulpi";
arch/arm/boot/dts/imx51-eukrea-mbimxsd51-baseboard.dts:280:	phy_type = "ulpi";
arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts:57:	phy_type = "ulpi";
arch/arm/boot/dts/imx27-phytec-phycore-som.dtsi:320:	phy_type = "ulpi";
arch/arm/boot/dts/imx27-pdk.dts:113:	phy_type = "ulpi";
arch/arm/boot/dts/imx51-zii-rdu1.dts:592:	phy_type = "ulpi";
arch/arm/boot/dts/imx51-zii-rdu1.dts:604:	phy_type = "ulpi";
arch/arm/boot/dts/imx27-phytec-phycore-rdk.dts:303:	phy_type = "ulpi";
arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi:81:	phy_type = "ulpi";
arch/arm/boot/dts/imx27-eukrea-cpuimx27.dtsi:90:	phy_type = "ulpi";
arch/arm/boot/dts/imx51-babbage.dts:433:	phy_type = "ulpi";

Peter
--
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
Fabio Estevam June 26, 2018, 11:26 a.m. UTC | #2
Hi Peter,

On Mon, Jun 25, 2018 at 11:51 PM, Peter Chen <peter.chen@nxp.com> wrote:

> Fabio, I wonder it may cause the USB not work at imx27 which
> do not use this configuration now. Any possibilities to test and verify it?

I don't have access to a mx27 board, but I can send a patch that
selects CONFIG_USB_CHIPIDEA_ULPI in imx_v4_v5_defconfig.

I have already sent a patch that selects CONFIG_USB_CHIPIDEA_ULPI in
imx_v6_v7_defconfig.
--
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
Andrey Smirnov June 27, 2018, 4:10 a.m. UTC | #3
On Mon, Jun 25, 2018 at 7:24 AM Fabio Estevam <festevam@gmail.com> wrote:
>
> From: Fabio Estevam <fabio.estevam@nxp.com>
>
> Since commit 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51") the
> kernel hangs on a imx51-babbage board, when using the ULPI interface with
> the CONFIG_USB_CHIPIDEA_ULPI option unselected.
>
> Instead of hanging the kernel, let's warn the user that
> CONFIG_USB_CHIPIDEA_ULPI needs to be selected, propagate an error
> and continue with booting the kernel.
>
> The user can then react to the warning and select
> CONFIG_USB_CHIPIDEA_ULPI as needed.
>
> Fixes: 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51")
> Suggested-by: Lucas Stach <l.stach@pengutronix.de>
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>

FWIW:

Tested-by: Andrey Smirnov <andrew.smirnov@gmail.com>

> ---
> Changes since v1:
> - Only propagate the error when CONFIG_USB_CHIPIDEA_ULPI is unselected
>
>  drivers/usb/chipidea/core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 85fc6db..e7018a1 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -608,6 +608,17 @@ static int ci_get_platdata(struct device *dev,
>         if (!platdata->phy_mode)
>                 platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
>
> +       if (platdata->phy_mode == USBPHY_INTERFACE_MODE_ULPI) {
> +               /*
> +                * CONFIG_USB_CHIPIDEA_ULPI needs to be selected
> +                * for proper usage of the ULPI mode
> +                */
> +               if (!IS_ENABLED(CONFIG_USB_CHIPIDEA_ULPI)) {
> +                       WARN_ONCE(1, "Select CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode\n");
> +                       return -EINVAL;
> +               }
> +       }
> +
>         if (!platdata->dr_mode)
>                 platdata->dr_mode = usb_get_dr_mode(dev);
>
> --
> 2.7.4
>
--
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
Peter Chen July 2, 2018, 3:08 a.m. UTC | #4
IA0KPiANCj4gT24gTW9uLCBKdW4gMjUsIDIwMTggYXQgNzoyNCBBTSBGYWJpbyBFc3RldmFtIDxm
ZXN0ZXZhbUBnbWFpbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gRnJvbTogRmFiaW8gRXN0ZXZhbSA8
ZmFiaW8uZXN0ZXZhbUBueHAuY29tPg0KPiA+DQo+ID4gU2luY2UgY29tbWl0IDAzZTYyNzVhZTM4
MTA4N2JkOCAoInVzYjogY2hpcGlkZWE6IEZpeCBVTFBJIG9uIGlteDUxIikNCj4gPiB0aGUga2Vy
bmVsIGhhbmdzIG9uIGEgaW14NTEtYmFiYmFnZSBib2FyZCwgd2hlbiB1c2luZyB0aGUgVUxQSQ0K
PiA+IGludGVyZmFjZSB3aXRoIHRoZSBDT05GSUdfVVNCX0NISVBJREVBX1VMUEkgb3B0aW9uIHVu
c2VsZWN0ZWQuDQo+ID4NCj4gPiBJbnN0ZWFkIG9mIGhhbmdpbmcgdGhlIGtlcm5lbCwgbGV0J3Mg
d2FybiB0aGUgdXNlciB0aGF0DQo+ID4gQ09ORklHX1VTQl9DSElQSURFQV9VTFBJIG5lZWRzIHRv
IGJlIHNlbGVjdGVkLCBwcm9wYWdhdGUgYW4gZXJyb3IgYW5kDQo+ID4gY29udGludWUgd2l0aCBi
b290aW5nIHRoZSBrZXJuZWwuDQo+ID4NCj4gPiBUaGUgdXNlciBjYW4gdGhlbiByZWFjdCB0byB0
aGUgd2FybmluZyBhbmQgc2VsZWN0DQo+ID4gQ09ORklHX1VTQl9DSElQSURFQV9VTFBJIGFzIG5l
ZWRlZC4NCj4gPg0KPiA+IEZpeGVzOiAwM2U2Mjc1YWUzODEwODdiZDggKCJ1c2I6IGNoaXBpZGVh
OiBGaXggVUxQSSBvbiBpbXg1MSIpDQo+ID4gU3VnZ2VzdGVkLWJ5OiBMdWNhcyBTdGFjaCA8bC5z
dGFjaEBwZW5ndXRyb25peC5kZT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBGYWJpbyBFc3RldmFtIDxm
YWJpby5lc3RldmFtQG54cC5jb20+DQo+IA0KPiBGV0lXOg0KPiANCj4gVGVzdGVkLWJ5OiBBbmRy
ZXkgU21pcm5vdiA8YW5kcmV3LnNtaXJub3ZAZ21haWwuY29tPg0KPiANCj4gPiAtLS0NCj4gPiBD
aGFuZ2VzIHNpbmNlIHYxOg0KPiA+IC0gT25seSBwcm9wYWdhdGUgdGhlIGVycm9yIHdoZW4gQ09O
RklHX1VTQl9DSElQSURFQV9VTFBJIGlzIHVuc2VsZWN0ZWQNCj4gPg0KPiA+ICBkcml2ZXJzL3Vz
Yi9jaGlwaWRlYS9jb3JlLmMgfCAxMSArKysrKysrKysrKw0KPiA+ICAxIGZpbGUgY2hhbmdlZCwg
MTEgaW5zZXJ0aW9ucygrKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2NoaXBp
ZGVhL2NvcmUuYyBiL2RyaXZlcnMvdXNiL2NoaXBpZGVhL2NvcmUuYw0KPiA+IGluZGV4IDg1ZmM2
ZGIuLmU3MDE4YTEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5j
DQo+ID4gKysrIGIvZHJpdmVycy91c2IvY2hpcGlkZWEvY29yZS5jDQo+ID4gQEAgLTYwOCw2ICs2
MDgsMTcgQEAgc3RhdGljIGludCBjaV9nZXRfcGxhdGRhdGEoc3RydWN0IGRldmljZSAqZGV2LA0K
PiA+ICAgICAgICAgaWYgKCFwbGF0ZGF0YS0+cGh5X21vZGUpDQo+ID4gICAgICAgICAgICAgICAg
IHBsYXRkYXRhLT5waHlfbW9kZSA9DQo+ID4gb2ZfdXNiX2dldF9waHlfbW9kZShkZXYtPm9mX25v
ZGUpOw0KPiA+DQo+ID4gKyAgICAgICBpZiAocGxhdGRhdGEtPnBoeV9tb2RlID09IFVTQlBIWV9J
TlRFUkZBQ0VfTU9ERV9VTFBJKSB7DQo+ID4gKyAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAg
ICAgICAgICAgICAqIENPTkZJR19VU0JfQ0hJUElERUFfVUxQSSBuZWVkcyB0byBiZSBzZWxlY3Rl
ZA0KPiA+ICsgICAgICAgICAgICAgICAgKiBmb3IgcHJvcGVyIHVzYWdlIG9mIHRoZSBVTFBJIG1v
ZGUNCj4gPiArICAgICAgICAgICAgICAgICovDQo+ID4gKyAgICAgICAgICAgICAgIGlmICghSVNf
RU5BQkxFRChDT05GSUdfVVNCX0NISVBJREVBX1VMUEkpKSB7DQo+ID4gKyAgICAgICAgICAgICAg
ICAgICAgICAgV0FSTl9PTkNFKDEsICJTZWxlY3QgQ09ORklHX1VTQl9DSElQSURFQV9VTFBJIGlu
IG9yZGVyDQo+IHRvIHVzZSBVTFBJIG1vZGVcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICB9
DQo+ID4gKw0KPiA+ICAgICAgICAgaWYgKCFwbGF0ZGF0YS0+ZHJfbW9kZSkNCj4gPiAgICAgICAg
ICAgICAgICAgcGxhdGRhdGEtPmRyX21vZGUgPSB1c2JfZ2V0X2RyX21vZGUoZGV2KTsNCj4gPg0K
DQpGYWJpbywgc2luY2UgdGhpcyBmdW5jdGlvbiBoYXMgZGVwZW5kZW5jeSB3aXRoIGRlZmNvbmZp
ZywgaXMgdGhlIGRlZmNvbmZpZyBjaGFuZ2UgYSBmaXggZm9yIHY0LjE4LXJjDQpvciBmb3IgdjQu
MTktcmMxPw0KDQpQZXRlcg0K
--
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
Fabio Estevam July 2, 2018, 11:52 a.m. UTC | #5
Hi Peter,

On Mon, Jul 2, 2018 at 12:08 AM, Peter Chen <peter.chen@nxp.com> wrote:

> Fabio, since this function has dependency with defconfig, is the defconfig change a fix for v4.18-rc
> or for v4.19-rc1?

I have sent the defconfig changes for imx_v6_v7_defconfig and
imx_v4_v5_defconfig and hope that they could be applied for 4.18-rc.

Maybe they could go to the same tree?
--
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
Shawn Guo July 3, 2018, 1:48 a.m. UTC | #6
On Mon, Jul 02, 2018 at 08:52:34AM -0300, Fabio Estevam wrote:
> Hi Peter,
> 
> On Mon, Jul 2, 2018 at 12:08 AM, Peter Chen <peter.chen@nxp.com> wrote:
> 
> > Fabio, since this function has dependency with defconfig, is the defconfig change a fix for v4.18-rc
> > or for v4.19-rc1?
> 
> I have sent the defconfig changes for imx_v6_v7_defconfig and
> imx_v4_v5_defconfig and hope that they could be applied for 4.18-rc.

I will make sure both defconfig patches go into 4.18-rc.

Shawn
--
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
Fabio Estevam July 3, 2018, 2 a.m. UTC | #7
On Mon, Jul 2, 2018 at 10:48 PM, Shawn Guo <shawnguo@kernel.org> wrote:

> I will make sure both defconfig patches go into 4.18-rc.

Thanks, Shawn!

Peter,

Could you please then queue this chipidea patch for 4.18-rc?

Thanks
--
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
Shawn Guo July 3, 2018, 2:06 a.m. UTC | #8
On Mon, Jun 25, 2018 at 11:25:12AM -0300, Fabio Estevam wrote:
> From: Fabio Estevam <fabio.estevam@nxp.com>
> 
> Since commit 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51") the
> kernel hangs on a imx51-babbage board, when using the ULPI interface with
> the CONFIG_USB_CHIPIDEA_ULPI option unselected.
> 
> Instead of hanging the kernel, let's warn the user that
> CONFIG_USB_CHIPIDEA_ULPI needs to be selected, propagate an error
> and continue with booting the kernel.
> 
> The user can then react to the warning and select
> CONFIG_USB_CHIPIDEA_ULPI as needed.

A second thought on this - shouldn't such dependency be solved by
Kconfig select clause?

Shawn

> 
> Fixes: 03e6275ae381087bd8 ("usb: chipidea: Fix ULPI on imx51")
> Suggested-by: Lucas Stach <l.stach@pengutronix.de>
> Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
> ---
> Changes since v1:
> - Only propagate the error when CONFIG_USB_CHIPIDEA_ULPI is unselected
> 
>  drivers/usb/chipidea/core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
> index 85fc6db..e7018a1 100644
> --- a/drivers/usb/chipidea/core.c
> +++ b/drivers/usb/chipidea/core.c
> @@ -608,6 +608,17 @@ static int ci_get_platdata(struct device *dev,
>  	if (!platdata->phy_mode)
>  		platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
>  
> +	if (platdata->phy_mode == USBPHY_INTERFACE_MODE_ULPI) {
> +		/*
> +		 * CONFIG_USB_CHIPIDEA_ULPI needs to be selected
> +		 * for proper usage of the ULPI mode
> +		 */
> +		if (!IS_ENABLED(CONFIG_USB_CHIPIDEA_ULPI)) {
> +			WARN_ONCE(1, "Select CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode\n");
> +			return -EINVAL;
> +		}
> +	}
> +
>  	if (!platdata->dr_mode)
>  		platdata->dr_mode = usb_get_dr_mode(dev);
>  
> -- 
> 2.7.4
> 
--
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
Fabio Estevam July 3, 2018, 2:22 a.m. UTC | #9
Hi Shawn,

On Mon, Jul 2, 2018 at 11:06 PM, Shawn Guo <shawnguo@kernel.org> wrote:

> A second thought on this - shouldn't such dependency be solved by
> Kconfig select clause?

I suspect we are not able to fix it via Kconfig as we really don't
know if a system uses ULPI interface or not via Kconfig perspective.

If we always select the chipidea ULPI driver, then it will be dead
code for boards that do not use ULPI.

Currently there are some defconfigs that explicitly select the
chipidea ulpi driver:

arch/arm/configs/qcom_defconfig:CONFIG_USB_CHIPIDEA_ULPI=y
arch/arm64/configs/defconfig:CONFIG_USB_CHIPIDEA_ULPI=y

I would be interested to get feedback whether it would be possible to
fix it on a different way.

Thanks
--
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
Shawn Guo July 3, 2018, 3:40 a.m. UTC | #10
On Mon, Jul 02, 2018 at 11:22:55PM -0300, Fabio Estevam wrote:
> Hi Shawn,
> 
> On Mon, Jul 2, 2018 at 11:06 PM, Shawn Guo <shawnguo@kernel.org> wrote:
> 
> > A second thought on this - shouldn't such dependency be solved by
> > Kconfig select clause?
> 
> I suspect we are not able to fix it via Kconfig as we really don't
> know if a system uses ULPI interface or not via Kconfig perspective.
> 
> If we always select the chipidea ULPI driver, then it will be dead
> code for boards that do not use ULPI.
> 
> Currently there are some defconfigs that explicitly select the
> chipidea ulpi driver:
> 
> arch/arm/configs/qcom_defconfig:CONFIG_USB_CHIPIDEA_ULPI=y
> arch/arm64/configs/defconfig:CONFIG_USB_CHIPIDEA_ULPI=y
> 
> I would be interested to get feedback whether it would be possible to
> fix it on a different way.

We can have the options in defconfig, but they can still be turned off
for whatever reason and we get the hang.  Really, missing a user
selectable option in defconfig shouldn't result in a system hang. 

Shawn
--
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
Fabio Estevam July 3, 2018, 10:52 a.m. UTC | #11
Hi Shawn,

On Tue, Jul 3, 2018 at 12:40 AM, Shawn Guo <shawnguo@kernel.org> wrote:

> We can have the options in defconfig, but they can still be turned off
> for whatever reason and we get the hang.  Really, missing a user
> selectable option in defconfig shouldn't result in a system hang.

Yes, 100% agree and this is exactly what this USB patch is all about :-)

The whole point of this USB patch is not to let the the system to hang
when the defconfig options are turned off.

It will warn the user that CONFIG_USB_CHIPIDEA_ULPI needs to be
selected, will propagate an error, but at least the system will not
hang.

The user will certainly notice the big warning which says "Select
CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode"

Please check the original patch of this thread:
https://patchwork.kernel.org/patch/10486371/
--
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
Shawn Guo July 3, 2018, 12:38 p.m. UTC | #12
On Tue, Jul 03, 2018 at 07:52:07AM -0300, Fabio Estevam wrote:
> Hi Shawn,
> 
> On Tue, Jul 3, 2018 at 12:40 AM, Shawn Guo <shawnguo@kernel.org> wrote:
> 
> > We can have the options in defconfig, but they can still be turned off
> > for whatever reason and we get the hang.  Really, missing a user
> > selectable option in defconfig shouldn't result in a system hang.
> 
> Yes, 100% agree and this is exactly what this USB patch is all about :-)
> 
> The whole point of this USB patch is not to let the the system to hang
> when the defconfig options are turned off.
> 
> It will warn the user that CONFIG_USB_CHIPIDEA_ULPI needs to be
> selected, will propagate an error, but at least the system will not
> hang.
> 
> The user will certainly notice the big warning which says "Select
> CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode"
> 
> Please check the original patch of this thread:
> https://patchwork.kernel.org/patch/10486371/

I'm still not convinced this is the best way to go.  But that's USB
maintainer's call.  I will just apply defconfig patches which shouldn't
hurt anyway.

Shawn
--
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
Peter Chen July 4, 2018, 8:24 a.m. UTC | #13
> On Tue, Jul 3, 2018 at 12:40 AM, Shawn Guo <shawnguo@kernel.org> wrote:

> 

> > We can have the options in defconfig, but they can still be turned off

> > for whatever reason and we get the hang.  Really, missing a user

> > selectable option in defconfig shouldn't result in a system hang.

> 

> Yes, 100% agree and this is exactly what this USB patch is all about :-)

> 

> The whole point of this USB patch is not to let the the system to hang when the

> defconfig options are turned off.

> 

> It will warn the user that CONFIG_USB_CHIPIDEA_ULPI needs to be selected, will

> propagate an error, but at least the system will not hang.

> 

> The user will certainly notice the big warning which says "Select

> CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode"

> 

 


Hi Fabio, Shawn's suggestion seems reasonable.

It seems there is no harm if we always include drivers/usb/chipidea/ulpi.c except increasing
a little code size, how about always build ulpi.c for the whole chipidea at Makefile, delete
CONFIG_USB_CHIPIDEA_ULPI as well, meanwhile, we need to select USB_ULPI_BUS
at Kconfig?

Besides, at function ci_ulpi_resume for ulpi.c, we need to add condition to quit for non-ulpi interface.

Peter
Fabio Estevam July 4, 2018, 1:11 p.m. UTC | #14
Hi Peter,

On Wed, Jul 4, 2018 at 5:24 AM, Peter Chen <peter.chen@nxp.com> wrote:

> It seems there is no harm if we always include drivers/usb/chipidea/ulpi.c except increasing
> a little code size, how about always build ulpi.c for the whole chipidea at Makefile, delete
> CONFIG_USB_CHIPIDEA_ULPI as well, meanwhile, we need to select USB_ULPI_BUS
> at Kconfig?
>
> Besides, at function ci_ulpi_resume for ulpi.c, we need to add condition to quit for non-ulpi interface.

Yes, I sent a v2 letting ulpi.c to be always built-in.
--
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
diff mbox

Patch

diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
index 85fc6db..e7018a1 100644
--- a/drivers/usb/chipidea/core.c
+++ b/drivers/usb/chipidea/core.c
@@ -608,6 +608,17 @@  static int ci_get_platdata(struct device *dev,
 	if (!platdata->phy_mode)
 		platdata->phy_mode = of_usb_get_phy_mode(dev->of_node);
 
+	if (platdata->phy_mode == USBPHY_INTERFACE_MODE_ULPI) {
+		/*
+		 * CONFIG_USB_CHIPIDEA_ULPI needs to be selected
+		 * for proper usage of the ULPI mode
+		 */
+		if (!IS_ENABLED(CONFIG_USB_CHIPIDEA_ULPI)) {
+			WARN_ONCE(1, "Select CONFIG_USB_CHIPIDEA_ULPI in order to use ULPI mode\n");
+			return -EINVAL;
+		}
+	}
+
 	if (!platdata->dr_mode)
 		platdata->dr_mode = usb_get_dr_mode(dev);