Symbol: lt9611
drivers/gpu/drm/bridge/lontium-lt9611.c
1033
struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
1035
lt9611->dsi0_node = of_graph_get_remote_node(dev->of_node, 0, -1);
drivers/gpu/drm/bridge/lontium-lt9611.c
1036
if (!lt9611->dsi0_node) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1037
dev_err(lt9611->dev, "failed to get remote node for primary dsi\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
1041
lt9611->dsi1_node = of_graph_get_remote_node(dev->of_node, 1, -1);
drivers/gpu/drm/bridge/lontium-lt9611.c
1043
lt9611->ac_mode = of_property_read_bool(dev->of_node, "lt,ac-mode");
drivers/gpu/drm/bridge/lontium-lt9611.c
1045
return drm_of_find_panel_or_bridge(dev->of_node, 2, -1, NULL, &lt9611->next_bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
1048
static int lt9611_gpio_init(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
1050
struct device *dev = lt9611->dev;
drivers/gpu/drm/bridge/lontium-lt9611.c
1052
lt9611->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
drivers/gpu/drm/bridge/lontium-lt9611.c
1053
if (IS_ERR(lt9611->reset_gpio)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1055
return PTR_ERR(lt9611->reset_gpio);
drivers/gpu/drm/bridge/lontium-lt9611.c
1058
lt9611->enable_gpio = devm_gpiod_get_optional(dev, "enable",
drivers/gpu/drm/bridge/lontium-lt9611.c
1060
if (IS_ERR(lt9611->enable_gpio)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1062
return PTR_ERR(lt9611->enable_gpio);
drivers/gpu/drm/bridge/lontium-lt9611.c
1068
static int lt9611_read_device_rev(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
1073
regmap_write(lt9611->regmap, 0x80ee, 0x01);
drivers/gpu/drm/bridge/lontium-lt9611.c
1074
ret = regmap_read(lt9611->regmap, 0x8002, &rev);
drivers/gpu/drm/bridge/lontium-lt9611.c
1076
dev_err(lt9611->dev, "failed to read revision: %d\n", ret);
drivers/gpu/drm/bridge/lontium-lt9611.c
1078
dev_info(lt9611->dev, "LT9611 revision: 0x%x\n", rev);
drivers/gpu/drm/bridge/lontium-lt9611.c
108
return regmap_multi_reg_write(lt9611->regmap, reg_cfg, ARRAY_SIZE(reg_cfg));
drivers/gpu/drm/bridge/lontium-lt9611.c
1085
struct lt9611 *lt9611;
drivers/gpu/drm/bridge/lontium-lt9611.c
1094
lt9611 = devm_drm_bridge_alloc(dev, struct lt9611, bridge,
drivers/gpu/drm/bridge/lontium-lt9611.c
1096
if (IS_ERR(lt9611))
drivers/gpu/drm/bridge/lontium-lt9611.c
1097
return PTR_ERR(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1099
lt9611->dev = dev;
drivers/gpu/drm/bridge/lontium-lt9611.c
1100
lt9611->client = client;
drivers/gpu/drm/bridge/lontium-lt9611.c
1101
lt9611->sleep = false;
drivers/gpu/drm/bridge/lontium-lt9611.c
1103
lt9611->regmap = devm_regmap_init_i2c(client, &lt9611_regmap_config);
drivers/gpu/drm/bridge/lontium-lt9611.c
1104
if (IS_ERR(lt9611->regmap)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1105
dev_err(lt9611->dev, "regmap i2c init failed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
1106
return PTR_ERR(lt9611->regmap);
drivers/gpu/drm/bridge/lontium-lt9611.c
1109
ret = lt9611_parse_dt(dev, lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
111
static int lt9611_mipi_input_digital(struct lt9611 *lt9611,
drivers/gpu/drm/bridge/lontium-lt9611.c
1115
ret = lt9611_gpio_init(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1119
ret = lt9611_regulator_init(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1123
lt9611_assert_5v(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1125
ret = lt9611_regulator_enable(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1129
lt9611_reset(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1131
ret = lt9611_read_device_rev(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1139
IRQF_ONESHOT, "lt9611", lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1145
i2c_set_clientdata(client, lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1148
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_AUDIO, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
1150
lt9611->bridge.of_node = client->dev.of_node;
drivers/gpu/drm/bridge/lontium-lt9611.c
1151
lt9611->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID |
drivers/gpu/drm/bridge/lontium-lt9611.c
1155
lt9611->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
drivers/gpu/drm/bridge/lontium-lt9611.c
1156
lt9611->bridge.vendor = "Lontium";
drivers/gpu/drm/bridge/lontium-lt9611.c
1157
lt9611->bridge.product = "LT9611";
drivers/gpu/drm/bridge/lontium-lt9611.c
1158
lt9611->bridge.hdmi_audio_dev = dev;
drivers/gpu/drm/bridge/lontium-lt9611.c
1159
lt9611->bridge.hdmi_audio_max_i2s_playback_channels = 8;
drivers/gpu/drm/bridge/lontium-lt9611.c
1160
lt9611->bridge.hdmi_audio_dai_port = 2;
drivers/gpu/drm/bridge/lontium-lt9611.c
1162
drm_bridge_add(&lt9611->bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
1165
lt9611->dsi0 = lt9611_attach_dsi(lt9611, lt9611->dsi0_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
1166
if (IS_ERR(lt9611->dsi0)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1167
ret = PTR_ERR(lt9611->dsi0);
drivers/gpu/drm/bridge/lontium-lt9611.c
1172
if (lt9611->dsi1_node) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1173
lt9611->dsi1 = lt9611_attach_dsi(lt9611, lt9611->dsi1_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
1174
if (IS_ERR(lt9611->dsi1)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
1175
ret = PTR_ERR(lt9611->dsi1);
drivers/gpu/drm/bridge/lontium-lt9611.c
1180
lt9611_enable_hpd_interrupts(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
1185
drm_bridge_remove(&lt9611->bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
1188
regulator_bulk_disable(ARRAY_SIZE(lt9611->supplies), lt9611->supplies);
drivers/gpu/drm/bridge/lontium-lt9611.c
1191
of_node_put(lt9611->dsi1_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
1192
of_node_put(lt9611->dsi0_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
1199
struct lt9611 *lt9611 = i2c_get_clientdata(client);
drivers/gpu/drm/bridge/lontium-lt9611.c
1202
drm_bridge_remove(&lt9611->bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
1204
regulator_bulk_disable(ARRAY_SIZE(lt9611->supplies), lt9611->supplies);
drivers/gpu/drm/bridge/lontium-lt9611.c
1206
of_node_put(lt9611->dsi1_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
1207
of_node_put(lt9611->dsi0_node);
drivers/gpu/drm/bridge/lontium-lt9611.c
123
if (lt9611->dsi1_node)
drivers/gpu/drm/bridge/lontium-lt9611.c
126
return regmap_multi_reg_write(lt9611->regmap, reg_cfg, ARRAY_SIZE(reg_cfg));
drivers/gpu/drm/bridge/lontium-lt9611.c
129
static void lt9611_mipi_video_setup(struct lt9611 *lt9611,
drivers/gpu/drm/bridge/lontium-lt9611.c
148
regmap_write(lt9611->regmap, 0x830d, (u8)(v_total / 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
149
regmap_write(lt9611->regmap, 0x830e, (u8)(v_total % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
151
regmap_write(lt9611->regmap, 0x830f, (u8)(vactive / 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
152
regmap_write(lt9611->regmap, 0x8310, (u8)(vactive % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
154
regmap_write(lt9611->regmap, 0x8311, (u8)(h_total / 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
155
regmap_write(lt9611->regmap, 0x8312, (u8)(h_total % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
157
regmap_write(lt9611->regmap, 0x8313, (u8)(hactive / 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
158
regmap_write(lt9611->regmap, 0x8314, (u8)(hactive % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
160
regmap_write(lt9611->regmap, 0x8315, (u8)(vsync_len % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
161
regmap_write(lt9611->regmap, 0x8316, (u8)(hsync_len % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
163
regmap_write(lt9611->regmap, 0x8317, (u8)(vfront_porch % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
165
regmap_write(lt9611->regmap, 0x8318, (u8)(vsync_porch % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
167
regmap_write(lt9611->regmap, 0x8319, (u8)(hfront_porch % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
169
regmap_write(lt9611->regmap, 0x831a, (u8)(hsync_porch / 256) |
drivers/gpu/drm/bridge/lontium-lt9611.c
171
regmap_write(lt9611->regmap, 0x831b, (u8)(hsync_porch % 256));
drivers/gpu/drm/bridge/lontium-lt9611.c
174
static void lt9611_pcr_setup(struct lt9611 *lt9611, const struct drm_display_mode *mode, unsigned int postdiv)
drivers/gpu/drm/bridge/lontium-lt9611.c
202
regmap_write(lt9611->regmap, 0x831d, pol);
drivers/gpu/drm/bridge/lontium-lt9611.c
204
regmap_multi_reg_write(lt9611->regmap, reg_cfg, ARRAY_SIZE(reg_cfg));
drivers/gpu/drm/bridge/lontium-lt9611.c
205
if (lt9611->dsi1_node) {
drivers/gpu/drm/bridge/lontium-lt9611.c
211
regmap_write(lt9611->regmap, 0x830b, hact / 256);
drivers/gpu/drm/bridge/lontium-lt9611.c
212
regmap_write(lt9611->regmap, 0x830c, hact % 256);
drivers/gpu/drm/bridge/lontium-lt9611.c
213
regmap_write(lt9611->regmap, 0x8348, hact / 256);
drivers/gpu/drm/bridge/lontium-lt9611.c
214
regmap_write(lt9611->regmap, 0x8349, hact % 256);
drivers/gpu/drm/bridge/lontium-lt9611.c
217
regmap_write(lt9611->regmap, 0x8326, pcr_m);
drivers/gpu/drm/bridge/lontium-lt9611.c
220
regmap_write(lt9611->regmap, 0x8011, 0x5a);
drivers/gpu/drm/bridge/lontium-lt9611.c
221
regmap_write(lt9611->regmap, 0x8011, 0xfa);
drivers/gpu/drm/bridge/lontium-lt9611.c
224
static int lt9611_pll_setup(struct lt9611 *lt9611, const struct drm_display_mode *mode, unsigned int *postdiv)
drivers/gpu/drm/bridge/lontium-lt9611.c
241
regmap_multi_reg_write(lt9611->regmap, reg_cfg, ARRAY_SIZE(reg_cfg));
drivers/gpu/drm/bridge/lontium-lt9611.c
244
regmap_write(lt9611->regmap, 0x812d, 0x88);
drivers/gpu/drm/bridge/lontium-lt9611.c
247
regmap_write(lt9611->regmap, 0x812d, 0x99);
drivers/gpu/drm/bridge/lontium-lt9611.c
250
regmap_write(lt9611->regmap, 0x812d, 0xaa);
drivers/gpu/drm/bridge/lontium-lt9611.c
260
regmap_write(lt9611->regmap, 0x82e3, pclk >> 17); /* pclk[19:16] */
drivers/gpu/drm/bridge/lontium-lt9611.c
261
regmap_write(lt9611->regmap, 0x82e4, pclk >> 9); /* pclk[15:8] */
drivers/gpu/drm/bridge/lontium-lt9611.c
262
regmap_write(lt9611->regmap, 0x82e5, pclk >> 1); /* pclk[7:0] */
drivers/gpu/drm/bridge/lontium-lt9611.c
264
regmap_write(lt9611->regmap, 0x82de, 0x20);
drivers/gpu/drm/bridge/lontium-lt9611.c
265
regmap_write(lt9611->regmap, 0x82de, 0xe0);
drivers/gpu/drm/bridge/lontium-lt9611.c
267
regmap_write(lt9611->regmap, 0x8016, 0xf1);
drivers/gpu/drm/bridge/lontium-lt9611.c
268
regmap_write(lt9611->regmap, 0x8016, 0xf3);
drivers/gpu/drm/bridge/lontium-lt9611.c
273
static int lt9611_read_video_check(struct lt9611 *lt9611, unsigned int reg)
drivers/gpu/drm/bridge/lontium-lt9611.c
278
ret = regmap_read(lt9611->regmap, reg, &temp);
drivers/gpu/drm/bridge/lontium-lt9611.c
282
ret = regmap_read(lt9611->regmap, reg + 1, &temp2);
drivers/gpu/drm/bridge/lontium-lt9611.c
289
static int lt9611_video_check(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
297
temp = lt9611_read_video_check(lt9611, 0x8282);
drivers/gpu/drm/bridge/lontium-lt9611.c
303
temp = lt9611_read_video_check(lt9611, 0x826c);
drivers/gpu/drm/bridge/lontium-lt9611.c
309
temp = lt9611_read_video_check(lt9611, 0x8286);
drivers/gpu/drm/bridge/lontium-lt9611.c
315
temp = lt9611_read_video_check(lt9611, 0x8382);
drivers/gpu/drm/bridge/lontium-lt9611.c
321
temp = lt9611_read_video_check(lt9611, 0x8386);
drivers/gpu/drm/bridge/lontium-lt9611.c
326
dev_info(lt9611->dev,
drivers/gpu/drm/bridge/lontium-lt9611.c
333
dev_err(lt9611->dev, "read video check error\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
337
static void lt9611_hdmi_tx_digital(struct lt9611 *lt9611, bool is_hdmi)
drivers/gpu/drm/bridge/lontium-lt9611.c
340
regmap_write(lt9611->regmap, 0x82d6, 0x8c);
drivers/gpu/drm/bridge/lontium-lt9611.c
342
regmap_write(lt9611->regmap, 0x82d6, 0x0c);
drivers/gpu/drm/bridge/lontium-lt9611.c
343
regmap_write(lt9611->regmap, 0x82d7, 0x04);
drivers/gpu/drm/bridge/lontium-lt9611.c
346
static void lt9611_hdmi_tx_phy(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
366
if (lt9611->ac_mode)
drivers/gpu/drm/bridge/lontium-lt9611.c
369
regmap_multi_reg_write(lt9611->regmap, reg_cfg, ARRAY_SIZE(reg_cfg));
drivers/gpu/drm/bridge/lontium-lt9611.c
374
struct lt9611 *lt9611 = dev_id;
drivers/gpu/drm/bridge/lontium-lt9611.c
378
regmap_read(lt9611->regmap, 0x820f, &irq_flag3);
drivers/gpu/drm/bridge/lontium-lt9611.c
379
regmap_read(lt9611->regmap, 0x820c, &irq_flag0);
drivers/gpu/drm/bridge/lontium-lt9611.c
383
dev_info(lt9611->dev, "hdmi cable disconnected\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
385
regmap_write(lt9611->regmap, 0x8207, 0xbf);
drivers/gpu/drm/bridge/lontium-lt9611.c
386
regmap_write(lt9611->regmap, 0x8207, 0x3f);
drivers/gpu/drm/bridge/lontium-lt9611.c
391
dev_info(lt9611->dev, "hdmi cable connected\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
393
regmap_write(lt9611->regmap, 0x8207, 0x7f);
drivers/gpu/drm/bridge/lontium-lt9611.c
394
regmap_write(lt9611->regmap, 0x8207, 0x3f);
drivers/gpu/drm/bridge/lontium-lt9611.c
397
if (irq_flag3 & 0xc0 && lt9611->bridge.dev)
drivers/gpu/drm/bridge/lontium-lt9611.c
398
drm_kms_helper_hotplug_event(lt9611->bridge.dev);
drivers/gpu/drm/bridge/lontium-lt9611.c
402
dev_info(lt9611->dev, "video input changed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
403
regmap_write(lt9611->regmap, 0x829e, 0xff);
drivers/gpu/drm/bridge/lontium-lt9611.c
404
regmap_write(lt9611->regmap, 0x829e, 0xf7);
drivers/gpu/drm/bridge/lontium-lt9611.c
405
regmap_write(lt9611->regmap, 0x8204, 0xff);
drivers/gpu/drm/bridge/lontium-lt9611.c
406
regmap_write(lt9611->regmap, 0x8204, 0xfe);
drivers/gpu/drm/bridge/lontium-lt9611.c
412
static void lt9611_enable_hpd_interrupts(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
416
regmap_read(lt9611->regmap, 0x8203, &val);
drivers/gpu/drm/bridge/lontium-lt9611.c
419
regmap_write(lt9611->regmap, 0x8203, val);
drivers/gpu/drm/bridge/lontium-lt9611.c
420
regmap_write(lt9611->regmap, 0x8207, 0xff); /* clear */
drivers/gpu/drm/bridge/lontium-lt9611.c
421
regmap_write(lt9611->regmap, 0x8207, 0x3f);
drivers/gpu/drm/bridge/lontium-lt9611.c
424
static void lt9611_sleep_setup(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
438
regmap_multi_reg_write(lt9611->regmap,
drivers/gpu/drm/bridge/lontium-lt9611.c
440
lt9611->sleep = true;
drivers/gpu/drm/bridge/lontium-lt9611.c
443
static int lt9611_power_on(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
471
if (lt9611->power_on)
drivers/gpu/drm/bridge/lontium-lt9611.c
474
ret = regmap_multi_reg_write(lt9611->regmap, seq, ARRAY_SIZE(seq));
drivers/gpu/drm/bridge/lontium-lt9611.c
476
lt9611->power_on = true;
drivers/gpu/drm/bridge/lontium-lt9611.c
481
static int lt9611_power_off(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
485
ret = regmap_write(lt9611->regmap, 0x8130, 0x6a);
drivers/gpu/drm/bridge/lontium-lt9611.c
487
lt9611->power_on = false;
drivers/gpu/drm/bridge/lontium-lt9611.c
492
static void lt9611_reset(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
494
gpiod_set_value_cansleep(lt9611->reset_gpio, 1);
drivers/gpu/drm/bridge/lontium-lt9611.c
497
gpiod_set_value_cansleep(lt9611->reset_gpio, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
500
gpiod_set_value_cansleep(lt9611->reset_gpio, 1);
drivers/gpu/drm/bridge/lontium-lt9611.c
504
static void lt9611_assert_5v(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
506
if (!lt9611->enable_gpio)
drivers/gpu/drm/bridge/lontium-lt9611.c
509
gpiod_set_value_cansleep(lt9611->enable_gpio, 1);
drivers/gpu/drm/bridge/lontium-lt9611.c
513
static int lt9611_regulator_init(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
517
lt9611->supplies[0].supply = "vdd";
drivers/gpu/drm/bridge/lontium-lt9611.c
518
lt9611->supplies[1].supply = "vcc";
drivers/gpu/drm/bridge/lontium-lt9611.c
520
ret = devm_regulator_bulk_get(lt9611->dev, 2, lt9611->supplies);
drivers/gpu/drm/bridge/lontium-lt9611.c
524
return regulator_set_load(lt9611->supplies[0].consumer, 300000);
drivers/gpu/drm/bridge/lontium-lt9611.c
527
static int lt9611_regulator_enable(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
531
ret = regulator_enable(lt9611->supplies[0].consumer);
drivers/gpu/drm/bridge/lontium-lt9611.c
537
ret = regulator_enable(lt9611->supplies[1].consumer);
drivers/gpu/drm/bridge/lontium-lt9611.c
539
regulator_disable(lt9611->supplies[0].consumer);
drivers/gpu/drm/bridge/lontium-lt9611.c
549
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
553
regmap_read(lt9611->regmap, 0x825e, &reg_val);
drivers/gpu/drm/bridge/lontium-lt9611.c
556
lt9611->status = connected ? connector_status_connected :
drivers/gpu/drm/bridge/lontium-lt9611.c
559
return lt9611->status;
drivers/gpu/drm/bridge/lontium-lt9611.c
562
static int lt9611_read_edid(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
569
memset(lt9611->edid_buf, 0, sizeof(lt9611->edid_buf));
drivers/gpu/drm/bridge/lontium-lt9611.c
571
regmap_write(lt9611->regmap, 0x8503, 0xc9);
drivers/gpu/drm/bridge/lontium-lt9611.c
574
regmap_write(lt9611->regmap, 0x8504, 0xa0);
drivers/gpu/drm/bridge/lontium-lt9611.c
576
regmap_write(lt9611->regmap, 0x8505, 0x00);
drivers/gpu/drm/bridge/lontium-lt9611.c
579
regmap_write(lt9611->regmap, 0x8506, EDID_LEN);
drivers/gpu/drm/bridge/lontium-lt9611.c
580
regmap_write(lt9611->regmap, 0x8514, 0x7f);
drivers/gpu/drm/bridge/lontium-lt9611.c
584
regmap_write(lt9611->regmap, 0x8505, i * EDID_LEN);
drivers/gpu/drm/bridge/lontium-lt9611.c
585
regmap_write(lt9611->regmap, 0x8507, 0x36);
drivers/gpu/drm/bridge/lontium-lt9611.c
586
regmap_write(lt9611->regmap, 0x8507, 0x31);
drivers/gpu/drm/bridge/lontium-lt9611.c
587
regmap_write(lt9611->regmap, 0x8507, 0x37);
drivers/gpu/drm/bridge/lontium-lt9611.c
590
regmap_read(lt9611->regmap, 0x8540, &temp);
drivers/gpu/drm/bridge/lontium-lt9611.c
594
regmap_read(lt9611->regmap, 0x8583, &temp);
drivers/gpu/drm/bridge/lontium-lt9611.c
595
lt9611->edid_buf[i * EDID_LEN + j] = temp;
drivers/gpu/drm/bridge/lontium-lt9611.c
599
dev_err(lt9611->dev, "read edid failed: no ack\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
604
dev_err(lt9611->dev, "read edid failed: access not done\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
611
regmap_write(lt9611->regmap, 0x8507, 0x1f);
drivers/gpu/drm/bridge/lontium-lt9611.c
618
struct lt9611 *lt9611 = data;
drivers/gpu/drm/bridge/lontium-lt9611.c
630
ret = lt9611_read_edid(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
632
dev_err(lt9611->dev, "edid read failed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
638
memcpy(buf, lt9611->edid_buf + (block * 128), len);
drivers/gpu/drm/bridge/lontium-lt9611.c
647
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
668
lt9611_mipi_input_digital(lt9611, mode);
drivers/gpu/drm/bridge/lontium-lt9611.c
669
lt9611_pll_setup(lt9611, mode, &postdiv);
drivers/gpu/drm/bridge/lontium-lt9611.c
670
lt9611_mipi_video_setup(lt9611, mode);
drivers/gpu/drm/bridge/lontium-lt9611.c
671
lt9611_pcr_setup(lt9611, mode, postdiv);
drivers/gpu/drm/bridge/lontium-lt9611.c
673
if (lt9611_power_on(lt9611)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
674
dev_err(lt9611->dev, "power on failed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
678
lt9611_mipi_input_analog(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
680
lt9611_hdmi_tx_digital(lt9611, connector->display_info.is_hdmi);
drivers/gpu/drm/bridge/lontium-lt9611.c
681
lt9611_hdmi_tx_phy(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
685
lt9611_video_check(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
688
regmap_write(lt9611->regmap, 0x8130, 0xea);
drivers/gpu/drm/bridge/lontium-lt9611.c
694
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
698
ret = regmap_write(lt9611->regmap, 0x8130, 0x6a);
drivers/gpu/drm/bridge/lontium-lt9611.c
700
dev_err(lt9611->dev, "video on failed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
704
if (lt9611_power_off(lt9611)) {
drivers/gpu/drm/bridge/lontium-lt9611.c
705
dev_err(lt9611->dev, "power on failed\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
710
static struct mipi_dsi_device *lt9611_attach_dsi(struct lt9611 *lt9611,
drivers/gpu/drm/bridge/lontium-lt9611.c
713
const struct mipi_dsi_device_info info = { "lt9611", 0, lt9611->dev->of_node};
drivers/gpu/drm/bridge/lontium-lt9611.c
716
struct device *dev = lt9611->dev;
drivers/gpu/drm/bridge/lontium-lt9611.c
721
return ERR_PTR(dev_err_probe(lt9611->dev, -EPROBE_DEFER, "failed to find dsi host\n"));
drivers/gpu/drm/bridge/lontium-lt9611.c
725
dev_err(lt9611->dev, "failed to create dsi device\n");
drivers/gpu/drm/bridge/lontium-lt9611.c
747
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
749
return drm_bridge_attach(encoder, lt9611->next_bridge,
drivers/gpu/drm/bridge/lontium-lt9611.c
757
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
762
if (mode->hdisplay > 2000 && !lt9611->dsi1_node)
drivers/gpu/drm/bridge/lontium-lt9611.c
771
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
779
if (!lt9611->sleep)
drivers/gpu/drm/bridge/lontium-lt9611.c
782
regmap_multi_reg_write(lt9611->regmap,
drivers/gpu/drm/bridge/lontium-lt9611.c
785
lt9611->sleep = false;
drivers/gpu/drm/bridge/lontium-lt9611.c
791
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
793
lt9611_sleep_setup(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
799
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
801
lt9611_power_on(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
802
return drm_edid_read_custom(connector, lt9611_get_edid_block, lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
807
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
809
lt9611_enable_hpd_interrupts(lt9611);
drivers/gpu/drm/bridge/lontium-lt9611.c
850
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
852
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_AUDIO, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
859
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
861
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_AVI, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
868
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
870
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_SPD, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
877
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
879
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_HDMI, 0);
drivers/gpu/drm/bridge/lontium-lt9611.c
887
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
89
static struct lt9611 *bridge_to_lt9611(struct drm_bridge *bridge)
drivers/gpu/drm/bridge/lontium-lt9611.c
891
regmap_write(lt9611->regmap, 0x84b2 + i, buffer[i]);
drivers/gpu/drm/bridge/lontium-lt9611.c
893
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_AUDIO, LT9611_INFOFRAME_AUDIO);
drivers/gpu/drm/bridge/lontium-lt9611.c
901
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
905
regmap_write(lt9611->regmap, 0x8440 + i, buffer[i]);
drivers/gpu/drm/bridge/lontium-lt9611.c
907
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_AVI, LT9611_INFOFRAME_AVI);
drivers/gpu/drm/bridge/lontium-lt9611.c
91
return container_of(bridge, struct lt9611, bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
915
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
919
regmap_write(lt9611->regmap, 0x8493 + i, buffer[i]);
drivers/gpu/drm/bridge/lontium-lt9611.c
921
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_SPD, LT9611_INFOFRAME_SPD);
drivers/gpu/drm/bridge/lontium-lt9611.c
929
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
933
regmap_write(lt9611->regmap, 0x8474 + i, buffer[i]);
drivers/gpu/drm/bridge/lontium-lt9611.c
935
regmap_update_bits(lt9611->regmap, 0x843d, LT9611_INFOFRAME_HDMI, LT9611_INFOFRAME_HDMI);
drivers/gpu/drm/bridge/lontium-lt9611.c
94
static int lt9611_mipi_input_analog(struct lt9611 *lt9611)
drivers/gpu/drm/bridge/lontium-lt9611.c
955
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
957
regmap_write(lt9611->regmap, 0x82d6, 0x8c);
drivers/gpu/drm/bridge/lontium-lt9611.c
958
regmap_write(lt9611->regmap, 0x82d7, 0x04);
drivers/gpu/drm/bridge/lontium-lt9611.c
960
regmap_write(lt9611->regmap, 0x8406, 0x08);
drivers/gpu/drm/bridge/lontium-lt9611.c
961
regmap_write(lt9611->regmap, 0x8407, 0x10);
drivers/gpu/drm/bridge/lontium-lt9611.c
963
regmap_write(lt9611->regmap, 0x8434, 0xd5);
drivers/gpu/drm/bridge/lontium-lt9611.c
973
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
976
regmap_write(lt9611->regmap, 0x840f, 0x2b);
drivers/gpu/drm/bridge/lontium-lt9611.c
978
regmap_write(lt9611->regmap, 0x840f, 0xab);
drivers/gpu/drm/bridge/lontium-lt9611.c
982
regmap_write(lt9611->regmap, 0x8435, 0x00);
drivers/gpu/drm/bridge/lontium-lt9611.c
983
regmap_write(lt9611->regmap, 0x8436, 0x18);
drivers/gpu/drm/bridge/lontium-lt9611.c
984
regmap_write(lt9611->regmap, 0x8437, 0x00);
drivers/gpu/drm/bridge/lontium-lt9611.c
993
struct lt9611 *lt9611 = bridge_to_lt9611(bridge);
drivers/gpu/drm/bridge/lontium-lt9611.c
997
regmap_write(lt9611->regmap, 0x8406, 0x00);
drivers/gpu/drm/bridge/lontium-lt9611.c
998
regmap_write(lt9611->regmap, 0x8407, 0x00);