Lines Matching refs:serdes

12 static struct serdes *g_serdes_ser_split[MAX_NUM_SERDES_SPLIT];
14 static void serdes_i2c_init(struct serdes *serdes) in serdes_i2c_init() argument
16 if (serdes->vpower_supply) in serdes_i2c_init()
17 regulator_set_enable(serdes->vpower_supply, true); in serdes_i2c_init()
19 if (dm_gpio_is_valid(&serdes->enable_gpio)) in serdes_i2c_init()
20 dm_gpio_set_value(&serdes->enable_gpio, 1); in serdes_i2c_init()
26 if (serdes->chip_data->bridge_ops->init) in serdes_i2c_init()
27 serdes->chip_data->bridge_ops->init(serdes); in serdes_i2c_init()
29 serdes_i2c_set_sequence(serdes); in serdes_i2c_init()
32 serdes->dev->name, in serdes_i2c_init()
33 serdes->chip_data->name); in serdes_i2c_init()
36 static int serdes_set_i2c_address(struct serdes *serdes, in serdes_set_i2c_address() argument
41 struct serdes *serdes_split = serdes->g_serdes_bridge_split; in serdes_set_i2c_address()
48 chip_split = dev_get_parent_platdata(serdes->dev); in serdes_set_i2c_address()
51 chip_split->chip_addr, serdes->reg_hw, in serdes_set_i2c_address()
52 serdes->reg_use, serdes_split); in serdes_set_i2c_address()
54 chip_split->chip_addr = serdes->reg_hw; in serdes_set_i2c_address()
60 if (serdes->chip_data->split_ops && in serdes_set_i2c_address()
61 serdes->chip_data->split_ops->set_i2c_addr) in serdes_set_i2c_address()
62 serdes->chip_data->split_ops->set_i2c_addr(serdes, in serdes_set_i2c_address()
70 chip_split->chip_addr = serdes->reg_use; in serdes_set_i2c_address()
72 serdes_i2c_set_sequence(serdes); in serdes_set_i2c_address()
79 struct serdes *serdes = dev_get_priv(dev); in serdes_i2c_probe() local
89 serdes->dev = dev; in serdes_i2c_probe()
90 serdes->chip_data = (struct serdes_chip_data *)dev_get_driver_data(dev); in serdes_i2c_probe()
91 serdes->type = serdes->chip_data->serdes_type; in serdes_i2c_probe()
94 serdes->dev->name, serdes->chip_data->name, serdes); in serdes_i2c_probe()
98 &serdes->vpower_supply); in serdes_i2c_probe()
104 &serdes->enable_gpio, GPIOD_IS_OUT); in serdes_i2c_probe()
109 ret = gpio_request_by_name(dev, "lock-gpios", 0, &serdes->lock_gpio, in serdes_i2c_probe()
115 ret = gpio_request_by_name(dev, "err-gpios", 0, &serdes->err_gpio, in serdes_i2c_probe()
121 serdes->mcu_enable = dev_read_bool(dev, "mcu-enable"); in serdes_i2c_probe()
123 if (serdes->chip_data->serdes_type == TYPE_OTHER) { in serdes_i2c_probe()
125 serdes_i2c_init(serdes); in serdes_i2c_probe()
129 ret = serdes_get_init_seq(serdes); in serdes_i2c_probe()
133 if (serdes->chip_data->serdes_type == TYPE_SER) in serdes_i2c_probe()
134 serdes_i2c_init(serdes); in serdes_i2c_probe()
136 if (serdes->chip_data->bridge_ops) { in serdes_i2c_probe()
140 serdes->serdes_bridge = serdes_bridge; in serdes_i2c_probe()
145 serdes->serdes_bridge_split = serdes_bridge_split; in serdes_i2c_probe()
152 serdes->id_serdes_bridge_split = dev_read_u32_default(dev, "id-serdes-bridge-split", 0); in serdes_i2c_probe()
153 if ((serdes->id_serdes_bridge_split < MAX_NUM_SERDES_SPLIT) && (serdes->type == TYPE_SER)) { in serdes_i2c_probe()
154 g_serdes_ser_split[serdes->id_serdes_bridge_split] = serdes; in serdes_i2c_probe()
156 serdes->dev->name, serdes->chip_data->name, in serdes_i2c_probe()
157 serdes->id_serdes_bridge_split, serdes); in serdes_i2c_probe()
160 serdes->reg_hw = dev_read_u32_default(dev, "reg-hw", 0); in serdes_i2c_probe()
161 serdes->reg_use = dev_read_u32_default(dev, "reg", 0); in serdes_i2c_probe()
162 serdes->link_use = dev_read_u32_default(dev, "link", 0); in serdes_i2c_probe()
163 serdes->id_serdes_panel_split = dev_read_u32_default(dev, "id-serdes-panel-split", 0); in serdes_i2c_probe()
165 if ((serdes->id_serdes_panel_split) && (serdes->type == TYPE_DES)) { in serdes_i2c_probe()
166 serdes->g_serdes_bridge_split = g_serdes_ser_split[serdes->id_serdes_panel_split]; in serdes_i2c_probe()
168 serdes->id_serdes_panel_split, in serdes_i2c_probe()
169 serdes->g_serdes_bridge_split); in serdes_i2c_probe()
172 if (serdes->reg_hw) { in serdes_i2c_probe()
175 serdes->reg_hw, serdes->reg_use); in serdes_i2c_probe()
176 serdes_set_i2c_address(serdes, serdes->reg_hw, in serdes_i2c_probe()
177 serdes->reg_use, serdes->link_use); in serdes_i2c_probe()
182 serdes->dev->name, in serdes_i2c_probe()
183 serdes->chip_data->name); in serdes_i2c_probe()
234 .priv_auto_alloc_size = sizeof(struct serdes),