clk: rs9: Add support for 9FGV0441
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Fri, 10 Mar 2023 07:55:35 +0000 (08:55 +0100)
committerStephen Boyd <sboyd@kernel.org>
Mon, 27 Mar 2023 17:50:58 +0000 (10:50 -0700)
This model is similar to 9FGV0241, but the DIFx bits start at bit 0.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Link: https://lore.kernel.org/r/20230310075535.3476580-4-alexander.stein@ew.tq-group.com
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-renesas-pcie.c

index 0036bd18c559d28b47237bafa65932d3ab93b76a..6799fb0fa2d3c5e5c9c428de046b3a2e50e5ff76 100644 (file)
@@ -6,6 +6,7 @@
  *   - 9FGV/9DBV/9DMV/9FGL/9DML/9QXL/9SQ
  * Currently supported:
  *   - 9FGV0241
+ *   - 9FGV0441
  *
  * Copyright (C) 2022 Marek Vasut <marex@denx.de>
  */
@@ -51,6 +52,7 @@
 /* Supported Renesas 9-series models. */
 enum rs9_model {
        RENESAS_9FGV0241,
+       RENESAS_9FGV0441,
 };
 
 /* Structure to describe features of a particular 9-series model */
@@ -64,7 +66,7 @@ struct rs9_driver_data {
        struct i2c_client       *client;
        struct regmap           *regmap;
        const struct rs9_chip_info *chip_info;
-       struct clk_hw           *clk_dif[2];
+       struct clk_hw           *clk_dif[4];
        u8                      pll_amplitude;
        u8                      pll_ssc;
        u8                      clk_dif_sr;
@@ -161,6 +163,8 @@ static u8 rs9_calc_dif(const struct rs9_driver_data *rs9, int idx)
 
        if (model == RENESAS_9FGV0241)
                return BIT(idx) + 1;
+       else if (model == RENESAS_9FGV0441)
+               return BIT(idx);
 
        return 0;
 }
@@ -380,14 +384,22 @@ static const struct rs9_chip_info renesas_9fgv0241_info = {
        .did            = RS9_REG_DID_TYPE_FGV | 0x02,
 };
 
+static const struct rs9_chip_info renesas_9fgv0441_info = {
+       .model          = RENESAS_9FGV0441,
+       .num_clks       = 4,
+       .did            = RS9_REG_DID_TYPE_FGV | 0x04,
+};
+
 static const struct i2c_device_id rs9_id[] = {
        { "9fgv0241", .driver_data = RENESAS_9FGV0241 },
+       { "9fgv0441", .driver_data = RENESAS_9FGV0441 },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, rs9_id);
 
 static const struct of_device_id clk_rs9_of_match[] = {
        { .compatible = "renesas,9fgv0241", .data = &renesas_9fgv0241_info },
+       { .compatible = "renesas,9fgv0441", .data = &renesas_9fgv0441_info },
        { }
 };
 MODULE_DEVICE_TABLE(of, clk_rs9_of_match);