Hi Stephen, want me to resend adding all Reviewed-By? Best regards, Alexander Am Dienstag, 10. Januar 2023, 11:00:00 CET schrieb Alexander Stein: > This is in preparation to support additional devices which have different > IDs as well as a slightly different register layout. > > Signed-off-by: Alexander Stein <alexander.stein@xxxxxxxxxxxxxxx> > --- > Changes in v2: > * Use dev_err_probe to include return statement in one line > > drivers/clk/clk-renesas-pcie.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/clk/clk-renesas-pcie.c b/drivers/clk/clk-renesas-pcie.c > index e6247141d0c05..bba09a88c2ccc 100644 > --- a/drivers/clk/clk-renesas-pcie.c > +++ b/drivers/clk/clk-renesas-pcie.c > @@ -45,6 +45,13 @@ > #define RS9_REG_DID 0x6 > #define RS9_REG_BCP 0x7 > > +#define RS9_REG_VID_IDT 0x01 > + > +#define RS9_REG_DID_TYPE_FGV (0x0 << RS9_REG_DID_TYPE_SHIFT) > +#define RS9_REG_DID_TYPE_DBV (0x1 << RS9_REG_DID_TYPE_SHIFT) > +#define RS9_REG_DID_TYPE_DMV (0x2 << RS9_REG_DID_TYPE_SHIFT) > +#define RS9_REG_DID_TYPE_SHIFT 0x6 > + > /* Supported Renesas 9-series models. */ > enum rs9_model { > RENESAS_9FGV0241, > @@ -54,6 +61,7 @@ enum rs9_model { > struct rs9_chip_info { > const enum rs9_model model; > unsigned int num_clks; > + u8 did; > }; > > struct rs9_driver_data { > @@ -270,6 +278,7 @@ static int rs9_probe(struct i2c_client *client) > { > unsigned char name[5] = "DIF0"; > struct rs9_driver_data *rs9; > + unsigned int vid, did; > struct clk_hw *hw; > int i, ret; > > @@ -306,6 +315,20 @@ static int rs9_probe(struct i2c_client *client) > if (ret < 0) > return ret; > > + ret = regmap_read(rs9->regmap, RS9_REG_VID, &vid); > + if (ret < 0) > + return ret; > + > + ret = regmap_read(rs9->regmap, RS9_REG_DID, &did); > + if (ret < 0) > + return ret; > + > + if (vid != RS9_REG_VID_IDT || did != rs9->chip_info->did) > + return dev_err_probe(&client->dev, -ENODEV, > + "Incorrect VID/DID: %#02x, %#02x. Expected %#02x, %#02x\n", > + vid, did, RS9_REG_VID_IDT, > + rs9->chip_info->did); > + > /* Register clock */ > for (i = 0; i < rs9->chip_info->num_clks; i++) { > snprintf(name, 5, "DIF%d", i); > @@ -349,6 +372,7 @@ static int __maybe_unused rs9_resume(struct device *dev) > static const struct rs9_chip_info renesas_9fgv0241_info = { > .model = RENESAS_9FGV0241, > .num_clks = 2, > + .did = RS9_REG_DID_TYPE_FGV | 0x02, > }; > > static const struct i2c_device_id rs9_id[] = { -- TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht München, HRB 105018 Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider http://www.tq-group.com/