Symbol: lt8713sx
drivers/gpu/drm/bridge/lontium-lt8713sx.c
104
ret = request_firmware(&lt8713sx->fw, FW_FILE, lt8713sx->dev);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
106
dev_err(lt8713sx->dev, "request firmware failed\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
110
dev_dbg(lt8713sx->dev, "Firmware size: %zu bytes\n", lt8713sx->fw->size);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
112
if (lt8713sx->fw->size > SZ_256K - 1) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
113
dev_err(lt8713sx->dev, "Firmware size exceeds 256KB limit\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
114
release_firmware(lt8713sx->fw);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
118
lt8713sx->fw_buffer = kvmalloc(SZ_256K, GFP_KERNEL);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
119
if (!lt8713sx->fw_buffer) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
120
release_firmware(lt8713sx->fw);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
124
memset(lt8713sx->fw_buffer, 0xff, SZ_256K);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
127
memcpy(lt8713sx->fw_buffer, lt8713sx->fw->data, SZ_64K - 1);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
129
lt8713sx->fw_buffer[SZ_64K - 1] =
drivers/gpu/drm/bridge/lontium-lt8713sx.c
130
crc8(lt8713sx_crc_table, lt8713sx->fw_buffer, SZ_64K - 1, 0);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
131
lt8713sx->main_crc_value = lt8713sx->fw_buffer[SZ_64K - 1];
drivers/gpu/drm/bridge/lontium-lt8713sx.c
132
dev_dbg(lt8713sx->dev,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
133
"Main Firmware Data Crc = 0x%02X\n", lt8713sx->main_crc_value);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
136
memcpy(lt8713sx->fw_buffer + SZ_64K,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
137
lt8713sx->fw->data + SZ_64K,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
138
lt8713sx->fw->size - SZ_64K);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
140
lt8713sx->bank_num = (lt8713sx->fw->size - SZ_64K + sz_12k - 1) / sz_12k;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
141
dev_dbg(lt8713sx->dev, "Bank Number Total is %d.\n", lt8713sx->bank_num);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
143
for (int i = 0; i < lt8713sx->bank_num; i++) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
144
lt8713sx->bank_crc_value[i] =
drivers/gpu/drm/bridge/lontium-lt8713sx.c
145
crc8(lt8713sx_crc_table, lt8713sx->fw_buffer + SZ_64K + i * sz_12k,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
147
dev_dbg(lt8713sx->dev, "Bank number:%d; Firmware Data Crc:0x%02X\n",
drivers/gpu/drm/bridge/lontium-lt8713sx.c
148
i, lt8713sx->bank_crc_value[i]);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
153
static void lt8713sx_config_parameters(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
155
regmap_write(lt8713sx->regmap, 0xe05e, 0xc1);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
156
regmap_write(lt8713sx->regmap, 0xe058, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
157
regmap_write(lt8713sx->regmap, 0xe059, 0x50);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
158
regmap_write(lt8713sx->regmap, 0xe05a, 0x10);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
159
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
160
regmap_write(lt8713sx->regmap, 0xe058, 0x21);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
163
static void lt8713sx_wren(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
165
regmap_write(lt8713sx->regmap, 0xe103, 0xbf);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
166
regmap_write(lt8713sx->regmap, 0xe103, 0xff);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
167
regmap_write(lt8713sx->regmap, 0xe05a, 0x04);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
168
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
171
static void lt8713sx_wrdi(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
173
regmap_write(lt8713sx->regmap, 0xe05a, 0x08);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
174
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
177
static void lt8713sx_fifo_reset(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
179
regmap_write(lt8713sx->regmap, 0xe103, 0xbf);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
180
regmap_write(lt8713sx->regmap, 0xe103, 0xff);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
183
static void lt8713sx_disable_sram_write(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
185
regmap_write(lt8713sx->regmap, 0xe055, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
188
static void lt8713sx_sram_to_flash(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
190
regmap_write(lt8713sx->regmap, 0xe05a, 0x30);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
191
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
194
static void lt8713sx_i2c_to_sram(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
196
regmap_write(lt8713sx->regmap, 0xe055, 0x80);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
197
regmap_write(lt8713sx->regmap, 0xe05e, 0xc0);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
198
regmap_write(lt8713sx->regmap, 0xe058, 0x21);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
201
static u8 lt8713sx_read_flash_status(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
205
regmap_write(lt8713sx->regmap, 0xe103, 0x3f);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
206
regmap_write(lt8713sx->regmap, 0xe103, 0xff);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
208
regmap_write(lt8713sx->regmap, 0xe05e, 0x40);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
209
regmap_write(lt8713sx->regmap, 0xe056, 0x05); /* opcode=read status register */
drivers/gpu/drm/bridge/lontium-lt8713sx.c
210
regmap_write(lt8713sx->regmap, 0xe055, 0x25);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
211
regmap_write(lt8713sx->regmap, 0xe055, 0x01);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
212
regmap_write(lt8713sx->regmap, 0xe058, 0x21);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
214
regmap_read(lt8713sx->regmap, 0xe05f, &flash_status);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
215
dev_dbg(lt8713sx->dev, "flash_status:%x\n", flash_status);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
220
static void lt8713sx_block_erase(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
229
regmap_write(lt8713sx->regmap, 0xe05a, 0x04);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
230
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
231
regmap_write(lt8713sx->regmap, 0xe05b, flashaddr >> 16);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
232
regmap_write(lt8713sx->regmap, 0xe05c, flashaddr >> 8);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
233
regmap_write(lt8713sx->regmap, 0xe05d, flashaddr);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
234
regmap_write(lt8713sx->regmap, 0xe05a, 0x01);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
235
regmap_write(lt8713sx->regmap, 0xe05a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
239
flash_status = lt8713sx_read_flash_status(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
250
dev_dbg(lt8713sx->dev, "erase flash done.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
253
static void lt8713sx_load_main_fw_to_sram(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
255
regmap_write(lt8713sx->regmap, 0xe068, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
256
regmap_write(lt8713sx->regmap, 0xe069, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
257
regmap_write(lt8713sx->regmap, 0xe06a, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
258
regmap_write(lt8713sx->regmap, 0xe065, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
259
regmap_write(lt8713sx->regmap, 0xe066, 0xff);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
260
regmap_write(lt8713sx->regmap, 0xe067, 0xff);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
261
regmap_write(lt8713sx->regmap, 0xe06b, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
262
regmap_write(lt8713sx->regmap, 0xe06c, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
263
regmap_write(lt8713sx->regmap, 0xe060, 0x01);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
265
regmap_write(lt8713sx->regmap, 0xe060, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
268
static void lt8713sx_load_bank_fw_to_sram(struct lt8713sx *lt8713sx, u64 addr)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
270
regmap_write(lt8713sx->regmap, 0xe068, ((addr & 0xff0000) >> 16));
drivers/gpu/drm/bridge/lontium-lt8713sx.c
271
regmap_write(lt8713sx->regmap, 0xe069, ((addr & 0x00ff00) >> 8));
drivers/gpu/drm/bridge/lontium-lt8713sx.c
272
regmap_write(lt8713sx->regmap, 0xe06a, (addr & 0x0000ff));
drivers/gpu/drm/bridge/lontium-lt8713sx.c
273
regmap_write(lt8713sx->regmap, 0xe065, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
274
regmap_write(lt8713sx->regmap, 0xe066, 0x30);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
275
regmap_write(lt8713sx->regmap, 0xe067, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
276
regmap_write(lt8713sx->regmap, 0xe06b, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
277
regmap_write(lt8713sx->regmap, 0xe06c, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
278
regmap_write(lt8713sx->regmap, 0xe060, 0x01);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
280
regmap_write(lt8713sx->regmap, 0xe060, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
283
static int lt8713sx_write_data(struct lt8713sx *lt8713sx, const u8 *data, u64 filesize)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
290
dev_dbg(lt8713sx->dev,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
294
dev_dbg(lt8713sx->dev, "page[%d]\n", num);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
295
lt8713sx_i2c_to_sram(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
302
regmap_write(lt8713sx->regmap, 0xe059, val);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
305
lt8713sx_wren(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
306
lt8713sx_sram_to_flash(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
309
lt8713sx_wrdi(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
310
lt8713sx_disable_sram_write(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
315
static void lt8713sx_main_upgrade_result(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
319
regmap_read(lt8713sx->regmap, 0xe023, &main_crc_result);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
321
dev_dbg(lt8713sx->dev, "Main CRC HW: 0x%02X\n", main_crc_result);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
322
dev_dbg(lt8713sx->dev, "Main CRC FW: 0x%02X\n", lt8713sx->main_crc_value);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
324
if (main_crc_result == lt8713sx->main_crc_value)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
325
dev_info(lt8713sx->dev, "Main Firmware Upgrade Success.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
327
dev_err(lt8713sx->dev, "Main Firmware Upgrade Failed.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
330
static void lt8713sx_bank_upgrade_result(struct lt8713sx *lt8713sx, u8 banknum)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
334
regmap_read(lt8713sx->regmap, 0xe023, &bank_crc_result);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
336
dev_dbg(lt8713sx->dev, "Bank %d CRC Result: 0x%02X\n", banknum, bank_crc_result);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
338
if (bank_crc_result == lt8713sx->bank_crc_value[banknum])
drivers/gpu/drm/bridge/lontium-lt8713sx.c
339
dev_info(lt8713sx->dev, "Bank %d Firmware Upgrade Success.\n", banknum);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
341
dev_err(lt8713sx->dev, "Bank %d Firmware Upgrade Failed.\n", banknum);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
344
static void lt8713sx_bank_result_check(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
349
for (i = 0; i < lt8713sx->bank_num; i++) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
350
lt8713sx_load_bank_fw_to_sram(lt8713sx, addr);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
351
lt8713sx_bank_upgrade_result(lt8713sx, i);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
356
static int lt8713sx_firmware_upgrade(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
360
lt8713sx_config_parameters(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
362
lt8713sx_block_erase(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
364
if (lt8713sx->fw->size < SZ_64K) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
365
ret = lt8713sx_write_data(lt8713sx, lt8713sx->fw_buffer, SZ_64K);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
367
dev_err(lt8713sx->dev, "Failed to write firmware data: %d\n", ret);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
371
ret = lt8713sx_write_data(lt8713sx, lt8713sx->fw_buffer, lt8713sx->fw->size);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
373
dev_err(lt8713sx->dev, "Failed to write firmware data: %d\n", ret);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
377
dev_dbg(lt8713sx->dev, "Write Data done.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
382
static int lt8713sx_firmware_update(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
386
guard(mutex)(&lt8713sx->ocm_lock);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
387
lt8713sx_i2c_enable(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
389
ret = lt8713sx_prepare_firmware_data(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
391
dev_err(lt8713sx->dev, "Failed to prepare firmware data: %d\n", ret);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
395
ret = lt8713sx_firmware_upgrade(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
397
dev_err(lt8713sx->dev, "Upgrade failure.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
402
lt8713sx_load_main_fw_to_sram(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
403
lt8713sx_main_upgrade_result(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
404
lt8713sx_wrdi(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
405
lt8713sx_fifo_reset(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
406
lt8713sx_bank_result_check(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
407
lt8713sx_wrdi(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
410
lt8713sx_i2c_disable(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
412
lt8713sx_reset(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
414
kvfree(lt8713sx->fw_buffer);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
415
lt8713sx->fw_buffer = NULL;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
417
if (lt8713sx->fw) {
drivers/gpu/drm/bridge/lontium-lt8713sx.c
418
release_firmware(lt8713sx->fw);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
419
lt8713sx->fw = NULL;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
425
static void lt8713sx_reset(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
427
dev_dbg(lt8713sx->dev, "reset bridge.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
428
gpiod_set_value_cansleep(lt8713sx->reset_gpio, 1);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
431
gpiod_set_value_cansleep(lt8713sx->reset_gpio, 0);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
434
dev_dbg(lt8713sx->dev, "reset done.\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
437
static int lt8713sx_regulator_enable(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
441
ret = devm_regulator_get_enable(lt8713sx->dev, "vdd");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
443
return dev_err_probe(lt8713sx->dev, ret, "failed to enable vdd regulator\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
447
ret = devm_regulator_get_enable(lt8713sx->dev, "vcc");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
449
return dev_err_probe(lt8713sx->dev, ret, "failed to enable vcc regulator\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
457
struct lt8713sx *lt8713sx = container_of(bridge, struct lt8713sx, bridge);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
460
lt8713sx->bridge.next_bridge,
drivers/gpu/drm/bridge/lontium-lt8713sx.c
464
static int lt8713sx_gpio_init(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
466
struct device *dev = lt8713sx->dev;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
468
lt8713sx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
469
if (IS_ERR(lt8713sx->reset_gpio))
drivers/gpu/drm/bridge/lontium-lt8713sx.c
470
return dev_err_probe(dev, PTR_ERR(lt8713sx->reset_gpio),
drivers/gpu/drm/bridge/lontium-lt8713sx.c
474
lt8713sx->enable_gpio = devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_HIGH);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
475
if (IS_ERR(lt8713sx->enable_gpio))
drivers/gpu/drm/bridge/lontium-lt8713sx.c
476
return dev_err_probe(dev, PTR_ERR(lt8713sx->enable_gpio),
drivers/gpu/drm/bridge/lontium-lt8713sx.c
485
struct lt8713sx *lt8713sx = dev_get_drvdata(dev);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
488
ret = lt8713sx_firmware_update(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
516
struct lt8713sx *lt8713sx;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
523
lt8713sx = devm_drm_bridge_alloc(dev, struct lt8713sx, bridge, &lt8713sx_bridge_funcs);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
524
if (IS_ERR(lt8713sx))
drivers/gpu/drm/bridge/lontium-lt8713sx.c
525
return PTR_ERR(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
527
lt8713sx->dev = dev;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
528
lt8713sx->client = client;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
529
i2c_set_clientdata(client, lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
531
ret = devm_mutex_init(lt8713sx->dev, &lt8713sx->ocm_lock);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
535
lt8713sx->regmap = devm_regmap_init_i2c(client, &lt8713sx_regmap_config);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
536
if (IS_ERR(lt8713sx->regmap))
drivers/gpu/drm/bridge/lontium-lt8713sx.c
537
return dev_err_probe(dev, PTR_ERR(lt8713sx->regmap), "regmap i2c init failed\n");
drivers/gpu/drm/bridge/lontium-lt8713sx.c
539
lt8713sx->bridge.next_bridge = of_drm_get_bridge_by_endpoint(lt8713sx->dev->of_node, 1, -1);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
54
static void lt8713sx_reset(struct lt8713sx *lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
540
if (IS_ERR(lt8713sx->bridge.next_bridge))
drivers/gpu/drm/bridge/lontium-lt8713sx.c
541
return PTR_ERR(lt8713sx->bridge.next_bridge);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
543
ret = lt8713sx_gpio_init(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
547
ret = lt8713sx_regulator_enable(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
551
lt8713sx_reset(lt8713sx);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
553
lt8713sx->bridge.funcs = &lt8713sx_bridge_funcs;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
554
lt8713sx->bridge.of_node = dev->of_node;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
555
lt8713sx->bridge.type = DRM_MODE_CONNECTOR_DisplayPort;
drivers/gpu/drm/bridge/lontium-lt8713sx.c
556
drm_bridge_add(&lt8713sx->bridge);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
565
struct lt8713sx *lt8713sx = i2c_get_clientdata(client);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
567
drm_bridge_remove(&lt8713sx->bridge);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
89
static void lt8713sx_i2c_enable(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
91
regmap_write(lt8713sx->regmap, 0xe0ee, 0x01);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
94
static void lt8713sx_i2c_disable(struct lt8713sx *lt8713sx)
drivers/gpu/drm/bridge/lontium-lt8713sx.c
96
regmap_write(lt8713sx->regmap, 0xe0ee, 0x00);
drivers/gpu/drm/bridge/lontium-lt8713sx.c
99
static int lt8713sx_prepare_firmware_data(struct lt8713sx *lt8713sx)