Message ID | 20210624184108.21312-2-p.yadav@ti.com |
---|---|
State | Superseded |
Headers | show |
Series | Rx mode support for Cadence DPHY | expand |
Hi, On Fri 25 Jun 21, 00:11, Pratyush Yadav wrote: > From: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > > As some D-PHY controllers support both Rx and Tx mode, we need a way for > users to explicitly request one or the other. For instance, Rx mode can > be used along with MIPI CSI-2 while Tx mode can be used with MIPI DSI. > > Introduce new MIPI D-PHY PHY submodes to use with PHY_MODE_MIPI_DPHY. > The default (zero value) is kept to Tx so only the rkisp1 driver, which > uses D-PHY in Rx mode, needs to be adapted. After some thinking and discussions, it appears that using the submode is probably not the best way to distinguish between rx and tx. This is because rx/tx is more of a specification of the hardware component than a run-time descision. Indeed the D-PHY blocks are usually dedicated to an associated controller (DSI or CSI-2) and thus each instance is either meant for tx or rx use. As a result I will be using the allwinner,direction string property in device-tree instead of the submode, with values of either "rx" or "tx". I suppose you can do something similar if you agree it makes more sense. Cheers, Paul > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > Signed-off-by: Pratyush Yadav <p.yadav@ti.com> > --- > > (no changes since v1) > > include/linux/phy/phy-mipi-dphy.h | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/include/linux/phy/phy-mipi-dphy.h b/include/linux/phy/phy-mipi-dphy.h > index a877ffee845d..0f57ef46a8b5 100644 > --- a/include/linux/phy/phy-mipi-dphy.h > +++ b/include/linux/phy/phy-mipi-dphy.h > @@ -6,6 +6,19 @@ > #ifndef __PHY_MIPI_DPHY_H_ > #define __PHY_MIPI_DPHY_H_ > > +/** > + * enum phy_mipi_dphy_submode - MIPI D-PHY sub-mode > + * > + * A MIPI D-PHY can be used to transmit or receive data. > + * Since some controllers can support both, the direction to enable is specified > + * with the PHY sub-mode. Transmit is assumed by default with phy_set_mode. > + */ > + > +enum phy_mipi_dphy_submode { > + PHY_MIPI_DPHY_SUBMODE_TX = 0, > + PHY_MIPI_DPHY_SUBMODE_RX, > +}; > + > /** > * struct phy_configure_opts_mipi_dphy - MIPI D-PHY configuration set > * > -- > 2.30.0 >
On 06/08/21 01:11PM, Paul Kocialkowski wrote: > Hi, > > On Fri 25 Jun 21, 00:11, Pratyush Yadav wrote: > > From: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > > > > As some D-PHY controllers support both Rx and Tx mode, we need a way for > > users to explicitly request one or the other. For instance, Rx mode can > > be used along with MIPI CSI-2 while Tx mode can be used with MIPI DSI. > > > > Introduce new MIPI D-PHY PHY submodes to use with PHY_MODE_MIPI_DPHY. > > The default (zero value) is kept to Tx so only the rkisp1 driver, which > > uses D-PHY in Rx mode, needs to be adapted. > > After some thinking and discussions, it appears that using the submode is > probably not the best way to distinguish between rx and tx. This is because > rx/tx is more of a specification of the hardware component than a run-time > descision. Indeed the D-PHY blocks are usually dedicated to an associated > controller (DSI or CSI-2) and thus each instance is either meant for tx or > rx use. Ok. IIRC Laurent also brought this point up earlier as well. At that time I took the allwinner DPHY as an example of a DPHY that can run in both modes. The Cadence DPHY also supports both Rx and Tx modes but I don't know if both can be implemented at the same time, if that would even make any sense. > > As a result I will be using the allwinner,direction string property in > device-tree instead of the submode, with values of either "rx" or "tx". > I suppose you can do something similar if you agree it makes more sense. Wouldn't a different compatible a better idea? > > Cheers, > > Paul > > > Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> > > Signed-off-by: Pratyush Yadav <p.yadav@ti.com> > > --- > > > > (no changes since v1) > > > > include/linux/phy/phy-mipi-dphy.h | 13 +++++++++++++ > > 1 file changed, 13 insertions(+) > > > > diff --git a/include/linux/phy/phy-mipi-dphy.h b/include/linux/phy/phy-mipi-dphy.h > > index a877ffee845d..0f57ef46a8b5 100644 > > --- a/include/linux/phy/phy-mipi-dphy.h > > +++ b/include/linux/phy/phy-mipi-dphy.h > > @@ -6,6 +6,19 @@ > > #ifndef __PHY_MIPI_DPHY_H_ > > #define __PHY_MIPI_DPHY_H_ > > > > +/** > > + * enum phy_mipi_dphy_submode - MIPI D-PHY sub-mode > > + * > > + * A MIPI D-PHY can be used to transmit or receive data. > > + * Since some controllers can support both, the direction to enable is specified > > + * with the PHY sub-mode. Transmit is assumed by default with phy_set_mode. > > + */ > > + > > +enum phy_mipi_dphy_submode { > > + PHY_MIPI_DPHY_SUBMODE_TX = 0, > > + PHY_MIPI_DPHY_SUBMODE_RX, > > +}; > > + > > /** > > * struct phy_configure_opts_mipi_dphy - MIPI D-PHY configuration set > > * > > -- > > 2.30.0 > > > > -- > Paul Kocialkowski, Bootlin > Embedded Linux and kernel engineering > https://bootlin.com
diff --git a/include/linux/phy/phy-mipi-dphy.h b/include/linux/phy/phy-mipi-dphy.h index a877ffee845d..0f57ef46a8b5 100644 --- a/include/linux/phy/phy-mipi-dphy.h +++ b/include/linux/phy/phy-mipi-dphy.h @@ -6,6 +6,19 @@ #ifndef __PHY_MIPI_DPHY_H_ #define __PHY_MIPI_DPHY_H_ +/** + * enum phy_mipi_dphy_submode - MIPI D-PHY sub-mode + * + * A MIPI D-PHY can be used to transmit or receive data. + * Since some controllers can support both, the direction to enable is specified + * with the PHY sub-mode. Transmit is assumed by default with phy_set_mode. + */ + +enum phy_mipi_dphy_submode { + PHY_MIPI_DPHY_SUBMODE_TX = 0, + PHY_MIPI_DPHY_SUBMODE_RX, +}; + /** * struct phy_configure_opts_mipi_dphy - MIPI D-PHY configuration set *