Skip to content

Commit 6aa8dc6

Browse files
MikeLooijmansbebarino
authored andcommitted
clk: lmk04832: Support using PLL1_LD as SPI readback pin
The PLL1_PD pin (a.k.a. STATUS_LD1) can be used as SPI readback pin. Make this possible. Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> Link: https://lore.kernel.org/r/20230802064100.15793-3-mike.looijmans@topic.nl Reviewed-by: Liam Beguin <liambeguin@gmail.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
1 parent e63227c commit 6aa8dc6

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

drivers/clk/clk-lmk04832.c

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@
134134
/* 0x14b - 0x152 Holdover */
135135

136136
/* 0x153 - 0x15f PLL1 Configuration */
137+
#define LMK04832_REG_PLL1_LD 0x15f
138+
#define LMK04832_BIT_PLL1_LD_MUX GENMASK(7, 3)
139+
#define LMK04832_VAL_PLL1_LD_MUX_SPI_RDBK 0x07
140+
#define LMK04832_BIT_PLL1_LD_TYPE GENMASK(2, 0)
141+
#define LMK04832_VAL_PLL1_LD_TYPE_OUT_PP 0x03
137142

138143
/* 0x160 - 0x16e PLL2 Configuration */
139144
#define LMK04832_REG_PLL2_R_MSB 0x160
@@ -206,6 +211,7 @@ enum lmk04832_rdbk_type {
206211
RDBK_CLKIN_SEL0,
207212
RDBK_CLKIN_SEL1,
208213
RDBK_RESET,
214+
RDBK_PLL1_LD,
209215
};
210216

211217
struct lmk_dclk {
@@ -1346,6 +1352,10 @@ static int lmk04832_set_spi_rdbk(const struct lmk04832 *lmk, const int rdbk_pin)
13461352
{
13471353
int reg;
13481354
int ret;
1355+
int val = FIELD_PREP(LMK04832_BIT_CLKIN_SEL_MUX,
1356+
LMK04832_VAL_CLKIN_SEL_MUX_SPI_RDBK) |
1357+
FIELD_PREP(LMK04832_BIT_CLKIN_SEL_TYPE,
1358+
LMK04832_VAL_CLKIN_SEL_TYPE_OUT);
13491359

13501360
dev_info(lmk->dev, "setting up 4-wire mode\n");
13511361
ret = regmap_write(lmk->regmap, LMK04832_REG_RST3W,
@@ -1363,15 +1373,18 @@ static int lmk04832_set_spi_rdbk(const struct lmk04832 *lmk, const int rdbk_pin)
13631373
case RDBK_RESET:
13641374
reg = LMK04832_REG_CLKIN_RST;
13651375
break;
1376+
case RDBK_PLL1_LD:
1377+
reg = LMK04832_REG_PLL1_LD;
1378+
val = FIELD_PREP(LMK04832_BIT_PLL1_LD_MUX,
1379+
LMK04832_VAL_PLL1_LD_MUX_SPI_RDBK) |
1380+
FIELD_PREP(LMK04832_BIT_PLL1_LD_TYPE,
1381+
LMK04832_VAL_PLL1_LD_TYPE_OUT_PP);
1382+
break;
13661383
default:
13671384
return -EINVAL;
13681385
}
13691386

1370-
return regmap_write(lmk->regmap, reg,
1371-
FIELD_PREP(LMK04832_BIT_CLKIN_SEL_MUX,
1372-
LMK04832_VAL_CLKIN_SEL_MUX_SPI_RDBK) |
1373-
FIELD_PREP(LMK04832_BIT_CLKIN_SEL_TYPE,
1374-
LMK04832_VAL_CLKIN_SEL_TYPE_OUT));
1387+
return regmap_write(lmk->regmap, reg, val);
13751388
}
13761389

13771390
static int lmk04832_probe(struct spi_device *spi)

0 commit comments

Comments
 (0)