Message ID | 20220730180500.152004-1-marex@denx.de |
---|---|
State | New |
Headers | show |
Series | [1/2] extcon: usbc-tusb320: Factor out extcon into dedicated functions | expand |
On Sat, Jul 30, 2022 at 08:04:59PM +0200, Marek Vasut wrote: > Move extcon code into separate functions in preparation for addition of > USB TYPE-C support. No functional change. > > Signed-off-by: Marek Vasut <marex@denx.de> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > Cc: Chanwoo Choi <cw00.choi@samsung.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> > Cc: Yassine Oudjana <y.oudjana@protonmail.com> > To: linux-usb@vger.kernel.org > --- > drivers/extcon/extcon-usbc-tusb320.c | 75 +++++++++++++++++----------- > 1 file changed, 46 insertions(+), 29 deletions(-) > > diff --git a/drivers/extcon/extcon-usbc-tusb320.c b/drivers/extcon/extcon-usbc-tusb320.c > index 6ba3d89b106d0..aced4bbb455dc 100644 > --- a/drivers/extcon/extcon-usbc-tusb320.c > +++ b/drivers/extcon/extcon-usbc-tusb320.c > @@ -184,19 +184,9 @@ static struct tusb320_ops tusb320l_ops = { > .get_revision = tusb320l_get_revision, > }; > > -static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > +static void tusb320_extcon_irq_handler(struct tusb320_priv *priv, u8 reg) > { > - struct tusb320_priv *priv = dev_id; > int state, polarity; > - unsigned reg; > - > - if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { > - dev_err(priv->dev, "error during i2c read!\n"); > - return IRQ_NONE; > - } > - > - if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) > - return IRQ_NONE; > > state = (reg >> TUSB320_REG9_ATTACHED_STATE_SHIFT) & > TUSB320_REG9_ATTACHED_STATE_MASK; > @@ -219,6 +209,22 @@ static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > extcon_sync(priv->edev, EXTCON_USB_HOST); > > priv->state = state; > +} > + > +static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > +{ > + struct tusb320_priv *priv = dev_id; > + unsigned int reg; > + > + if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { > + dev_err(priv->dev, "error during i2c read!\n"); > + return IRQ_NONE; > + } > + > + if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) > + return IRQ_NONE; > + > + tusb320_extcon_irq_handler(priv, reg); > > regmap_write(priv->regmap, TUSB320_REG9, reg); > > @@ -230,8 +236,32 @@ static const struct regmap_config tusb320_regmap_config = { > .val_bits = 8, > }; > > -static int tusb320_extcon_probe(struct i2c_client *client, > - const struct i2c_device_id *id) > +static int tusb320_extcon_probe(struct tusb320_priv *priv) > +{ > + int ret; > + > + priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); > + if (IS_ERR(priv->edev)) { > + dev_err(priv->dev, "failed to allocate extcon device\n"); > + return PTR_ERR(priv->edev); > + } > + > + ret = devm_extcon_dev_register(priv->dev, priv->edev); > + if (ret < 0) { > + dev_err(priv->dev, "failed to register extcon device\n"); > + return ret; > + } > + > + extcon_set_property_capability(priv->edev, EXTCON_USB, > + EXTCON_PROP_USB_TYPEC_POLARITY); > + extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, > + EXTCON_PROP_USB_TYPEC_POLARITY); > + > + return 0; > +} > + > +static int tusb320_probe(struct i2c_client *client, > + const struct i2c_device_id *id) > { > struct tusb320_priv *priv; > const void *match_data; > @@ -257,12 +287,6 @@ static int tusb320_extcon_probe(struct i2c_client *client, > > priv->ops = (struct tusb320_ops*)match_data; > > - priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); > - if (IS_ERR(priv->edev)) { > - dev_err(priv->dev, "failed to allocate extcon device\n"); > - return PTR_ERR(priv->edev); > - } > - > if (priv->ops->get_revision) { > ret = priv->ops->get_revision(priv, &revision); > if (ret) > @@ -272,16 +296,9 @@ static int tusb320_extcon_probe(struct i2c_client *client, > dev_info(priv->dev, "chip revision %d\n", revision); > } > > - ret = devm_extcon_dev_register(priv->dev, priv->edev); > - if (ret < 0) { > - dev_err(priv->dev, "failed to register extcon device\n"); > + ret = tusb320_extcon_probe(priv); > + if (ret) > return ret; > - } > - > - extcon_set_property_capability(priv->edev, EXTCON_USB, > - EXTCON_PROP_USB_TYPEC_POLARITY); > - extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, > - EXTCON_PROP_USB_TYPEC_POLARITY); > > /* update initial state */ > tusb320_irq_handler(client->irq, priv); > @@ -313,7 +330,7 @@ static const struct of_device_id tusb320_extcon_dt_match[] = { > MODULE_DEVICE_TABLE(of, tusb320_extcon_dt_match); > > static struct i2c_driver tusb320_extcon_driver = { > - .probe = tusb320_extcon_probe, > + .probe = tusb320_probe, > .driver = { > .name = "extcon-tusb320", > .of_match_table = tusb320_extcon_dt_match, > -- > 2.35.1
On 22. 7. 31. 03:04, Marek Vasut wrote: > Move extcon code into separate functions in preparation for addition of > USB TYPE-C support. No functional change. > > Signed-off-by: Marek Vasut <marex@denx.de> > --- > Cc: Chanwoo Choi <cw00.choi@samsung.com> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> > Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> > Cc: Yassine Oudjana <y.oudjana@protonmail.com> > To: linux-usb@vger.kernel.org > --- > drivers/extcon/extcon-usbc-tusb320.c | 75 +++++++++++++++++----------- > 1 file changed, 46 insertions(+), 29 deletions(-) > > diff --git a/drivers/extcon/extcon-usbc-tusb320.c b/drivers/extcon/extcon-usbc-tusb320.c > index 6ba3d89b106d0..aced4bbb455dc 100644 > --- a/drivers/extcon/extcon-usbc-tusb320.c > +++ b/drivers/extcon/extcon-usbc-tusb320.c > @@ -184,19 +184,9 @@ static struct tusb320_ops tusb320l_ops = { > .get_revision = tusb320l_get_revision, > }; > > -static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > +static void tusb320_extcon_irq_handler(struct tusb320_priv *priv, u8 reg) > { > - struct tusb320_priv *priv = dev_id; > int state, polarity; > - unsigned reg; > - > - if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { > - dev_err(priv->dev, "error during i2c read!\n"); > - return IRQ_NONE; > - } > - > - if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) > - return IRQ_NONE; > > state = (reg >> TUSB320_REG9_ATTACHED_STATE_SHIFT) & > TUSB320_REG9_ATTACHED_STATE_MASK; > @@ -219,6 +209,22 @@ static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > extcon_sync(priv->edev, EXTCON_USB_HOST); > > priv->state = state; > +} > + > +static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) > +{ > + struct tusb320_priv *priv = dev_id; > + unsigned int reg; > + > + if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { > + dev_err(priv->dev, "error during i2c read!\n"); > + return IRQ_NONE; > + } > + > + if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) > + return IRQ_NONE; > + > + tusb320_extcon_irq_handler(priv, reg); > > regmap_write(priv->regmap, TUSB320_REG9, reg); > > @@ -230,8 +236,32 @@ static const struct regmap_config tusb320_regmap_config = { > .val_bits = 8, > }; > > -static int tusb320_extcon_probe(struct i2c_client *client, > - const struct i2c_device_id *id) > +static int tusb320_extcon_probe(struct tusb320_priv *priv) > +{ > + int ret; > + > + priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); > + if (IS_ERR(priv->edev)) { > + dev_err(priv->dev, "failed to allocate extcon device\n"); > + return PTR_ERR(priv->edev); > + } > + > + ret = devm_extcon_dev_register(priv->dev, priv->edev); > + if (ret < 0) { > + dev_err(priv->dev, "failed to register extcon device\n"); > + return ret; > + } > + > + extcon_set_property_capability(priv->edev, EXTCON_USB, > + EXTCON_PROP_USB_TYPEC_POLARITY); > + extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, > + EXTCON_PROP_USB_TYPEC_POLARITY); > + > + return 0; > +} > + > +static int tusb320_probe(struct i2c_client *client, > + const struct i2c_device_id *id) > { > struct tusb320_priv *priv; > const void *match_data; > @@ -257,12 +287,6 @@ static int tusb320_extcon_probe(struct i2c_client *client, > > priv->ops = (struct tusb320_ops*)match_data; > > - priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); > - if (IS_ERR(priv->edev)) { > - dev_err(priv->dev, "failed to allocate extcon device\n"); > - return PTR_ERR(priv->edev); > - } > - > if (priv->ops->get_revision) { > ret = priv->ops->get_revision(priv, &revision); > if (ret) > @@ -272,16 +296,9 @@ static int tusb320_extcon_probe(struct i2c_client *client, > dev_info(priv->dev, "chip revision %d\n", revision); > } > > - ret = devm_extcon_dev_register(priv->dev, priv->edev); > - if (ret < 0) { > - dev_err(priv->dev, "failed to register extcon device\n"); > + ret = tusb320_extcon_probe(priv); > + if (ret) > return ret; > - } > - > - extcon_set_property_capability(priv->edev, EXTCON_USB, > - EXTCON_PROP_USB_TYPEC_POLARITY); > - extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, > - EXTCON_PROP_USB_TYPEC_POLARITY); > > /* update initial state */ > tusb320_irq_handler(client->irq, priv); > @@ -313,7 +330,7 @@ static const struct of_device_id tusb320_extcon_dt_match[] = { > MODULE_DEVICE_TABLE(of, tusb320_extcon_dt_match); > > static struct i2c_driver tusb320_extcon_driver = { > - .probe = tusb320_extcon_probe, > + .probe = tusb320_probe, > .driver = { > .name = "extcon-tusb320", > .of_match_table = tusb320_extcon_dt_match, Applied it. Thanks.
diff --git a/drivers/extcon/extcon-usbc-tusb320.c b/drivers/extcon/extcon-usbc-tusb320.c index 6ba3d89b106d0..aced4bbb455dc 100644 --- a/drivers/extcon/extcon-usbc-tusb320.c +++ b/drivers/extcon/extcon-usbc-tusb320.c @@ -184,19 +184,9 @@ static struct tusb320_ops tusb320l_ops = { .get_revision = tusb320l_get_revision, }; -static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) +static void tusb320_extcon_irq_handler(struct tusb320_priv *priv, u8 reg) { - struct tusb320_priv *priv = dev_id; int state, polarity; - unsigned reg; - - if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { - dev_err(priv->dev, "error during i2c read!\n"); - return IRQ_NONE; - } - - if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) - return IRQ_NONE; state = (reg >> TUSB320_REG9_ATTACHED_STATE_SHIFT) & TUSB320_REG9_ATTACHED_STATE_MASK; @@ -219,6 +209,22 @@ static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) extcon_sync(priv->edev, EXTCON_USB_HOST); priv->state = state; +} + +static irqreturn_t tusb320_irq_handler(int irq, void *dev_id) +{ + struct tusb320_priv *priv = dev_id; + unsigned int reg; + + if (regmap_read(priv->regmap, TUSB320_REG9, ®)) { + dev_err(priv->dev, "error during i2c read!\n"); + return IRQ_NONE; + } + + if (!(reg & TUSB320_REG9_INTERRUPT_STATUS)) + return IRQ_NONE; + + tusb320_extcon_irq_handler(priv, reg); regmap_write(priv->regmap, TUSB320_REG9, reg); @@ -230,8 +236,32 @@ static const struct regmap_config tusb320_regmap_config = { .val_bits = 8, }; -static int tusb320_extcon_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int tusb320_extcon_probe(struct tusb320_priv *priv) +{ + int ret; + + priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); + if (IS_ERR(priv->edev)) { + dev_err(priv->dev, "failed to allocate extcon device\n"); + return PTR_ERR(priv->edev); + } + + ret = devm_extcon_dev_register(priv->dev, priv->edev); + if (ret < 0) { + dev_err(priv->dev, "failed to register extcon device\n"); + return ret; + } + + extcon_set_property_capability(priv->edev, EXTCON_USB, + EXTCON_PROP_USB_TYPEC_POLARITY); + extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, + EXTCON_PROP_USB_TYPEC_POLARITY); + + return 0; +} + +static int tusb320_probe(struct i2c_client *client, + const struct i2c_device_id *id) { struct tusb320_priv *priv; const void *match_data; @@ -257,12 +287,6 @@ static int tusb320_extcon_probe(struct i2c_client *client, priv->ops = (struct tusb320_ops*)match_data; - priv->edev = devm_extcon_dev_allocate(priv->dev, tusb320_extcon_cable); - if (IS_ERR(priv->edev)) { - dev_err(priv->dev, "failed to allocate extcon device\n"); - return PTR_ERR(priv->edev); - } - if (priv->ops->get_revision) { ret = priv->ops->get_revision(priv, &revision); if (ret) @@ -272,16 +296,9 @@ static int tusb320_extcon_probe(struct i2c_client *client, dev_info(priv->dev, "chip revision %d\n", revision); } - ret = devm_extcon_dev_register(priv->dev, priv->edev); - if (ret < 0) { - dev_err(priv->dev, "failed to register extcon device\n"); + ret = tusb320_extcon_probe(priv); + if (ret) return ret; - } - - extcon_set_property_capability(priv->edev, EXTCON_USB, - EXTCON_PROP_USB_TYPEC_POLARITY); - extcon_set_property_capability(priv->edev, EXTCON_USB_HOST, - EXTCON_PROP_USB_TYPEC_POLARITY); /* update initial state */ tusb320_irq_handler(client->irq, priv); @@ -313,7 +330,7 @@ static const struct of_device_id tusb320_extcon_dt_match[] = { MODULE_DEVICE_TABLE(of, tusb320_extcon_dt_match); static struct i2c_driver tusb320_extcon_driver = { - .probe = tusb320_extcon_probe, + .probe = tusb320_probe, .driver = { .name = "extcon-tusb320", .of_match_table = tusb320_extcon_dt_match,
Move extcon code into separate functions in preparation for addition of USB TYPE-C support. No functional change. Signed-off-by: Marek Vasut <marex@denx.de> --- Cc: Chanwoo Choi <cw00.choi@samsung.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Heikki Krogerus <heikki.krogerus@linux.intel.com> Cc: Yassine Oudjana <y.oudjana@protonmail.com> To: linux-usb@vger.kernel.org --- drivers/extcon/extcon-usbc-tusb320.c | 75 +++++++++++++++++----------- 1 file changed, 46 insertions(+), 29 deletions(-)