On 21/01/19 9:15 PM, Maxime Ripard wrote: > Hi, > > Here is a set of patches to allow the phy framework consumers to test and > apply runtime configurations. > > This is needed to support more phy classes that require tuning based on > parameters depending on the current use case of the device, in addition to > the power state management already provided by the current functions. > > A first test bed for that API are the MIPI D-PHY devices. There's a number > of solutions that have been used so far to support these phy, most of the > time being an ad-hoc driver in the consumer. > > That approach has a big shortcoming though, which is that this is quite > difficult to deal with consumers integrated with multiple variants of phy, > of multiple consumers integrated with the same phy. > > The latter case can be found in the Cadence DSI bridge, and the CSI > transceiver and receivers. All of them are integrated with the same phy, or > can be integrated with different phy, depending on the implementation. > > I've looked at all the MIPI DSI drivers I could find, and gathered all the > parameters I could find. The interface should be complete, and most of the > drivers can be converted in the future. The current set converts two of > them: the above mentionned Cadence DSI driver so that the v4l2 drivers can > use them, and the Allwinner MIPI-DSI driver. Can the PHY changes go independently of the consumer drivers? or else I'll need ACKs from the GPU MAINTAINER. Thanks Kishon > > Let me know what you think, > Maxime > > Changes from v4: > - Removed regression on the variable calculation > - Fixed the wakeup unit > - Collected Sean Acked-by on the last patch > - Collected Sakari Reviewed-by on the first patch > > Changes from v3 > - Rebased on 5.0-rc1 > - Added the fixes suggested by Sakari > > Changes from v2: > - Rebased on next > - Changed the interface to accomodate for the new submodes > - Changed the timings units from nanoseconds to picoseconds > - Added minimum and maximum boundaries to the documentation > - Moved the clock enabling to phy_power_on in the Cadence DPHY driver > - Exported the phy_configure and phy_validate symbols > - Rework the phy pll divider computation in the cadence dphy driver > > Changes from v1: > - Rebased on top of 4.20-rc1 > - Removed the bus mode and timings parameters from the MIPI D-PHY > parameters, since that shouldn't have any impact on the PHY itself. > - Reworked the Cadence DSI and D-PHY drivers to take this into account. > - Remove the mode parameter from phy_configure > - Added phy_configure and phy_validate stubs > - Return -EOPNOTSUPP in phy_configure and phy_validate when the operation > is not implemented > > Maxime Ripard (9): > phy: dphy: Remove unused header > phy: dphy: Change units of wakeup and init parameters > phy: dphy: Clarify lanes parameter documentation > sun6i: dsi: Convert to generic phy handling > phy: Move Allwinner A31 D-PHY driver to drivers/phy/ > drm/bridge: cdns: Separate DSI and D-PHY configuration > dt-bindings: phy: Move the Cadence D-PHY bindings > phy: Add Cadence D-PHY support > drm/bridge: cdns: Convert to phy framework > > Documentation/devicetree/bindings/display/bridge/cdns,dsi.txt | 21 +- > Documentation/devicetree/bindings/phy/cdns,dphy.txt | 20 +- > drivers/gpu/drm/bridge/Kconfig | 1 +- > drivers/gpu/drm/bridge/cdns-dsi.c | 538 +------ > drivers/gpu/drm/sun4i/Kconfig | 3 +- > drivers/gpu/drm/sun4i/Makefile | 5 +- > drivers/gpu/drm/sun4i/sun6i_mipi_dphy.c | 292 +---- > drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 31 +- > drivers/gpu/drm/sun4i/sun6i_mipi_dsi.h | 17 +- > drivers/phy/allwinner/Kconfig | 12 +- > drivers/phy/allwinner/Makefile | 1 +- > drivers/phy/allwinner/phy-sun6i-mipi-dphy.c | 318 ++++- > drivers/phy/cadence/Kconfig | 13 +- > drivers/phy/cadence/Makefile | 1 +- > drivers/phy/cadence/cdns-dphy.c | 389 +++++- > drivers/phy/phy-core-mipi-dphy.c | 8 +- > include/linux/phy/phy-mipi-dphy.h | 13 +- > 17 files changed, 894 insertions(+), 789 deletions(-) > create mode 100644 Documentation/devicetree/bindings/phy/cdns,dphy.txt > delete mode 100644 drivers/gpu/drm/sun4i/sun6i_mipi_dphy.c > create mode 100644 drivers/phy/allwinner/phy-sun6i-mipi-dphy.c > create mode 100644 drivers/phy/cadence/cdns-dphy.c > > base-commit: bfeffd155283772bbe78c6a05dec7c0128ee500c >