Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Mike Looijmans and committed by
Stephen Boyd
6aa8dc69 e63227c8

+18 -5
+18 -5
drivers/clk/clk-lmk04832.c
··· 134 134 /* 0x14b - 0x152 Holdover */ 135 135 136 136 /* 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 137 142 138 143 /* 0x160 - 0x16e PLL2 Configuration */ 139 144 #define LMK04832_REG_PLL2_R_MSB 0x160 ··· 211 206 RDBK_CLKIN_SEL0, 212 207 RDBK_CLKIN_SEL1, 213 208 RDBK_RESET, 209 + RDBK_PLL1_LD, 214 210 }; 215 211 216 212 struct lmk_dclk { ··· 1352 1346 { 1353 1347 int reg; 1354 1348 int ret; 1349 + int val = FIELD_PREP(LMK04832_BIT_CLKIN_SEL_MUX, 1350 + LMK04832_VAL_CLKIN_SEL_MUX_SPI_RDBK) | 1351 + FIELD_PREP(LMK04832_BIT_CLKIN_SEL_TYPE, 1352 + LMK04832_VAL_CLKIN_SEL_TYPE_OUT); 1355 1353 1356 1354 dev_info(lmk->dev, "setting up 4-wire mode\n"); 1357 1355 ret = regmap_write(lmk->regmap, LMK04832_REG_RST3W, ··· 1373 1363 case RDBK_RESET: 1374 1364 reg = LMK04832_REG_CLKIN_RST; 1375 1365 break; 1366 + case RDBK_PLL1_LD: 1367 + reg = LMK04832_REG_PLL1_LD; 1368 + val = FIELD_PREP(LMK04832_BIT_PLL1_LD_MUX, 1369 + LMK04832_VAL_PLL1_LD_MUX_SPI_RDBK) | 1370 + FIELD_PREP(LMK04832_BIT_PLL1_LD_TYPE, 1371 + LMK04832_VAL_PLL1_LD_TYPE_OUT_PP); 1372 + break; 1376 1373 default: 1377 1374 return -EINVAL; 1378 1375 } 1379 1376 1380 - return regmap_write(lmk->regmap, reg, 1381 - FIELD_PREP(LMK04832_BIT_CLKIN_SEL_MUX, 1382 - LMK04832_VAL_CLKIN_SEL_MUX_SPI_RDBK) | 1383 - FIELD_PREP(LMK04832_BIT_CLKIN_SEL_TYPE, 1384 - LMK04832_VAL_CLKIN_SEL_TYPE_OUT)); 1377 + return regmap_write(lmk->regmap, reg, val); 1385 1378 } 1386 1379 1387 1380 static int lmk04832_probe(struct spi_device *spi)