Lines Matching refs:serdes
86 int serdes_reg_read(struct serdes *serdes, in serdes_reg_read() argument
91 if (serdes->chip_data->reg_val_type == REG_8BIT_VAL_8IT) in serdes_reg_read()
92 value = dm_i2c_reg_read_u8(serdes->dev, reg); in serdes_reg_read()
94 value = dm_i2c_reg_read(serdes->dev, reg); in serdes_reg_read()
98 __func__, serdes->dev->name, in serdes_reg_read()
99 serdes->dev->name, reg, *val); in serdes_reg_read()
111 int serdes_reg_write(struct serdes *serdes, unsigned int reg, in serdes_reg_write() argument
117 __func__, serdes->dev->name, in serdes_reg_write()
118 reg, val, serdes->chip_data->reg_val_type); in serdes_reg_write()
119 if (serdes->chip_data->reg_val_type == REG_8BIT_VAL_8IT) { in serdes_reg_write()
120 ret = dm_i2c_reg_write_u8(serdes->dev, reg, val); in serdes_reg_write()
124 ret = dm_i2c_reg_write(serdes->dev, reg, val); in serdes_reg_write()
140 int serdes_multi_reg_write(struct serdes *serdes, in serdes_multi_reg_write() argument
146 SERDES_DBG_I2C("%s %s %s num=%d\n", __func__, serdes->dev->name, in serdes_multi_reg_write()
147 serdes->chip_data->name, num_regs); in serdes_multi_reg_write()
150 ret = serdes_reg_write(serdes, regs[i].reg, regs[i].def); in serdes_multi_reg_write()
152 serdes->chip_data->name, in serdes_multi_reg_write()
168 int serdes_set_bits(struct serdes *serdes, unsigned int reg, in serdes_set_bits() argument
175 serdes->dev->name, in serdes_set_bits()
176 serdes->dev->name, reg, val, mask); in serdes_set_bits()
178 if (serdes->chip_data->reg_val_type == REG_8BIT_VAL_8IT) in serdes_set_bits()
179 ret = dm_i2c_reg_clrset_u8(serdes->dev, reg, mask, val); in serdes_set_bits()
181 ret = dm_i2c_reg_clrset(serdes->dev, reg, mask, val); in serdes_set_bits()
187 int serdes_i2c_set_sequence(struct serdes *serdes) in serdes_i2c_set_sequence() argument
192 if (serdes->mcu_enable) { in serdes_i2c_set_sequence()
194 serdes->dev->name); in serdes_i2c_set_sequence()
198 for (i = 0; i < serdes->serdes_init_seq->reg_seq_cnt; i++) { in serdes_i2c_set_sequence()
199 if (serdes->serdes_init_seq->reg_sequence[i].reg == 0xffff) { in serdes_i2c_set_sequence()
201 serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
202 udelay(serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
206 ret = serdes_reg_write(serdes, in serdes_i2c_set_sequence()
207 serdes->serdes_init_seq->reg_sequence[i].reg, in serdes_i2c_set_sequence()
208 serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
212 serdes->serdes_init_seq->reg_sequence[i].reg, ret); in serdes_i2c_set_sequence()
213 ret = serdes_reg_write(serdes, in serdes_i2c_set_sequence()
214 serdes->serdes_init_seq->reg_sequence[i].reg, in serdes_i2c_set_sequence()
215 serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
217 serdes_reg_read(serdes, serdes->serdes_init_seq->reg_sequence[i].reg, &def); in serdes_i2c_set_sequence()
218 if ((def != serdes->serdes_init_seq->reg_sequence[i].def) || (ret < 0)) { in serdes_i2c_set_sequence()
220 printf("%s read %04x %04x != %04x\n", serdes->dev->name, in serdes_i2c_set_sequence()
221 serdes->serdes_init_seq->reg_sequence[i].reg, in serdes_i2c_set_sequence()
222 def, serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
223 ret = serdes_reg_write(serdes, in serdes_i2c_set_sequence()
224 serdes->serdes_init_seq->reg_sequence[i].reg, in serdes_i2c_set_sequence()
225 serdes->serdes_init_seq->reg_sequence[i].def); in serdes_i2c_set_sequence()
230 if (serdes->chip_data->serdes_id == MAXIM_ID_MAX96752) { in serdes_i2c_set_sequence()
231 ret = serdes_reg_write(serdes, 0x10, 0x21); in serdes_i2c_set_sequence()
233 printf("%s reset oneshot max96752\n", serdes->dev->name); in serdes_i2c_set_sequence()
236 SERDES_DBG_MFD("serdes %s sequence_init\n", serdes->dev->name); in serdes_i2c_set_sequence()
285 int serdes_get_init_seq(struct serdes *serdes) in serdes_get_init_seq() argument
290 data = dev_read_prop(serdes->dev, "serdes-init-sequence", &len); in serdes_get_init_seq()
296 serdes->serdes_init_seq = calloc(1, sizeof(*serdes->serdes_init_seq)); in serdes_get_init_seq()
297 if (!serdes->serdes_init_seq) in serdes_get_init_seq()
300 err = serdes_parse_init_seq(serdes->dev, in serdes_get_init_seq()
301 data, len, serdes->serdes_init_seq); in serdes_get_init_seq()
310 free(serdes->serdes_init_seq); in serdes_get_init_seq()
390 struct serdes *serdes = dev_get_priv(dev); in serdes_pinctrl_register() local
419 if (serdes->mcu_enable) { in serdes_pinctrl_register()
421 serdes->dev->name); in serdes_pinctrl_register()
451 static int serdes_i2c_init(struct serdes *serdes) in serdes_i2c_init() argument
456 if (serdes->vpower_supply) in serdes_i2c_init()
457 regulator_set_enable(serdes->vpower_supply, true); in serdes_i2c_init()
459 if (dm_gpio_is_valid(&serdes->enable_gpio)) in serdes_i2c_init()
460 dm_gpio_set_value(&serdes->enable_gpio, 1); in serdes_i2c_init()
465 ret = serdes_i2c_set_sequence(serdes); in serdes_i2c_init()
471 SERDES_DBG_MFD("%s: %s %s\n", __func__, serdes->dev->name, in serdes_i2c_init()
472 serdes->chip_data->name); in serdes_i2c_init()
479 struct serdes *serdes = dev_get_priv(dev); in serdes_i2c_probe() local
486 serdes->dev = dev; in serdes_i2c_probe()
487 serdes->chip_data = (struct serdes_chip_data *)dev_get_driver_data(dev); in serdes_i2c_probe()
488 serdes->type = serdes->chip_data->serdes_type; in serdes_i2c_probe()
491 serdes->dev->name, serdes->chip_data->name); in serdes_i2c_probe()
495 &serdes->vpower_supply); in serdes_i2c_probe()
501 &serdes->enable_gpio, GPIOD_IS_OUT); in serdes_i2c_probe()
507 &serdes->lock_gpio, in serdes_i2c_probe()
514 &serdes->err_gpio, in serdes_i2c_probe()
520 ret = serdes_get_init_seq(serdes); in serdes_i2c_probe()
524 serdes_i2c_init(serdes); in serdes_i2c_probe()
528 serdes->dev->name, in serdes_i2c_probe()
546 .priv_auto_alloc_size = sizeof(struct serdes),