* [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
@ 2026-03-06 22:21 Rosen Penev
2026-03-07 7:21 ` Greg Kroah-Hartman
2026-03-11 14:47 ` Greg Kroah-Hartman
0 siblings, 2 replies; 6+ messages in thread
From: Rosen Penev @ 2026-03-06 22:21 UTC (permalink / raw)
To: linux-usb
Cc: Bryan O'Donoghue, Heikki Krogerus, Greg Kroah-Hartman,
Kees Cook, Gustavo A. R. Silva,
open list:QUALCOMM TYPEC PORT MANAGER DRIVER, open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
Change kzalloc + kcalloc to just kzalloc with a flexible array member.
Add __counted_by for extra runtime analysis when requested.
Shuffle some code in probe to provide a clearer picture.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
.../typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 27 ++++++++-----------
.../typec/tcpm/qcom/qcom_pmic_typec_port.c | 26 ++++++++----------
2 files changed, 22 insertions(+), 31 deletions(-)
diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
index c8b1463e6e8b..4b3915c6894a 100644
--- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
+++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
@@ -95,13 +95,13 @@ struct pmic_typec_pdphy {
struct regmap *regmap;
u32 base;
- unsigned int nr_irqs;
- struct pmic_typec_pdphy_irq_data *irq_data;
-
struct work_struct reset_work;
struct work_struct receive_work;
struct regulator *vdd_pdphy;
spinlock_t lock; /* Register atomicity */
+
+ unsigned int nr_irqs;
+ struct pmic_typec_pdphy_irq_data irq_data[] __counted_by(nr_irqs);
};
static void qcom_pmic_typec_pdphy_reset_on(struct pmic_typec_pdphy *pmic_typec_pdphy)
@@ -560,31 +560,26 @@ int qcom_pmic_typec_pdphy_probe(struct platform_device *pdev,
struct pmic_typec_pdphy_irq_data *irq_data;
int i, ret, irq;
- pmic_typec_pdphy = devm_kzalloc(dev, sizeof(*pmic_typec_pdphy), GFP_KERNEL);
- if (!pmic_typec_pdphy)
- return -ENOMEM;
-
if (!res->nr_irqs || res->nr_irqs > PMIC_PDPHY_MAX_IRQS)
return -EINVAL;
- irq_data = devm_kcalloc(dev, res->nr_irqs, sizeof(*irq_data),
- GFP_KERNEL);
- if (!irq_data)
+ pmic_typec_pdphy = devm_kzalloc(dev, struct_size(pmic_typec_pdphy, irq_data, res->nr_irqs), GFP_KERNEL);
+ if (!pmic_typec_pdphy)
return -ENOMEM;
+ pmic_typec_pdphy->nr_irqs = res->nr_irqs;
+ pmic_typec_pdphy->dev = dev;
+ pmic_typec_pdphy->base = base;
+ pmic_typec_pdphy->regmap = regmap;
pmic_typec_pdphy->vdd_pdphy = devm_regulator_get(dev, "vdd-pdphy");
if (IS_ERR(pmic_typec_pdphy->vdd_pdphy))
return PTR_ERR(pmic_typec_pdphy->vdd_pdphy);
- pmic_typec_pdphy->dev = dev;
- pmic_typec_pdphy->base = base;
- pmic_typec_pdphy->regmap = regmap;
- pmic_typec_pdphy->nr_irqs = res->nr_irqs;
- pmic_typec_pdphy->irq_data = irq_data;
spin_lock_init(&pmic_typec_pdphy->lock);
INIT_WORK(&pmic_typec_pdphy->reset_work, qcom_pmic_typec_pdphy_sig_reset_work);
- for (i = 0; i < res->nr_irqs; i++, irq_data++) {
+ for (i = 0; i < res->nr_irqs; i++) {
+ irq_data = &pmic_typec_pdphy->irq_data[i];
irq = platform_get_irq_byname(pdev, res->irq_params[i].irq_name);
if (irq < 0)
return irq;
diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
index 8051eaa46991..7c5cf8061f04 100644
--- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
+++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
@@ -169,8 +169,6 @@ struct pmic_typec_port {
struct tcpm_port *tcpm_port;
struct regmap *regmap;
u32 base;
- unsigned int nr_irqs;
- struct pmic_typec_port_irq_data *irq_data;
struct regulator *vdd_vbus;
bool vbus_enabled;
@@ -181,6 +179,9 @@ struct pmic_typec_port {
struct delayed_work cc_debounce_dwork;
spinlock_t lock; /* Register atomicity */
+
+ unsigned int nr_irqs;
+ struct pmic_typec_port_irq_data irq_data[] __counted_by(nr_irqs);
};
static const char * const typec_cc_status_name[] = {
@@ -706,29 +707,23 @@ int qcom_pmic_typec_port_probe(struct platform_device *pdev,
struct pmic_typec_port *pmic_typec_port;
int i, ret, irq;
- pmic_typec_port = devm_kzalloc(dev, sizeof(*pmic_typec_port), GFP_KERNEL);
- if (!pmic_typec_port)
- return -ENOMEM;
-
if (!res->nr_irqs || res->nr_irqs > PMIC_TYPEC_MAX_IRQS)
return -EINVAL;
- irq_data = devm_kcalloc(dev, res->nr_irqs, sizeof(*irq_data),
- GFP_KERNEL);
- if (!irq_data)
+ pmic_typec_port = devm_kzalloc(dev, struct_size(pmic_typec_port, irq_data, res->nr_irqs), GFP_KERNEL);
+ if (!pmic_typec_port)
return -ENOMEM;
mutex_init(&pmic_typec_port->vbus_lock);
+ pmic_typec_port->nr_irqs = res->nr_irqs;
+ pmic_typec_port->dev = dev;
+ pmic_typec_port->base = base;
+ pmic_typec_port->regmap = regmap;
pmic_typec_port->vdd_vbus = devm_regulator_get(dev, "vdd-vbus");
if (IS_ERR(pmic_typec_port->vdd_vbus))
return PTR_ERR(pmic_typec_port->vdd_vbus);
- pmic_typec_port->dev = dev;
- pmic_typec_port->base = base;
- pmic_typec_port->regmap = regmap;
- pmic_typec_port->nr_irqs = res->nr_irqs;
- pmic_typec_port->irq_data = irq_data;
spin_lock_init(&pmic_typec_port->lock);
INIT_DELAYED_WORK(&pmic_typec_port->cc_debounce_dwork,
qcom_pmic_typec_port_cc_debounce);
@@ -737,7 +732,8 @@ int qcom_pmic_typec_port_probe(struct platform_device *pdev,
if (irq < 0)
return irq;
- for (i = 0; i < res->nr_irqs; i++, irq_data++) {
+ for (i = 0; i < res->nr_irqs; i++) {
+ irq_data = &pmic_typec_port->irq_data[i];
irq = platform_get_irq_byname(pdev,
res->irq_params[i].irq_name);
if (irq < 0)
--
2.53.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
2026-03-06 22:21 [PATCH] usb: typec: qcom-pmic-typec: simplify allocation Rosen Penev
@ 2026-03-07 7:21 ` Greg Kroah-Hartman
2026-03-07 7:54 ` Rosen Penev
2026-03-11 14:47 ` Greg Kroah-Hartman
1 sibling, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2026-03-07 7:21 UTC (permalink / raw)
To: Rosen Penev
Cc: linux-usb, Bryan O'Donoghue, Heikki Krogerus, Kees Cook,
Gustavo A. R. Silva, open list:QUALCOMM TYPEC PORT MANAGER DRIVER,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
On Fri, Mar 06, 2026 at 02:21:48PM -0800, Rosen Penev wrote:
> Change kzalloc + kcalloc to just kzalloc with a flexible array member.
>
> Add __counted_by for extra runtime analysis when requested.
>
> Shuffle some code in probe to provide a clearer picture.
That's a lot of different things all at once, please do not do that.
Remember, kernel changes need to be "one patch per logical thing".
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
2026-03-07 7:21 ` Greg Kroah-Hartman
@ 2026-03-07 7:54 ` Rosen Penev
0 siblings, 0 replies; 6+ messages in thread
From: Rosen Penev @ 2026-03-07 7:54 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-usb, Bryan O'Donoghue, Heikki Krogerus, Kees Cook,
Gustavo A. R. Silva, open list:QUALCOMM TYPEC PORT MANAGER DRIVER,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
On Fri, Mar 6, 2026 at 11:21 PM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Fri, Mar 06, 2026 at 02:21:48PM -0800, Rosen Penev wrote:
> > Change kzalloc + kcalloc to just kzalloc with a flexible array member.
> >
> > Add __counted_by for extra runtime analysis when requested.
> >
> > Shuffle some code in probe to provide a clearer picture.
>
> That's a lot of different things all at once, please do not do that.
> Remember, kernel changes need to be "one patch per logical thing".
Maybe I overstated it. It's not a huge change. By shuffle I mean move
assignments up, which is partially a requirement of __counted_by
>
> thanks,
>
> greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
2026-03-06 22:21 [PATCH] usb: typec: qcom-pmic-typec: simplify allocation Rosen Penev
2026-03-07 7:21 ` Greg Kroah-Hartman
@ 2026-03-11 14:47 ` Greg Kroah-Hartman
2026-03-11 18:54 ` Rosen Penev
1 sibling, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2026-03-11 14:47 UTC (permalink / raw)
To: Rosen Penev
Cc: linux-usb, Bryan O'Donoghue, Heikki Krogerus, Kees Cook,
Gustavo A. R. Silva, open list:QUALCOMM TYPEC PORT MANAGER DRIVER,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
On Fri, Mar 06, 2026 at 02:21:48PM -0800, Rosen Penev wrote:
> Change kzalloc + kcalloc to just kzalloc with a flexible array member.
>
> Add __counted_by for extra runtime analysis when requested.
>
> Shuffle some code in probe to provide a clearer picture.
>
> Signed-off-by: Rosen Penev <rosenp@gmail.com>
> ---
> .../typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 27 ++++++++-----------
> .../typec/tcpm/qcom/qcom_pmic_typec_port.c | 26 ++++++++----------
> 2 files changed, 22 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> index c8b1463e6e8b..4b3915c6894a 100644
> --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> @@ -95,13 +95,13 @@ struct pmic_typec_pdphy {
> struct regmap *regmap;
> u32 base;
>
> - unsigned int nr_irqs;
> - struct pmic_typec_pdphy_irq_data *irq_data;
> -
> struct work_struct reset_work;
> struct work_struct receive_work;
> struct regulator *vdd_pdphy;
> spinlock_t lock; /* Register atomicity */
> +
> + unsigned int nr_irqs;
> + struct pmic_typec_pdphy_irq_data irq_data[] __counted_by(nr_irqs);
> };
>
> static void qcom_pmic_typec_pdphy_reset_on(struct pmic_typec_pdphy *pmic_typec_pdphy)
> @@ -560,31 +560,26 @@ int qcom_pmic_typec_pdphy_probe(struct platform_device *pdev,
> struct pmic_typec_pdphy_irq_data *irq_data;
> int i, ret, irq;
>
> - pmic_typec_pdphy = devm_kzalloc(dev, sizeof(*pmic_typec_pdphy), GFP_KERNEL);
> - if (!pmic_typec_pdphy)
> - return -ENOMEM;
> -
> if (!res->nr_irqs || res->nr_irqs > PMIC_PDPHY_MAX_IRQS)
> return -EINVAL;
>
> - irq_data = devm_kcalloc(dev, res->nr_irqs, sizeof(*irq_data),
> - GFP_KERNEL);
> - if (!irq_data)
> + pmic_typec_pdphy = devm_kzalloc(dev, struct_size(pmic_typec_pdphy, irq_data, res->nr_irqs), GFP_KERNEL);
extra long line, checkpatch.pl didn't complain about this?
> + if (!pmic_typec_pdphy)
> return -ENOMEM;
>
> + pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> + pmic_typec_pdphy->dev = dev;
> + pmic_typec_pdphy->base = base;
> + pmic_typec_pdphy->regmap = regmap;
> pmic_typec_pdphy->vdd_pdphy = devm_regulator_get(dev, "vdd-pdphy");
> if (IS_ERR(pmic_typec_pdphy->vdd_pdphy))
> return PTR_ERR(pmic_typec_pdphy->vdd_pdphy);
>
> - pmic_typec_pdphy->dev = dev;
> - pmic_typec_pdphy->base = base;
> - pmic_typec_pdphy->regmap = regmap;
> - pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> - pmic_typec_pdphy->irq_data = irq_data;
> spin_lock_init(&pmic_typec_pdphy->lock);
> INIT_WORK(&pmic_typec_pdphy->reset_work, qcom_pmic_typec_pdphy_sig_reset_work);
>
> - for (i = 0; i < res->nr_irqs; i++, irq_data++) {
> + for (i = 0; i < res->nr_irqs; i++) {
> + irq_data = &pmic_typec_pdphy->irq_data[i];
> irq = platform_get_irq_byname(pdev, res->irq_params[i].irq_name);
> if (irq < 0)
> return irq;
> diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> index 8051eaa46991..7c5cf8061f04 100644
> --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
Can you just convert one driver at a time please? This should be a
patch series.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
2026-03-11 14:47 ` Greg Kroah-Hartman
@ 2026-03-11 18:54 ` Rosen Penev
2026-03-12 5:04 ` Greg Kroah-Hartman
0 siblings, 1 reply; 6+ messages in thread
From: Rosen Penev @ 2026-03-11 18:54 UTC (permalink / raw)
To: Greg Kroah-Hartman
Cc: linux-usb, Bryan O'Donoghue, Heikki Krogerus, Kees Cook,
Gustavo A. R. Silva, open list:QUALCOMM TYPEC PORT MANAGER DRIVER,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
On Wed, Mar 11, 2026 at 7:47 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> On Fri, Mar 06, 2026 at 02:21:48PM -0800, Rosen Penev wrote:
> > Change kzalloc + kcalloc to just kzalloc with a flexible array member.
> >
> > Add __counted_by for extra runtime analysis when requested.
> >
> > Shuffle some code in probe to provide a clearer picture.
> >
> > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > ---
> > .../typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 27 ++++++++-----------
> > .../typec/tcpm/qcom/qcom_pmic_typec_port.c | 26 ++++++++----------
> > 2 files changed, 22 insertions(+), 31 deletions(-)
> >
> > diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > index c8b1463e6e8b..4b3915c6894a 100644
> > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > @@ -95,13 +95,13 @@ struct pmic_typec_pdphy {
> > struct regmap *regmap;
> > u32 base;
> >
> > - unsigned int nr_irqs;
> > - struct pmic_typec_pdphy_irq_data *irq_data;
> > -
> > struct work_struct reset_work;
> > struct work_struct receive_work;
> > struct regulator *vdd_pdphy;
> > spinlock_t lock; /* Register atomicity */
> > +
> > + unsigned int nr_irqs;
> > + struct pmic_typec_pdphy_irq_data irq_data[] __counted_by(nr_irqs);
> > };
> >
> > static void qcom_pmic_typec_pdphy_reset_on(struct pmic_typec_pdphy *pmic_typec_pdphy)
> > @@ -560,31 +560,26 @@ int qcom_pmic_typec_pdphy_probe(struct platform_device *pdev,
> > struct pmic_typec_pdphy_irq_data *irq_data;
> > int i, ret, irq;
> >
> > - pmic_typec_pdphy = devm_kzalloc(dev, sizeof(*pmic_typec_pdphy), GFP_KERNEL);
> > - if (!pmic_typec_pdphy)
> > - return -ENOMEM;
> > -
> > if (!res->nr_irqs || res->nr_irqs > PMIC_PDPHY_MAX_IRQS)
> > return -EINVAL;
> >
> > - irq_data = devm_kcalloc(dev, res->nr_irqs, sizeof(*irq_data),
> > - GFP_KERNEL);
> > - if (!irq_data)
> > + pmic_typec_pdphy = devm_kzalloc(dev, struct_size(pmic_typec_pdphy, irq_data, res->nr_irqs), GFP_KERNEL);
>
> extra long line, checkpatch.pl didn't complain about this?
>
> > + if (!pmic_typec_pdphy)
> > return -ENOMEM;
> >
> > + pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> > + pmic_typec_pdphy->dev = dev;
> > + pmic_typec_pdphy->base = base;
> > + pmic_typec_pdphy->regmap = regmap;
> > pmic_typec_pdphy->vdd_pdphy = devm_regulator_get(dev, "vdd-pdphy");
> > if (IS_ERR(pmic_typec_pdphy->vdd_pdphy))
> > return PTR_ERR(pmic_typec_pdphy->vdd_pdphy);
> >
> > - pmic_typec_pdphy->dev = dev;
> > - pmic_typec_pdphy->base = base;
> > - pmic_typec_pdphy->regmap = regmap;
> > - pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> > - pmic_typec_pdphy->irq_data = irq_data;
> > spin_lock_init(&pmic_typec_pdphy->lock);
> > INIT_WORK(&pmic_typec_pdphy->reset_work, qcom_pmic_typec_pdphy_sig_reset_work);
> >
> > - for (i = 0; i < res->nr_irqs; i++, irq_data++) {
> > + for (i = 0; i < res->nr_irqs; i++) {
> > + irq_data = &pmic_typec_pdphy->irq_data[i];
> > irq = platform_get_irq_byname(pdev, res->irq_params[i].irq_name);
> > if (irq < 0)
> > return irq;
> > diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> > index 8051eaa46991..7c5cf8061f04 100644
> > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
>
> Can you just convert one driver at a time please? This should be a
> patch series.
This is not the same driver?
>
> thanks,
>
> greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] usb: typec: qcom-pmic-typec: simplify allocation
2026-03-11 18:54 ` Rosen Penev
@ 2026-03-12 5:04 ` Greg Kroah-Hartman
0 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2026-03-12 5:04 UTC (permalink / raw)
To: Rosen Penev
Cc: linux-usb, Bryan O'Donoghue, Heikki Krogerus, Kees Cook,
Gustavo A. R. Silva, open list:QUALCOMM TYPEC PORT MANAGER DRIVER,
open list,
open list:KERNEL HARDENING (not covered by other areas):Keyword:b__counted_by(_le|_be)?b
On Wed, Mar 11, 2026 at 11:54:55AM -0700, Rosen Penev wrote:
> On Wed, Mar 11, 2026 at 7:47 AM Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > On Fri, Mar 06, 2026 at 02:21:48PM -0800, Rosen Penev wrote:
> > > Change kzalloc + kcalloc to just kzalloc with a flexible array member.
> > >
> > > Add __counted_by for extra runtime analysis when requested.
> > >
> > > Shuffle some code in probe to provide a clearer picture.
> > >
> > > Signed-off-by: Rosen Penev <rosenp@gmail.com>
> > > ---
> > > .../typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 27 ++++++++-----------
> > > .../typec/tcpm/qcom/qcom_pmic_typec_port.c | 26 ++++++++----------
> > > 2 files changed, 22 insertions(+), 31 deletions(-)
> > >
> > > diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > > index c8b1463e6e8b..4b3915c6894a 100644
> > > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c
> > > @@ -95,13 +95,13 @@ struct pmic_typec_pdphy {
> > > struct regmap *regmap;
> > > u32 base;
> > >
> > > - unsigned int nr_irqs;
> > > - struct pmic_typec_pdphy_irq_data *irq_data;
> > > -
> > > struct work_struct reset_work;
> > > struct work_struct receive_work;
> > > struct regulator *vdd_pdphy;
> > > spinlock_t lock; /* Register atomicity */
> > > +
> > > + unsigned int nr_irqs;
> > > + struct pmic_typec_pdphy_irq_data irq_data[] __counted_by(nr_irqs);
> > > };
> > >
> > > static void qcom_pmic_typec_pdphy_reset_on(struct pmic_typec_pdphy *pmic_typec_pdphy)
> > > @@ -560,31 +560,26 @@ int qcom_pmic_typec_pdphy_probe(struct platform_device *pdev,
> > > struct pmic_typec_pdphy_irq_data *irq_data;
> > > int i, ret, irq;
> > >
> > > - pmic_typec_pdphy = devm_kzalloc(dev, sizeof(*pmic_typec_pdphy), GFP_KERNEL);
> > > - if (!pmic_typec_pdphy)
> > > - return -ENOMEM;
> > > -
> > > if (!res->nr_irqs || res->nr_irqs > PMIC_PDPHY_MAX_IRQS)
> > > return -EINVAL;
> > >
> > > - irq_data = devm_kcalloc(dev, res->nr_irqs, sizeof(*irq_data),
> > > - GFP_KERNEL);
> > > - if (!irq_data)
> > > + pmic_typec_pdphy = devm_kzalloc(dev, struct_size(pmic_typec_pdphy, irq_data, res->nr_irqs), GFP_KERNEL);
> >
> > extra long line, checkpatch.pl didn't complain about this?
> >
> > > + if (!pmic_typec_pdphy)
> > > return -ENOMEM;
> > >
> > > + pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> > > + pmic_typec_pdphy->dev = dev;
> > > + pmic_typec_pdphy->base = base;
> > > + pmic_typec_pdphy->regmap = regmap;
> > > pmic_typec_pdphy->vdd_pdphy = devm_regulator_get(dev, "vdd-pdphy");
> > > if (IS_ERR(pmic_typec_pdphy->vdd_pdphy))
> > > return PTR_ERR(pmic_typec_pdphy->vdd_pdphy);
> > >
> > > - pmic_typec_pdphy->dev = dev;
> > > - pmic_typec_pdphy->base = base;
> > > - pmic_typec_pdphy->regmap = regmap;
> > > - pmic_typec_pdphy->nr_irqs = res->nr_irqs;
> > > - pmic_typec_pdphy->irq_data = irq_data;
> > > spin_lock_init(&pmic_typec_pdphy->lock);
> > > INIT_WORK(&pmic_typec_pdphy->reset_work, qcom_pmic_typec_pdphy_sig_reset_work);
> > >
> > > - for (i = 0; i < res->nr_irqs; i++, irq_data++) {
> > > + for (i = 0; i < res->nr_irqs; i++) {
> > > + irq_data = &pmic_typec_pdphy->irq_data[i];
> > > irq = platform_get_irq_byname(pdev, res->irq_params[i].irq_name);
> > > if (irq < 0)
> > > return irq;
> > > diff --git a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> > > index 8051eaa46991..7c5cf8061f04 100644
> > > --- a/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> > > +++ b/drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c
> >
> > Can you just convert one driver at a time please? This should be a
> > patch series.
> This is not the same driver?
It's two different files, with two different structure allocations, so I
assumed it was two different ones. Either way, it should be two
different patches :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-03-12 5:04 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-06 22:21 [PATCH] usb: typec: qcom-pmic-typec: simplify allocation Rosen Penev
2026-03-07 7:21 ` Greg Kroah-Hartman
2026-03-07 7:54 ` Rosen Penev
2026-03-11 14:47 ` Greg Kroah-Hartman
2026-03-11 18:54 ` Rosen Penev
2026-03-12 5:04 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox