* [PATCH 0/4] usb: chipidea: Add support for s32g2 and s32g3
@ 2025-05-28 19:57 Dan Carpenter
2025-05-28 19:57 ` [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag Dan Carpenter
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Dan Carpenter @ 2025-05-28 19:57 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: Conor Dooley, devicetree, Fabio Estevam, imx, Krzysztof Kozlowski,
linux-arm-kernel, linux-kernel, linux-usb, Peng Fan,
Pengutronix Kernel Team, Peter Chen, Rob Herring, Sascha Hauer,
Shawn Guo, Xu Yang, Ghennadi Procopciuc, s32, linaro-s32
This patchset adds support for the s32g2 and s32g3 chips.
Dan Carpenter (4):
dt-bindings: usb: Add compatible strings for s32g2/s32g3
usb: chipidea: usbmisc: s32g: Re-apply init settings during resume
usb: chipidea: s32g: Add usb support for s32g2
usb: chipidea: s32g: Add usb support for s32g3
.../devicetree/bindings/usb/ci-hdrc-usb2.yaml | 2 +
.../devicetree/bindings/usb/fsl,usbmisc.yaml | 2 +
drivers/usb/chipidea/ci_hdrc_imx.c | 6 ++
drivers/usb/chipidea/usbmisc_imx.c | 91 +++++++++++++++++++
4 files changed, 101 insertions(+)
--
2.47.2
^ permalink raw reply [flat|nested] 10+ messages in thread* [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag 2025-05-28 19:57 [PATCH 0/4] usb: chipidea: Add support for s32g2 and s32g3 Dan Carpenter @ 2025-05-28 19:57 ` Dan Carpenter 2025-05-28 21:27 ` Frank Li 2025-05-28 19:57 ` [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 Dan Carpenter 2025-05-28 19:57 ` [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 Dan Carpenter 2 siblings, 1 reply; 10+ messages in thread From: Dan Carpenter @ 2025-05-28 19:57 UTC (permalink / raw) To: Peter Chen Cc: Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> The s32g2 and s32g3 chips will need to re-initialize in the resume path. Add a REINIT_DURING_RESUME flag which will trigger the reinitialization. Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> --- drivers/usb/chipidea/usbmisc_imx.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 118b9a68496b..95759a4ec60c 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -155,6 +155,9 @@ BLKCTL_OTG_VBUS_WAKEUP_EN | \ BLKCTL_OTG_DPDM_WAKEUP_EN) +/* Flags for 'struct imx_usbmisc' */ +#define REINIT_DURING_RESUME BIT(1) + struct usbmisc_ops { /* It's called once when probe a usb device */ int (*init)(struct imx_usbmisc_data *data); @@ -171,6 +174,7 @@ struct usbmisc_ops { /* It's called when system resume from usb power lost */ int (*power_lost_check)(struct imx_usbmisc_data *data); void (*vbus_comparator_on)(struct imx_usbmisc_data *data, bool on); + u32 flags; }; struct imx_usbmisc { @@ -1266,6 +1270,9 @@ int imx_usbmisc_resume(struct imx_usbmisc_data *data, bool wakeup) usbmisc = dev_get_drvdata(data->dev); + if ((usbmisc->ops->flags & REINIT_DURING_RESUME) && usbmisc->ops->init) + usbmisc->ops->init(data); + if (usbmisc->ops->power_lost_check) ret = usbmisc->ops->power_lost_check(data); if (ret > 0) { -- 2.47.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag 2025-05-28 19:57 ` [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag Dan Carpenter @ 2025-05-28 21:27 ` Frank Li 2025-06-02 14:01 ` Dan Carpenter 0 siblings, 1 reply; 10+ messages in thread From: Frank Li @ 2025-05-28 21:27 UTC (permalink / raw) To: Dan Carpenter Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, May 28, 2025 at 10:57:20PM +0300, Dan Carpenter wrote: > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > The s32g2 and s32g3 chips will need to re-initialize in the resume path. > Add a REINIT_DURING_RESUME flag which will trigger the reinitialization. why power_lost_check() doesn't work for you? Frank > > Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> > --- > drivers/usb/chipidea/usbmisc_imx.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c > index 118b9a68496b..95759a4ec60c 100644 > --- a/drivers/usb/chipidea/usbmisc_imx.c > +++ b/drivers/usb/chipidea/usbmisc_imx.c > @@ -155,6 +155,9 @@ > BLKCTL_OTG_VBUS_WAKEUP_EN | \ > BLKCTL_OTG_DPDM_WAKEUP_EN) > > +/* Flags for 'struct imx_usbmisc' */ > +#define REINIT_DURING_RESUME BIT(1) > + > struct usbmisc_ops { > /* It's called once when probe a usb device */ > int (*init)(struct imx_usbmisc_data *data); > @@ -171,6 +174,7 @@ struct usbmisc_ops { > /* It's called when system resume from usb power lost */ > int (*power_lost_check)(struct imx_usbmisc_data *data); > void (*vbus_comparator_on)(struct imx_usbmisc_data *data, bool on); > + u32 flags; > }; > > struct imx_usbmisc { > @@ -1266,6 +1270,9 @@ int imx_usbmisc_resume(struct imx_usbmisc_data *data, bool wakeup) > > usbmisc = dev_get_drvdata(data->dev); > > + if ((usbmisc->ops->flags & REINIT_DURING_RESUME) && usbmisc->ops->init) > + usbmisc->ops->init(data); > + > if (usbmisc->ops->power_lost_check) > ret = usbmisc->ops->power_lost_check(data); > if (ret > 0) { > -- > 2.47.2 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag 2025-05-28 21:27 ` Frank Li @ 2025-06-02 14:01 ` Dan Carpenter 0 siblings, 0 replies; 10+ messages in thread From: Dan Carpenter @ 2025-06-02 14:01 UTC (permalink / raw) To: Frank Li Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, May 28, 2025 at 05:27:00PM -0400, Frank Li wrote: > On Wed, May 28, 2025 at 10:57:20PM +0300, Dan Carpenter wrote: > > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > > > The s32g2 and s32g3 chips will need to re-initialize in the resume path. > > Add a REINIT_DURING_RESUME flag which will trigger the reinitialization. > > why power_lost_check() doesn't work for you? > Yeah. That looks like it should work. Thanks. regards, dan carpenter ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 2025-05-28 19:57 [PATCH 0/4] usb: chipidea: Add support for s32g2 and s32g3 Dan Carpenter 2025-05-28 19:57 ` [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag Dan Carpenter @ 2025-05-28 19:57 ` Dan Carpenter 2025-05-28 21:37 ` Frank Li 2025-05-28 19:57 ` [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 Dan Carpenter 2 siblings, 1 reply; 10+ messages in thread From: Dan Carpenter @ 2025-05-28 19:57 UTC (permalink / raw) To: Peter Chen Cc: Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> Enable USB driver for s32g2. Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> --- drivers/usb/chipidea/ci_hdrc_imx.c | 6 +++ drivers/usb/chipidea/usbmisc_imx.c | 69 ++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index 780f4d151345..ce207f8566d5 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2020 NXP * Copyright (C) 2012 Marek Vasut <marex@denx.de> * on behalf of DENX Software Engineering GmbH */ @@ -78,6 +79,10 @@ static const struct ci_hdrc_imx_platform_flag imx8ulp_usb_data = { CI_HDRC_HAS_PORTSC_PEC_MISSED, }; +static const struct ci_hdrc_imx_platform_flag s32g_usb_data = { + .flags = CI_HDRC_DISABLE_HOST_STREAMING, +}; + static const struct of_device_id ci_hdrc_imx_dt_ids[] = { { .compatible = "fsl,imx23-usb", .data = &imx23_usb_data}, { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data}, @@ -89,6 +94,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { { .compatible = "fsl,imx7d-usb", .data = &imx7d_usb_data}, { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, + { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 95759a4ec60c..43098a150e83 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* * Copyright 2012 Freescale Semiconductor, Inc. + * Copyright 2020 NXP */ #include <linux/module.h> @@ -158,6 +159,18 @@ /* Flags for 'struct imx_usbmisc' */ #define REINIT_DURING_RESUME BIT(1) +#define S32G_WAKEUP_IE BIT(0) +#define S32G_CORE_IE BIT(1) +#define S32G_PWRFLTEN BIT(7) +#define S32G_WAKEUPCTRL BIT(10) +#define S32G_WAKEUPEN BIT(11) + +/* Workaround errata ERR050474 (handle packages that aren't 4 byte aligned) */ +#define S32G_UCMALLBE BIT(15) + +#define S32G_WAKEUP_BITS (S32G_WAKEUP_IE | S32G_CORE_IE | S32G_WAKEUPEN | \ + S32G_WAKEUPCTRL) + struct usbmisc_ops { /* It's called once when probe a usb device */ int (*init)(struct imx_usbmisc_data *data); @@ -618,6 +631,52 @@ static int usbmisc_vf610_init(struct imx_usbmisc_data *data) return 0; } +static int usbmisc_s32g_set_wakeup(struct imx_usbmisc_data *data, bool enabled) +{ + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); + unsigned long flags; + u32 reg; + + spin_lock_irqsave(&usbmisc->lock, flags); + + reg = readl(usbmisc->base); + if (enabled) + reg |= S32G_WAKEUP_BITS; + else + reg &= ~S32G_WAKEUP_BITS; + + writel(reg, usbmisc->base); + spin_unlock_irqrestore(&usbmisc->lock, flags); + + return 0; +} + +static int usbmisc_s32g_init(struct imx_usbmisc_data *data, u32 extra_flags) +{ + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); + unsigned long flags; + u32 reg; + + spin_lock_irqsave(&usbmisc->lock, flags); + + reg = readl(usbmisc->base); + + reg |= S32G_PWRFLTEN; + reg |= extra_flags; + + writel(reg, usbmisc->base); + + spin_unlock_irqrestore(&usbmisc->lock, flags); + usbmisc_s32g_set_wakeup(data, false); + + return 0; +} + +static int usbmisc_s32g2_init(struct imx_usbmisc_data *data) +{ + return usbmisc_s32g_init(data, S32G_UCMALLBE); +} + static int usbmisc_imx7d_set_wakeup (struct imx_usbmisc_data *data, bool enabled) { @@ -1135,6 +1194,12 @@ static const struct usbmisc_ops imx95_usbmisc_ops = { .vbus_comparator_on = usbmisc_imx7d_vbus_comparator_on, }; +static const struct usbmisc_ops s32g2_usbmisc_ops = { + .init = usbmisc_s32g2_init, + .set_wakeup = usbmisc_s32g_set_wakeup, + .flags = REINIT_DURING_RESUME, +}; + static inline bool is_imx53_usbmisc(struct imx_usbmisc_data *data) { struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); @@ -1363,6 +1428,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .compatible = "fsl,imx95-usbmisc", .data = &imx95_usbmisc_ops, }, + { + .compatible = "nxp,s32g2-usbmisc", + .data = &s32g2_usbmisc_ops, + }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, usbmisc_imx_dt_ids); -- 2.47.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 2025-05-28 19:57 ` [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 Dan Carpenter @ 2025-05-28 21:37 ` Frank Li 0 siblings, 0 replies; 10+ messages in thread From: Frank Li @ 2025-05-28 21:37 UTC (permalink / raw) To: Dan Carpenter Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, May 28, 2025 at 10:57:27PM +0300, Dan Carpenter wrote: > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > Enable USB driver for s32g2. > > Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> > --- > drivers/usb/chipidea/ci_hdrc_imx.c | 6 +++ > drivers/usb/chipidea/usbmisc_imx.c | 69 ++++++++++++++++++++++++++++++ > 2 files changed, 75 insertions(+) > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > index 780f4d151345..ce207f8566d5 100644 > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > @@ -1,6 +1,7 @@ > // SPDX-License-Identifier: GPL-2.0+ > /* > * Copyright 2012 Freescale Semiconductor, Inc. > + * Copyright 2020 NXP 2025? Frank > * Copyright (C) 2012 Marek Vasut <marex@denx.de> > * on behalf of DENX Software Engineering GmbH > */ > @@ -78,6 +79,10 @@ static const struct ci_hdrc_imx_platform_flag imx8ulp_usb_data = { > CI_HDRC_HAS_PORTSC_PEC_MISSED, > }; > > +static const struct ci_hdrc_imx_platform_flag s32g_usb_data = { > + .flags = CI_HDRC_DISABLE_HOST_STREAMING, > +}; > + > static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > { .compatible = "fsl,imx23-usb", .data = &imx23_usb_data}, > { .compatible = "fsl,imx28-usb", .data = &imx28_usb_data}, > @@ -89,6 +94,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > { .compatible = "fsl,imx7d-usb", .data = &imx7d_usb_data}, > { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, > { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, > + { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); > diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c > index 95759a4ec60c..43098a150e83 100644 > --- a/drivers/usb/chipidea/usbmisc_imx.c > +++ b/drivers/usb/chipidea/usbmisc_imx.c > @@ -1,6 +1,7 @@ > // SPDX-License-Identifier: GPL-2.0+ > /* > * Copyright 2012 Freescale Semiconductor, Inc. > + * Copyright 2020 NXP > */ > > #include <linux/module.h> > @@ -158,6 +159,18 @@ > /* Flags for 'struct imx_usbmisc' */ > #define REINIT_DURING_RESUME BIT(1) > > +#define S32G_WAKEUP_IE BIT(0) > +#define S32G_CORE_IE BIT(1) > +#define S32G_PWRFLTEN BIT(7) > +#define S32G_WAKEUPCTRL BIT(10) > +#define S32G_WAKEUPEN BIT(11) > + > +/* Workaround errata ERR050474 (handle packages that aren't 4 byte aligned) */ > +#define S32G_UCMALLBE BIT(15) > + > +#define S32G_WAKEUP_BITS (S32G_WAKEUP_IE | S32G_CORE_IE | S32G_WAKEUPEN | \ > + S32G_WAKEUPCTRL) > + > struct usbmisc_ops { > /* It's called once when probe a usb device */ > int (*init)(struct imx_usbmisc_data *data); > @@ -618,6 +631,52 @@ static int usbmisc_vf610_init(struct imx_usbmisc_data *data) > return 0; > } > > +static int usbmisc_s32g_set_wakeup(struct imx_usbmisc_data *data, bool enabled) > +{ > + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); > + unsigned long flags; > + u32 reg; > + > + spin_lock_irqsave(&usbmisc->lock, flags); > + > + reg = readl(usbmisc->base); > + if (enabled) > + reg |= S32G_WAKEUP_BITS; > + else > + reg &= ~S32G_WAKEUP_BITS; > + > + writel(reg, usbmisc->base); > + spin_unlock_irqrestore(&usbmisc->lock, flags); > + > + return 0; > +} > + > +static int usbmisc_s32g_init(struct imx_usbmisc_data *data, u32 extra_flags) > +{ > + struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); > + unsigned long flags; > + u32 reg; > + > + spin_lock_irqsave(&usbmisc->lock, flags); > + > + reg = readl(usbmisc->base); > + > + reg |= S32G_PWRFLTEN; > + reg |= extra_flags; > + > + writel(reg, usbmisc->base); > + > + spin_unlock_irqrestore(&usbmisc->lock, flags); > + usbmisc_s32g_set_wakeup(data, false); > + > + return 0; > +} > + > +static int usbmisc_s32g2_init(struct imx_usbmisc_data *data) > +{ > + return usbmisc_s32g_init(data, S32G_UCMALLBE); > +} > + > static int usbmisc_imx7d_set_wakeup > (struct imx_usbmisc_data *data, bool enabled) > { > @@ -1135,6 +1194,12 @@ static const struct usbmisc_ops imx95_usbmisc_ops = { > .vbus_comparator_on = usbmisc_imx7d_vbus_comparator_on, > }; > > +static const struct usbmisc_ops s32g2_usbmisc_ops = { > + .init = usbmisc_s32g2_init, > + .set_wakeup = usbmisc_s32g_set_wakeup, > + .flags = REINIT_DURING_RESUME, > +}; > + > static inline bool is_imx53_usbmisc(struct imx_usbmisc_data *data) > { > struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); > @@ -1363,6 +1428,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { > .compatible = "fsl,imx95-usbmisc", > .data = &imx95_usbmisc_ops, > }, > + { > + .compatible = "nxp,s32g2-usbmisc", > + .data = &s32g2_usbmisc_ops, > + }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, usbmisc_imx_dt_ids); > -- > 2.47.2 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 2025-05-28 19:57 [PATCH 0/4] usb: chipidea: Add support for s32g2 and s32g3 Dan Carpenter 2025-05-28 19:57 ` [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag Dan Carpenter 2025-05-28 19:57 ` [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 Dan Carpenter @ 2025-05-28 19:57 ` Dan Carpenter 2025-05-28 21:40 ` Frank Li 2 siblings, 1 reply; 10+ messages in thread From: Dan Carpenter @ 2025-05-28 19:57 UTC (permalink / raw) To: Peter Chen Cc: Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> Enable USB driver for the s32g3 USB device. Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> --- drivers/usb/chipidea/ci_hdrc_imx.c | 1 + drivers/usb/chipidea/usbmisc_imx.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c index ce207f8566d5..d062399ce15e 100644 --- a/drivers/usb/chipidea/ci_hdrc_imx.c +++ b/drivers/usb/chipidea/ci_hdrc_imx.c @@ -95,6 +95,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, + { .compatible = "nxp,s32g3-usb", .data = &s32g_usb_data}, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c index 43098a150e83..34fd26faa303 100644 --- a/drivers/usb/chipidea/usbmisc_imx.c +++ b/drivers/usb/chipidea/usbmisc_imx.c @@ -677,6 +677,11 @@ static int usbmisc_s32g2_init(struct imx_usbmisc_data *data) return usbmisc_s32g_init(data, S32G_UCMALLBE); } +static int usbmisc_s32g3_init(struct imx_usbmisc_data *data) +{ + return usbmisc_s32g_init(data, 0); +} + static int usbmisc_imx7d_set_wakeup (struct imx_usbmisc_data *data, bool enabled) { @@ -1200,6 +1205,12 @@ static const struct usbmisc_ops s32g2_usbmisc_ops = { .flags = REINIT_DURING_RESUME, }; +static const struct usbmisc_ops s32g3_usbmisc_ops = { + .init = usbmisc_s32g3_init, + .set_wakeup = usbmisc_s32g_set_wakeup, + .flags = REINIT_DURING_RESUME, +}; + static inline bool is_imx53_usbmisc(struct imx_usbmisc_data *data) { struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); @@ -1432,6 +1443,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { .compatible = "nxp,s32g2-usbmisc", .data = &s32g2_usbmisc_ops, }, + { + .compatible = "nxp,s32g3-usbmisc", + .data = &s32g3_usbmisc_ops, + }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, usbmisc_imx_dt_ids); -- 2.47.2 ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 2025-05-28 19:57 ` [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 Dan Carpenter @ 2025-05-28 21:40 ` Frank Li 2025-06-11 19:17 ` Dan Carpenter 0 siblings, 1 reply; 10+ messages in thread From: Frank Li @ 2025-05-28 21:40 UTC (permalink / raw) To: Dan Carpenter Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, May 28, 2025 at 10:57:39PM +0300, Dan Carpenter wrote: > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > Enable USB driver for the s32g3 USB device. > > Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> > --- > drivers/usb/chipidea/ci_hdrc_imx.c | 1 + > drivers/usb/chipidea/usbmisc_imx.c | 15 +++++++++++++++ > 2 files changed, 16 insertions(+) > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > index ce207f8566d5..d062399ce15e 100644 > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > @@ -95,6 +95,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, > { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, > { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, > + { .compatible = "nxp,s32g3-usb", .data = &s32g_usb_data}, If it is same, suggest compatible string fallback to nxp,s32g2-usb compatible = "nxp,s32g3-usb", "nxp,s32g2-usb". Frank > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, ci_hdrc_imx_dt_ids); > diff --git a/drivers/usb/chipidea/usbmisc_imx.c b/drivers/usb/chipidea/usbmisc_imx.c > index 43098a150e83..34fd26faa303 100644 > --- a/drivers/usb/chipidea/usbmisc_imx.c > +++ b/drivers/usb/chipidea/usbmisc_imx.c > @@ -677,6 +677,11 @@ static int usbmisc_s32g2_init(struct imx_usbmisc_data *data) > return usbmisc_s32g_init(data, S32G_UCMALLBE); > } > > +static int usbmisc_s32g3_init(struct imx_usbmisc_data *data) > +{ > + return usbmisc_s32g_init(data, 0); > +} > + > static int usbmisc_imx7d_set_wakeup > (struct imx_usbmisc_data *data, bool enabled) > { > @@ -1200,6 +1205,12 @@ static const struct usbmisc_ops s32g2_usbmisc_ops = { > .flags = REINIT_DURING_RESUME, > }; > > +static const struct usbmisc_ops s32g3_usbmisc_ops = { > + .init = usbmisc_s32g3_init, > + .set_wakeup = usbmisc_s32g_set_wakeup, > + .flags = REINIT_DURING_RESUME, > +}; > + > static inline bool is_imx53_usbmisc(struct imx_usbmisc_data *data) > { > struct imx_usbmisc *usbmisc = dev_get_drvdata(data->dev); > @@ -1432,6 +1443,10 @@ static const struct of_device_id usbmisc_imx_dt_ids[] = { > .compatible = "nxp,s32g2-usbmisc", > .data = &s32g2_usbmisc_ops, > }, > + { > + .compatible = "nxp,s32g3-usbmisc", > + .data = &s32g3_usbmisc_ops, > + }, > { /* sentinel */ } > }; > MODULE_DEVICE_TABLE(of, usbmisc_imx_dt_ids); > -- > 2.47.2 > ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 2025-05-28 21:40 ` Frank Li @ 2025-06-11 19:17 ` Dan Carpenter 2025-06-11 21:24 ` Frank Li 0 siblings, 1 reply; 10+ messages in thread From: Dan Carpenter @ 2025-06-11 19:17 UTC (permalink / raw) To: Frank Li Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, May 28, 2025 at 05:40:17PM -0400, Frank Li wrote: > On Wed, May 28, 2025 at 10:57:39PM +0300, Dan Carpenter wrote: > > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > > > Enable USB driver for the s32g3 USB device. > > > > Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> > > --- > > drivers/usb/chipidea/ci_hdrc_imx.c | 1 + > > drivers/usb/chipidea/usbmisc_imx.c | 15 +++++++++++++++ > > 2 files changed, 16 insertions(+) > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > > index ce207f8566d5..d062399ce15e 100644 > > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > > @@ -95,6 +95,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > > { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, > > { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, > > { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, > > + { .compatible = "nxp,s32g3-usb", .data = &s32g_usb_data}, > > If it is same, suggest compatible string fallback to nxp,s32g2-usb > > compatible = "nxp,s32g3-usb", "nxp,s32g2-usb". > These are the same, yeah. I'm not sure I understand. Did you mean just add the "nxp,s32g2-usb" string to the driver, and put both the g2 and g3 in the devicetree file? regards, dan carpenter ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 2025-06-11 19:17 ` Dan Carpenter @ 2025-06-11 21:24 ` Frank Li 0 siblings, 0 replies; 10+ messages in thread From: Frank Li @ 2025-06-11 21:24 UTC (permalink / raw) To: Dan Carpenter Cc: Peter Chen, Greg Kroah-Hartman, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, linux-usb, imx, linux-arm-kernel, linux-kernel, Ghennadi Procopciuc, s32, linaro-s32 On Wed, Jun 11, 2025 at 10:17:44PM +0300, Dan Carpenter wrote: > On Wed, May 28, 2025 at 05:40:17PM -0400, Frank Li wrote: > > On Wed, May 28, 2025 at 10:57:39PM +0300, Dan Carpenter wrote: > > > From: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > > > > > Enable USB driver for the s32g3 USB device. > > > > > > Signed-off-by: Ghennadi Procopciuc <ghennadi.procopciuc@nxp.com> > > > Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org> > > > --- > > > drivers/usb/chipidea/ci_hdrc_imx.c | 1 + > > > drivers/usb/chipidea/usbmisc_imx.c | 15 +++++++++++++++ > > > 2 files changed, 16 insertions(+) > > > > > > diff --git a/drivers/usb/chipidea/ci_hdrc_imx.c b/drivers/usb/chipidea/ci_hdrc_imx.c > > > index ce207f8566d5..d062399ce15e 100644 > > > --- a/drivers/usb/chipidea/ci_hdrc_imx.c > > > +++ b/drivers/usb/chipidea/ci_hdrc_imx.c > > > @@ -95,6 +95,7 @@ static const struct of_device_id ci_hdrc_imx_dt_ids[] = { > > > { .compatible = "fsl,imx7ulp-usb", .data = &imx7ulp_usb_data}, > > > { .compatible = "fsl,imx8ulp-usb", .data = &imx8ulp_usb_data}, > > > { .compatible = "nxp,s32g2-usb", .data = &s32g_usb_data}, > > > + { .compatible = "nxp,s32g3-usb", .data = &s32g_usb_data}, > > > > If it is same, suggest compatible string fallback to nxp,s32g2-usb > > > > compatible = "nxp,s32g3-usb", "nxp,s32g2-usb". > > > > These are the same, yeah. I'm not sure I understand. Did you mean just > add the "nxp,s32g2-usb" string to the driver, and put both the g2 and g3 > in the devicetree file? Yes, Frank > > regards, > dan carpenter > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-06-11 22:39 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-05-28 19:57 [PATCH 0/4] usb: chipidea: Add support for s32g2 and s32g3 Dan Carpenter 2025-05-28 19:57 ` [PATCH 2/4] usb: chipidea: usbmisc: s32g: Add a REINIT_DURING_RESUME flag Dan Carpenter 2025-05-28 21:27 ` Frank Li 2025-06-02 14:01 ` Dan Carpenter 2025-05-28 19:57 ` [PATCH 3/4] usb: chipidea: s32g: Add usb support for s32g2 Dan Carpenter 2025-05-28 21:37 ` Frank Li 2025-05-28 19:57 ` [PATCH 4/4] usb: chipidea: s32g: Add usb support for s32g3 Dan Carpenter 2025-05-28 21:40 ` Frank Li 2025-06-11 19:17 ` Dan Carpenter 2025-06-11 21:24 ` Frank Li
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox