We use phy_set_bus_width() to set the lane rate that the PHY supports.
The controller driver may then use phy_get_bus_width() to fetch the
PHY lane rate in order to properly configure the controller.
Change-Id: I116f0d82ad187806914c0d566eab92b922f143ef
Signed-off-by: WeiYong Bi <bivvy.bi@rock-chips.com>
struct inno_mipi_dphy {
struct device *dev;
struct inno_mipi_dphy {
struct device *dev;
void __iomem *regs;
struct clk *ref_clk;
struct clk *pclk;
void __iomem *regs;
struct clk *ref_clk;
struct clk *pclk;
- inno->lane_mbps = pllref / prediv * fbdiv;
+ inno->lane_mbps = pllref * fbdiv / prediv;
+ phy_set_bus_width(inno->phy, inno->lane_mbps);
mask = M_FBDIV_8 | M_PREDIV;
val = V_FBDIV_8(fbdiv >> 8) | V_PREDIV(prediv);
mask = M_FBDIV_8 | M_PREDIV;
val = V_FBDIV_8(fbdiv >> 8) | V_PREDIV(prediv);
{
struct device_node *np = pdev->dev.of_node;
struct inno_mipi_dphy *inno;
{
struct device_node *np = pdev->dev.of_node;
struct inno_mipi_dphy *inno;
struct phy_provider *phy_provider;
struct resource *res;
int ret;
struct phy_provider *phy_provider;
struct resource *res;
int ret;
- phy = devm_phy_create(&pdev->dev, NULL, &inno_mipi_dphy_ops);
- if (IS_ERR(phy)) {
+ inno->phy = devm_phy_create(&pdev->dev, NULL, &inno_mipi_dphy_ops);
+ if (IS_ERR(inno->phy)) {
dev_err(&pdev->dev, "failed to create MIPI D-PHY\n");
dev_err(&pdev->dev, "failed to create MIPI D-PHY\n");
+ return PTR_ERR(inno->phy);
- phy_set_drvdata(phy, inno);
+ phy_set_drvdata(inno->phy, inno);
phy_provider = devm_of_phy_provider_register(&pdev->dev,
of_phy_simple_xlate);
phy_provider = devm_of_phy_provider_register(&pdev->dev,
of_phy_simple_xlate);