Skip to content

Commit

Permalink
extcon: usbc-tusb320: Factor out extcon into dedicated functions
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
  • Loading branch information
Marek Vasut authored and chanwoochoi committed Sep 25, 2022
1 parent 7e18e42 commit 9483811
Showing 1 changed file with 46 additions and 29 deletions.
75 changes: 46 additions & 29 deletions drivers/extcon/extcon-usbc-tusb320.c
Original file line number Diff line number Diff line change
Expand Up @@ -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, &reg)) {
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;
Expand All @@ -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, &reg)) {
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);

Expand All @@ -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;
Expand All @@ -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)
Expand All @@ -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);
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit 9483811

Please sign in to comment.