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, ryan.eleceng@gmail.com
Subject: Re: [PATCH v5 00/15] Add TPS25750 USB type-C PD controller support
Date: Wed, 20 Sep 2023 11:21:38 -0400 [thread overview]
Message-ID: <ZQsOAi2bkBk8zHMr@primary> (raw)
In-Reply-To: <ZQhXXeVo6LaZe20a@kuha.fi.intel.com>
On Mon, Sep 18, 2023 at 04:57:49PM +0300, Heikki Krogerus wrote:
> On Sun, Sep 17, 2023 at 11:26:24AM -0400, Abdel Alkuor wrote:
> > From: Abdel Alkuor <abdelalkuor@geotab.com>
> >
> > TPS25750 USB type-C PD controller has the same register offsets as
> > tps6598x. The following is a summary of incorporating TPS25750 into
> > TPS6598x driver:
> >
> > - Only Check VID register (0x00) for TPS6598x and cd321x, as TPS25750 doesn't
> > have VID register.
> >
> > - TypeC port registration will be registered differently for each PD
> > controller. TPS6598x uses system configuration register (0x28) to get
> > pr/dr capabilities. On the other hand, TPS25750 will use data role property
> > and PD status register (0x40) to get pr/dr capabilities as TPS25750 doesn't
> > have register 0x28 supported.
> >
> > - TPS25750 requires writing a binary configuration to switch PD
> > controller from PTCH mode to APP mode which needs the following changes:
> > - Add PTCH mode to the modes list.
> > - Add an argument to tps6598x_check_mode to return the current mode.
> > - Currently, tps6598x_exec_cmd has cmd timeout hardcoded to 1 second,
> > and doesn't wait before checking DATA_OUT response. In TPS25750, patch 4CCs
> > take longer than 1 second to execute and some requires a delay before
> > checking DATA_OUT. To accommodate that, cmd_timeout and response_delay will
> > be added as arguments to tps6598x_exec_cmd.
> > - Implement applying patch sequence for TPS25750.
> >
> > - In pm suspend callback, patch mode needs to be checked and the binary
> > configuration should be applied if needed.
> >
> > - For interrupt, TPS25750 has only one event register (0x14) and one mask
> > register (0x16) of 11 bytes each, where TPS6598x has two event
> > and two mask registers of 8 bytes each. Both TPS25750 and TPS65986x
> > shares the same bit field offsets for events/masks/clear but many of
> > there fields are reserved in TPS25750, the following needs to be done in
> > tps6598x_interrupt:
> > - Read EVENT1 register as a block of 11 bytes when tps25750 is present
> > - Write CLEAR1 register as a block of 11 bytes when tps25750 is present
> > - Add trace_tps25750_irq
> > - During testing, I noticed that when a cable is plugged into the PD
> > controller and before PD controller switches to APP mode, there is a
> > lag between dr/pr updates and PlugInsertOrRemoval Event, so a check
> > for dr/pr change needs to be added along TPS_REG_INT_PLUG_EVENT check
> >
> > - Add TPS25750 traces for status and power status registers. Trace for
> > data register won't be added as it doesn't exist in the device.
> >
> > - Configure sleep mode for TPS25750.
>
> This looks mostly okay, but I'm a bit uncomfortable with flags like
> is_tps25750.
>
> I think a better way would be to supply driver data. In it you would
> have a callback for everything that needs to be customised.
>
> struct tipd_data {
> int (*interrupt)(int irq, void *data);
> ...
> };
> ...
> static const struct tipd_data tps25750_data = {
> .interrupt = tps25750_interrupt,
> ...
>
> Something like that. You can on top of that still check
> device_is_compatible(dev, "...") in some places.
>
Sounds good. I will create callbacks factory struct as you suggested
and remove the flag.
>
> thanks,
>
> --
> heikki
Thanks,
Abdel
prev parent reply other threads:[~2023-09-20 15:21 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
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 [this message]
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=ZQsOAi2bkBk8zHMr@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 \
--cc=ryan.eleceng@gmail.com \
/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.