@@ -81,6 +81,7 @@ struct clk_si5341 {
81
81
u8 num_synth ;
82
82
u16 chip_id ;
83
83
bool xaxb_ext_clk ;
84
+ bool iovdd_33 ;
84
85
};
85
86
#define to_clk_si5341 (_hw ) container_of(_hw, struct clk_si5341, hw)
86
87
@@ -103,6 +104,7 @@ struct clk_si5341_output_config {
103
104
#define SI5341_IN_SEL 0x0021
104
105
#define SI5341_DEVICE_READY 0x00FE
105
106
#define SI5341_XAXB_CFG 0x090E
107
+ #define SI5341_IO_VDD_SEL 0x0943
106
108
#define SI5341_IN_EN 0x0949
107
109
#define SI5341_INX_TO_PFD_EN 0x094A
108
110
@@ -351,7 +353,6 @@ static const struct si5341_reg_default si5341_reg_defaults[] = {
351
353
{ 0x0804 , 0x00 }, /* Not in datasheet */
352
354
{ 0x090E , 0x02 }, /* XAXB_EXTCLK_EN=0 XAXB_PDNB=1 (use XTAL) */
353
355
{ 0x091C , 0x04 }, /* ZDM_EN=4 (Normal mode) */
354
- { 0x0943 , 0x00 }, /* IO_VDD_SEL=0 (0=1v8, use 1=3v3) */
355
356
{ 0x0949 , 0x00 }, /* IN_EN (disable input clocks) */
356
357
{ 0x094A , 0x00 }, /* INx_TO_PFD_EN (disabled) */
357
358
{ 0x0A02 , 0x00 }, /* Not in datasheet */
@@ -1160,6 +1161,11 @@ static int si5341_finalize_defaults(struct clk_si5341 *data)
1160
1161
int res ;
1161
1162
u32 revision ;
1162
1163
1164
+ res = regmap_write (data -> regmap , SI5341_IO_VDD_SEL ,
1165
+ data -> iovdd_33 ? 1 : 0 );
1166
+ if (res < 0 )
1167
+ return res ;
1168
+
1163
1169
res = regmap_read (data -> regmap , SI5341_DEVICE_REV , & revision );
1164
1170
if (res < 0 )
1165
1171
return res ;
@@ -1544,6 +1550,8 @@ static int si5341_probe(struct i2c_client *client,
1544
1550
}
1545
1551
data -> xaxb_ext_clk = of_property_read_bool (client -> dev .of_node ,
1546
1552
"silabs,xaxb-ext-clk" );
1553
+ data -> iovdd_33 = of_property_read_bool (client -> dev .of_node ,
1554
+ "silabs,iovdd-33" );
1547
1555
1548
1556
if (initialization_required ) {
1549
1557
/* Populate the regmap cache in preparation for "cache only" */
0 commit comments