On Tue, 2 May 2023 at 05:43, Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> wrote: > > On 01/05/2023 22:24, Bhupesh Sharma wrote: > > Add support for the new qcm2290 / sm6115 binding. > > > > The USB QMP phy on these devices supports 2 lanes. Also note that the > > binding now does not describe every register subregion and instead > > the driver holds the corresponding offsets. This also includes > > the PCS_MISC region. > > > > Signed-off-by: Bhupesh Sharma <bhupesh.sharma@xxxxxxxxxx> > > --- > > drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 22 ++++++++++++++++++++++ > > 1 file changed, 22 insertions(+) > > > > diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c > > index a49711c5a63d..aa143c081805 100644 > > --- a/drivers/phy/qualcomm/phy-qcom-qmp-usb.c > > +++ b/drivers/phy/qualcomm/phy-qcom-qmp-usb.c > > @@ -1414,6 +1414,10 @@ struct qmp_usb_offsets { > > u16 pcs_usb; > > u16 tx; > > u16 rx; > > + /* for PHYs with >= 2 lanes */ > > + u16 tx2; > > + u16 rx2; > > + u16 pcs_misc; > > }; > > > > /* struct qmp_phy_cfg - per-PHY initialization config */ > > @@ -1558,6 +1562,16 @@ static const char * const qmp_phy_vreg_l[] = { > > "vdda-phy", "vdda-pll", > > }; > > > > +static const struct qmp_usb_offsets qmp_usb_offsets_v3 = { > > + .serdes = 0, > > + .pcs = 0xc00, > > + .tx = 0x200, > > + .rx = 0x400, > > + .tx2 = 0x600, > > + .rx2 = 0x800, > > + .pcs_misc = 0xa00, > > +}; > > + > > static const struct qmp_usb_offsets qmp_usb_offsets_v5 = { > > .serdes = 0, > > .pcs = 0x0200, > > @@ -1922,6 +1936,8 @@ static const struct qmp_phy_cfg sm8350_usb3_uniphy_cfg = { > > static const struct qmp_phy_cfg qcm2290_usb3phy_cfg = { > > .lanes = 2, > > > > + .offsets = &qmp_usb_offsets_v3, > > + > > .serdes_tbl = qcm2290_usb3_serdes_tbl, > > .serdes_tbl_num = ARRAY_SIZE(qcm2290_usb3_serdes_tbl), > > .tx_tbl = qcm2290_usb3_tx_tbl, > > @@ -2497,6 +2513,12 @@ static int qmp_usb_parse_dt(struct qmp_usb *qmp) > > qmp->tx = base + offs->tx; > > qmp->rx = base + offs->rx; > > > > + if (cfg->lanes >= 2) { > > + qmp->tx2 = base + offs->tx2; > > + qmp->rx2 = base + offs->rx2; > > + qmp->pcs_misc = base + offs->pcs_misc; > > pcs_misc should also be usable for a single-lane PHYs. Ok. I will make it generic in the next version. Thanks, Bhupesh