From: Abdel Alkuor <alkuor@gmail.com>
To: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Cc: krzysztof.kozlowski+dt@linaro.org, bryan.odonoghue@linaro.org,
gregkh@linuxfoundation.org, robh+dt@kernel.org,
linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
conor+dt@kernel.org, linux-kernel@vger.kernel.org,
abdelalkuor@geotab.com
Subject: Re: [PATCH v5 10/15] USB: typec: Add port registration for tps25750
Date: Wed, 20 Sep 2023 10:53:23 -0400 [thread overview]
Message-ID: <ZQsHY/53tk0KJYUK@primary> (raw)
In-Reply-To: <ZQhJZ82nRCD797lA@kuha.fi.intel.com>
On Mon, Sep 18, 2023 at 03:58:15PM +0300, Heikki Krogerus wrote:
> On Sun, Sep 17, 2023 at 11:26:34AM -0400, Abdel Alkuor wrote:
> > From: Abdel Alkuor <abdelalkuor@geotab.com>
> >
> > TPS25750 doesn't have system configuration register to get dr/pr of the
> > current applied binary configuration.
> >
> > Get data role from the device node and power role from PD status register.
> >
> > Signed-off-by: Abdel Alkuor <abdelalkuor@geotab.com>
> > ---
> > drivers/usb/typec/tipd/core.c | 61 ++++++++++++++++++++++++++++++-
> > drivers/usb/typec/tipd/tps6598x.h | 10 +++++
> > 2 files changed, 70 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c
> > index 8218d88a4a06..a97fda68cb54 100644
> > --- a/drivers/usb/typec/tipd/core.c
> > +++ b/drivers/usb/typec/tipd/core.c
> > @@ -39,6 +39,7 @@
> > #define TPS_REG_CTRL_CONF 0x29
> > #define TPS_REG_BOOT_STATUS 0x2D
> > #define TPS_REG_POWER_STATUS 0x3f
> > +#define TPS_REG_PD_STATUS 0x40
> > #define TPS_REG_RX_IDENTITY_SOP 0x48
> > #define TPS_REG_DATA_STATUS 0x5f
> >
> > @@ -1028,6 +1029,60 @@ tps6598x_register_port(struct tps6598x *tps, struct fwnode_handle *fwnode)
> > return 0;
> > }
> >
> > +static int
> > +tps25750_register_port(struct tps6598x *tps, struct fwnode_handle *fwnode)
> > +{
> > + struct typec_capability typec_cap = { };
> > + const char *data_role;
> > + u8 pd_status;
> > + int ret;
> > +
> > + ret = tps6598x_read8(tps, TPS_REG_PD_STATUS, &pd_status);
> > + if (ret)
> > + return ret;
> > +
> > + ret = fwnode_property_read_string(fwnode, "data-role", &data_role);
> > + if (ret) {
> > + dev_err(tps->dev, "data-role not found: %d\n", ret);
> > + return ret;
> > + }
> > +
> > + ret = typec_find_port_data_role(data_role);
> > + if (ret < 0) {
> > + dev_err(tps->dev, "unknown data-role: %s\n", data_role);
> > + return ret;
> > + }
> > +
> > + typec_cap.data = ret;
> > + typec_cap.revision = USB_TYPEC_REV_1_3;
> > + typec_cap.pd_revision = 0x300;
> > + typec_cap.driver_data = tps;
> > + typec_cap.ops = &tps6598x_ops;
> > + typec_cap.fwnode = fwnode;
> > + typec_cap.prefer_role = TYPEC_NO_PREFERRED_ROLE;
> > +
> > + switch (TPS_PD_STATUS_PORT_TYPE(pd_status)) {
> > + case TPS_PD_STATUS_PORT_TYPE_SINK_SOURCE:
> > + case TPS_PD_STATUS_PORT_TYPE_SOURCE_SINK:
> > + typec_cap.type = TYPEC_PORT_DRP;
> > + break;
> > + case TPS_PD_STATUS_PORT_TYPE_SINK:
> > + typec_cap.type = TYPEC_PORT_SNK;
> > + break;
> > + case TPS_PD_STATUS_PORT_TYPE_SOURCE:
> > + typec_cap.type = TYPEC_PORT_SRC;
> > + break;
> > + default:
> > + return -ENODEV;
> > + }
> > +
> > + tps->port = typec_register_port(tps->dev, &typec_cap);
> > + if (IS_ERR(tps->port))
> > + return PTR_ERR(tps->port);
> > +
> > + return 0;
> > +}
> > +
> > static int tps6598x_probe(struct i2c_client *client)
> > {
> > irq_handler_t irq_handler = tps6598x_interrupt;
> > @@ -1124,7 +1179,11 @@ static int tps6598x_probe(struct i2c_client *client)
> > if (ret)
> > goto err_role_put;
> >
> > - ret = tps6598x_register_port(tps, fwnode);
> > + if (np && of_device_is_compatible(np, "ti,tps25750"))
>
> Why aren't you using is_tps25750 here?
Ops, I missed that. Will be fixed in v6.
>
> > + ret = tps25750_register_port(tps, fwnode);
> > + else
> > + ret = tps6598x_register_port(tps, fwnode);
> > +
> > if (ret)
> > goto err_role_put;
>
> thanks,
>
> --
> heikki
Thanks,
Abdel
next prev parent reply other threads:[~2023-09-20 15:06 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-17 15:26 [PATCH v5 00/15] Add TPS25750 USB type-C PD controller support Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 01/15] dt-bindings: usb: tps6598x: Add tps25750 Abdel Alkuor
2023-09-17 17:30 ` Krzysztof Kozlowski
2023-09-17 19:30 ` Abdel Alkuo
2023-09-17 15:26 ` [PATCH v5 02/15] USB: typec: Add cmd timeout and response delay Abdel Alkuor
2023-09-18 10:44 ` Heikki Krogerus
2023-09-20 14:29 ` Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 03/15] USB: typec: Add patch mode to tps6598x Abdel Alkuor
2023-09-18 11:07 ` Heikki Krogerus
2023-09-20 14:42 ` Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 04/15] USB: typec: Load TPS25750 patch bundle Abdel Alkuor
2023-09-17 17:04 ` kernel test robot
2023-09-17 17:24 ` kernel test robot
2023-09-18 11:31 ` Heikki Krogerus
2023-09-20 14:46 ` Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 05/15] USB: typec: Check for EEPROM present Abdel Alkuor
2023-09-18 12:45 ` Heikki Krogerus
2023-09-20 14:47 ` Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 06/15] USB: typec: Clear dead battery flag Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 07/15] USB: typec: Apply patch again after power resume Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 08/15] USB: typec: Add interrupt support for TPS25750 Abdel Alkuor
2023-09-18 12:46 ` Heikki Krogerus
2023-09-20 14:50 ` Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 09/15] USB: typec: Refactor tps6598x port registration Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 10/15] USB: typec: Add port registration for tps25750 Abdel Alkuor
2023-09-18 12:58 ` Heikki Krogerus
2023-09-20 14:53 ` Abdel Alkuor [this message]
2023-09-17 15:26 ` [PATCH v5 11/15] USB: typec: Enable sleep mode " Abdel Alkuor
2023-09-17 17:32 ` Krzysztof Kozlowski
2023-09-17 15:26 ` [PATCH v5 12/15] USB: typec: Add trace for tps25750 irq Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 13/15] USB: typec: Add power status trace for tps25750 Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 14/15] USB: typec: Add " Abdel Alkuor
2023-09-17 15:26 ` [PATCH v5 15/15] USB: typec: Do not check VID " Abdel Alkuor
2023-09-18 13:29 ` Heikki Krogerus
2023-09-20 15:10 ` Abdel Alkuor
2023-09-18 13:57 ` [PATCH v5 00/15] Add TPS25750 USB type-C PD controller support Heikki Krogerus
2023-09-20 15:21 ` Abdel Alkuor
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZQsHY/53tk0KJYUK@primary \
--to=alkuor@gmail.com \
--cc=abdelalkuor@geotab.com \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=robh+dt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.