phy: Add LVDS configuration options
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2071844 Depends: https://bugzilla.redhat.com/show_bug.cgi?id=2121508 Tested: This is one of a series of patch sets to enable Arm SystemReady IR support in the kernel for NXP i.MX8 platforms. This set cleans up PHY handling for imx8m (and Tegra) in drivers/phy. This set has been tested via simple boot tests, and of course the CI loop. If the PHYs are not working, their devices aren't; everything appears to be working just fine. commit 3abfaefb9a6dda5e0bfa6160f55abfd0e32d8b0a Author: Liu Ying <victor.liu@nxp.com> Date: Tue Apr 19 09:08:49 2022 +0800 phy: Add LVDS configuration options This patch allows LVDS PHYs to be configured through the generic functions and through a custom structure added to the generic union. The parameters added here are based on common LVDS PHY implementation practices. The set of parameters should cover all potential users. Cc: Kishon Vijay Abraham I <kishon@ti.com> Cc: Vinod Koul <vkoul@kernel.org> Cc: NXP Linux Team <linux-imx@nxp.com> Signed-off-by: Liu Ying <victor.liu@nxp.com> Link: https://lore.kernel.org/r/20220419010852.452169-3-victor.liu@nxp.com Signed-off-by: Vinod Koul <vkoul@kernel.org> (cherry picked from commit 3abfaefb9a6dda5e0bfa6160f55abfd0e32d8b0a) Signed-off-by: Al Stone <ahs3@redhat.com>
This commit is contained in:
parent
ece409e71a
commit
9f33cb631c
|
@ -0,0 +1,32 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright 2020,2022 NXP
|
||||
*/
|
||||
|
||||
#ifndef __PHY_LVDS_H_
|
||||
#define __PHY_LVDS_H_
|
||||
|
||||
/**
|
||||
* struct phy_configure_opts_lvds - LVDS configuration set
|
||||
* @bits_per_lane_and_dclk_cycle: Number of bits per lane per differential
|
||||
* clock cycle.
|
||||
* @differential_clk_rate: Clock rate, in Hertz, of the LVDS
|
||||
* differential clock.
|
||||
* @lanes: Number of active, consecutive,
|
||||
* data lanes, starting from lane 0,
|
||||
* used for the transmissions.
|
||||
* @is_slave: Boolean, true if the phy is a slave
|
||||
* which works together with a master
|
||||
* phy to support dual link transmission,
|
||||
* otherwise a regular phy or a master phy.
|
||||
*
|
||||
* This structure is used to represent the configuration state of a LVDS phy.
|
||||
*/
|
||||
struct phy_configure_opts_lvds {
|
||||
unsigned int bits_per_lane_and_dclk_cycle;
|
||||
unsigned long differential_clk_rate;
|
||||
unsigned int lanes;
|
||||
bool is_slave;
|
||||
};
|
||||
|
||||
#endif /* __PHY_LVDS_H_ */
|
|
@ -17,6 +17,7 @@
|
|||
#include <linux/regulator/consumer.h>
|
||||
|
||||
#include <linux/phy/phy-dp.h>
|
||||
#include <linux/phy/phy-lvds.h>
|
||||
#include <linux/phy/phy-mipi-dphy.h>
|
||||
|
||||
struct phy;
|
||||
|
@ -57,10 +58,13 @@ enum phy_media {
|
|||
* the MIPI_DPHY phy mode.
|
||||
* @dp: Configuration set applicable for phys supporting
|
||||
* the DisplayPort protocol.
|
||||
* @lvds: Configuration set applicable for phys supporting
|
||||
* the LVDS phy mode.
|
||||
*/
|
||||
union phy_configure_opts {
|
||||
struct phy_configure_opts_mipi_dphy mipi_dphy;
|
||||
struct phy_configure_opts_dp dp;
|
||||
struct phy_configure_opts_lvds lvds;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue