Lines Matching refs:lt7911d
21 struct lt7911d { struct
39 static int I2C_Write_Byte(struct lt7911d *lt7911d, unsigned char reg, unsigned char val) in I2C_Write_Byte() argument
43 ret = regmap_write(lt7911d->regmap, reg, val); in I2C_Write_Byte()
51 static unsigned char I2C_Read_Byte(struct lt7911d *lt7911d, unsigned char reg) in I2C_Read_Byte() argument
56 ret = regmap_read(lt7911d->regmap, reg, &val); in I2C_Read_Byte()
65 static bool lt7911d_check_chip_id(struct lt7911d *lt7911d) in lt7911d_check_chip_id() argument
70 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_chip_id()
71 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_check_chip_id()
73 I2C_Write_Byte(lt7911d, 0xFF, 0xA0); in lt7911d_check_chip_id()
74 id_h = I2C_Read_Byte(lt7911d, 0x00); in lt7911d_check_chip_id()
75 id_l = I2C_Read_Byte(lt7911d, 0x01); in lt7911d_check_chip_id()
81 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_chip_id()
82 I2C_Write_Byte(lt7911d, 0xEE, 0x00); in lt7911d_check_chip_id()
87 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_chip_id()
88 I2C_Write_Byte(lt7911d, 0xEE, 0x00); in lt7911d_check_chip_id()
93 static int lt7911d_check_fw_version(struct lt7911d *lt7911d) in lt7911d_check_fw_version() argument
97 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_fw_version()
98 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_check_fw_version()
101 I2C_Write_Byte(lt7911d, 0xFF, 0xD2); in lt7911d_check_fw_version()
102 fw = I2C_Read_Byte(lt7911d, 0x11); in lt7911d_check_fw_version()
107 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_fw_version()
108 I2C_Write_Byte(lt7911d, 0xEE, 0x00); in lt7911d_check_fw_version()
112 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_check_fw_version()
113 I2C_Write_Byte(lt7911d, 0xEE, 0x00); in lt7911d_check_fw_version()
118 static void lt7911d_config_para(struct lt7911d *lt7911d) in lt7911d_config_para() argument
120 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_config_para()
121 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_config_para()
122 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_config_para()
123 I2C_Write_Byte(lt7911d, 0x5E, 0xC0); in lt7911d_config_para()
124 I2C_Write_Byte(lt7911d, 0x58, 0x00); in lt7911d_config_para()
125 I2C_Write_Byte(lt7911d, 0x59, 0x51); in lt7911d_config_para()
126 I2C_Write_Byte(lt7911d, 0x5A, 0x92); in lt7911d_config_para()
127 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_config_para()
130 static void lt7911d_block_erase(struct lt7911d *lt7911d) in lt7911d_block_erase() argument
132 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_block_erase()
133 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_block_erase()
134 I2C_Write_Byte(lt7911d, 0x5A, 0x86); in lt7911d_block_erase()
135 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_block_erase()
136 I2C_Write_Byte(lt7911d, 0x5B, 0x00); in lt7911d_block_erase()
137 I2C_Write_Byte(lt7911d, 0x5C, 0x00); in lt7911d_block_erase()
138 I2C_Write_Byte(lt7911d, 0x5D, 0x00); in lt7911d_block_erase()
139 I2C_Write_Byte(lt7911d, 0x5A, 0x83); in lt7911d_block_erase()
140 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_block_erase()
147 static void SaveHdcpKeyFromFlash(struct lt7911d *lt7911d) in SaveHdcpKeyFromFlash() argument
154 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in SaveHdcpKeyFromFlash()
155 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in SaveHdcpKeyFromFlash()
156 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in SaveHdcpKeyFromFlash()
157 I2C_Write_Byte(lt7911d, 0x02, 0xdf); in SaveHdcpKeyFromFlash()
158 I2C_Write_Byte(lt7911d, 0x02, 0xff); in SaveHdcpKeyFromFlash()
159 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in SaveHdcpKeyFromFlash()
160 I2C_Write_Byte(lt7911d, 0x5a, 0x86); in SaveHdcpKeyFromFlash()
161 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in SaveHdcpKeyFromFlash()
174 I2C_Write_Byte(lt7911d, 0x5E, 0x6f); in SaveHdcpKeyFromFlash()
175 I2C_Write_Byte(lt7911d, 0x5A, 0xA2); in SaveHdcpKeyFromFlash()
176 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in SaveHdcpKeyFromFlash()
177 I2C_Write_Byte(lt7911d, 0x5B, addr[0]); in SaveHdcpKeyFromFlash()
178 I2C_Write_Byte(lt7911d, 0x5C, addr[1]); in SaveHdcpKeyFromFlash()
179 I2C_Write_Byte(lt7911d, 0x5D, addr[2]); in SaveHdcpKeyFromFlash()
180 I2C_Write_Byte(lt7911d, 0x5A, 0x92); in SaveHdcpKeyFromFlash()
181 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in SaveHdcpKeyFromFlash()
182 I2C_Write_Byte(lt7911d, 0x58, 0x01); in SaveHdcpKeyFromFlash()
188 HdcpKey[i * 16 + j] = I2C_Read_Byte(lt7911d, 0x5F); in SaveHdcpKeyFromFlash()
196 I2C_Write_Byte(lt7911d, 0x5a, 0x8a); in SaveHdcpKeyFromFlash()
197 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in SaveHdcpKeyFromFlash()
200 static void lt7911d_write_firmware_to_flash(struct lt7911d *lt7911d) in lt7911d_write_firmware_to_flash() argument
207 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_write_firmware_to_flash()
208 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_write_firmware_to_flash()
209 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in lt7911d_write_firmware_to_flash()
210 I2C_Write_Byte(lt7911d, 0x02, 0xdf); in lt7911d_write_firmware_to_flash()
211 I2C_Write_Byte(lt7911d, 0x02, 0xff); in lt7911d_write_firmware_to_flash()
212 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_write_firmware_to_flash()
213 I2C_Write_Byte(lt7911d, 0x5a, 0x86); in lt7911d_write_firmware_to_flash()
214 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_write_firmware_to_flash()
231 I2C_Write_Byte(lt7911d, 0x5A, 0x86); in lt7911d_write_firmware_to_flash()
232 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_firmware_to_flash()
234 I2C_Write_Byte(lt7911d, 0x5E, 0xef); in lt7911d_write_firmware_to_flash()
235 I2C_Write_Byte(lt7911d, 0x5A, 0xA2); in lt7911d_write_firmware_to_flash()
236 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_firmware_to_flash()
237 I2C_Write_Byte(lt7911d, 0x58, 0x01); in lt7911d_write_firmware_to_flash()
246 I2C_Write_Byte(lt7911d, 0x59, FirmwareData[i*16 + j]); in lt7911d_write_firmware_to_flash()
250 I2C_Write_Byte(lt7911d, 0x5B, addr[0]); in lt7911d_write_firmware_to_flash()
251 I2C_Write_Byte(lt7911d, 0x5C, addr[1]); in lt7911d_write_firmware_to_flash()
252 I2C_Write_Byte(lt7911d, 0x5D, addr[2]); in lt7911d_write_firmware_to_flash()
253 I2C_Write_Byte(lt7911d, 0x5E, 0xE0); in lt7911d_write_firmware_to_flash()
254 I2C_Write_Byte(lt7911d, 0x5A, 0x92); in lt7911d_write_firmware_to_flash()
255 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_firmware_to_flash()
263 I2C_Write_Byte(lt7911d, 0x5a, 0x8a); in lt7911d_write_firmware_to_flash()
264 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_write_firmware_to_flash()
267 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in lt7911d_write_firmware_to_flash()
268 I2C_Write_Byte(lt7911d, 0x02, 0xDF); in lt7911d_write_firmware_to_flash()
269 I2C_Write_Byte(lt7911d, 0x02, 0xFF); in lt7911d_write_firmware_to_flash()
273 static void lt7911d_write_hdcpkey_to_flash(struct lt7911d *lt7911d) in lt7911d_write_hdcpkey_to_flash() argument
280 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_write_hdcpkey_to_flash()
281 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_write_hdcpkey_to_flash()
282 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in lt7911d_write_hdcpkey_to_flash()
283 I2C_Write_Byte(lt7911d, 0x02, 0xdf); in lt7911d_write_hdcpkey_to_flash()
284 I2C_Write_Byte(lt7911d, 0x02, 0xff); in lt7911d_write_hdcpkey_to_flash()
285 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_write_hdcpkey_to_flash()
286 I2C_Write_Byte(lt7911d, 0x5a, 0x86); in lt7911d_write_hdcpkey_to_flash()
287 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_write_hdcpkey_to_flash()
299 I2C_Write_Byte(lt7911d, 0x5A, 0x86); in lt7911d_write_hdcpkey_to_flash()
300 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_hdcpkey_to_flash()
302 I2C_Write_Byte(lt7911d, 0x5E, 0xef); in lt7911d_write_hdcpkey_to_flash()
303 I2C_Write_Byte(lt7911d, 0x5A, 0xA2); in lt7911d_write_hdcpkey_to_flash()
304 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_hdcpkey_to_flash()
305 I2C_Write_Byte(lt7911d, 0x58, 0x01); in lt7911d_write_hdcpkey_to_flash()
314 I2C_Write_Byte(lt7911d, 0x59, HdcpKey[i*16 + j]); in lt7911d_write_hdcpkey_to_flash()
318 I2C_Write_Byte(lt7911d, 0x59, 0xFF); in lt7911d_write_hdcpkey_to_flash()
319 I2C_Write_Byte(lt7911d, 0x59, 0xFF); in lt7911d_write_hdcpkey_to_flash()
323 I2C_Write_Byte(lt7911d, 0x5B, addr[0]); in lt7911d_write_hdcpkey_to_flash()
324 I2C_Write_Byte(lt7911d, 0x5C, addr[1]); in lt7911d_write_hdcpkey_to_flash()
325 I2C_Write_Byte(lt7911d, 0x5D, addr[2]); in lt7911d_write_hdcpkey_to_flash()
326 I2C_Write_Byte(lt7911d, 0x5E, 0xE0); in lt7911d_write_hdcpkey_to_flash()
327 I2C_Write_Byte(lt7911d, 0x5A, 0x92); in lt7911d_write_hdcpkey_to_flash()
328 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_write_hdcpkey_to_flash()
336 I2C_Write_Byte(lt7911d, 0x5a, 0x8a); in lt7911d_write_hdcpkey_to_flash()
337 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_write_hdcpkey_to_flash()
340 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in lt7911d_write_hdcpkey_to_flash()
341 I2C_Write_Byte(lt7911d, 0x02, 0xDF); in lt7911d_write_hdcpkey_to_flash()
342 I2C_Write_Byte(lt7911d, 0x02, 0xFF); in lt7911d_write_hdcpkey_to_flash()
346 static void lt7911d_read_firmware_from_flash(struct lt7911d *lt7911d) in lt7911d_read_firmware_from_flash() argument
355 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_read_firmware_from_flash()
356 I2C_Write_Byte(lt7911d, 0xEE, 0x01); in lt7911d_read_firmware_from_flash()
357 I2C_Write_Byte(lt7911d, 0xFF, 0x90); in lt7911d_read_firmware_from_flash()
358 I2C_Write_Byte(lt7911d, 0x02, 0xdf); in lt7911d_read_firmware_from_flash()
359 I2C_Write_Byte(lt7911d, 0x02, 0xff); in lt7911d_read_firmware_from_flash()
360 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_read_firmware_from_flash()
361 I2C_Write_Byte(lt7911d, 0x5a, 0x86); in lt7911d_read_firmware_from_flash()
362 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_read_firmware_from_flash()
378 I2C_Write_Byte(lt7911d, 0x5E, 0x6f); in lt7911d_read_firmware_from_flash()
379 I2C_Write_Byte(lt7911d, 0x5A, 0xA2); in lt7911d_read_firmware_from_flash()
380 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_read_firmware_from_flash()
381 I2C_Write_Byte(lt7911d, 0x5B, addr[0]); in lt7911d_read_firmware_from_flash()
382 I2C_Write_Byte(lt7911d, 0x5C, addr[1]); in lt7911d_read_firmware_from_flash()
383 I2C_Write_Byte(lt7911d, 0x5D, addr[2]); in lt7911d_read_firmware_from_flash()
384 I2C_Write_Byte(lt7911d, 0x5A, 0x92); in lt7911d_read_firmware_from_flash()
385 I2C_Write_Byte(lt7911d, 0x5A, 0x82); in lt7911d_read_firmware_from_flash()
386 I2C_Write_Byte(lt7911d, 0x58, 0x01); in lt7911d_read_firmware_from_flash()
394 ReadFirmware[i*16 + j] = I2C_Read_Byte(lt7911d, 0x5F); in lt7911d_read_firmware_from_flash()
404 I2C_Write_Byte(lt7911d, 0x5a, 0x8a); in lt7911d_read_firmware_from_flash()
405 I2C_Write_Byte(lt7911d, 0x5a, 0x82); in lt7911d_read_firmware_from_flash()
408 static int lt7911_compare_firmware(struct lt7911d *lt7911d) in lt7911_compare_firmware() argument
422 static int lt7911d_firmware_upgrade(struct lt7911d *lt7911d) in lt7911d_firmware_upgrade() argument
426 if (lt7911d_check_chip_id(lt7911d)) { in lt7911d_firmware_upgrade()
427 if (lt7911d_check_fw_version(lt7911d) == 0) { in lt7911d_firmware_upgrade()
428 lt7911d_config_para(lt7911d); in lt7911d_firmware_upgrade()
429 SaveHdcpKeyFromFlash(lt7911d); in lt7911d_firmware_upgrade()
430 lt7911d_block_erase(lt7911d); in lt7911d_firmware_upgrade()
431 lt7911d_write_firmware_to_flash(lt7911d); in lt7911d_firmware_upgrade()
432 lt7911d_write_hdcpkey_to_flash(lt7911d); in lt7911d_firmware_upgrade()
433 lt7911d_read_firmware_from_flash(lt7911d); in lt7911d_firmware_upgrade()
435 if (!lt7911_compare_firmware(lt7911d)) { in lt7911d_firmware_upgrade()
448 I2C_Write_Byte(lt7911d, 0xFF, 0x80); in lt7911d_firmware_upgrade()
449 I2C_Write_Byte(lt7911d, 0xEE, 0x00); in lt7911d_firmware_upgrade()
464 struct lt7911d *lt7911d = container_of(self, struct lt7911d, fb_notif); in lt7911d_fb_notifier_callback() local
471 if (lt7911d->fb_blank == fb_blank) in lt7911d_fb_notifier_callback()
475 if (lt7911d->reset_gpio) { in lt7911d_fb_notifier_callback()
476 gpiod_direction_output(lt7911d->reset_gpio, 1); in lt7911d_fb_notifier_callback()
478 gpiod_direction_output(lt7911d->reset_gpio, 0); in lt7911d_fb_notifier_callback()
483 lt7911d->fb_blank = fb_blank; in lt7911d_fb_notifier_callback()
492 struct lt7911d *lt7911d; in lt7911d_i2c_probe() local
495 lt7911d = devm_kzalloc(dev, sizeof(*lt7911d), GFP_KERNEL); in lt7911d_i2c_probe()
496 if (!lt7911d) in lt7911d_i2c_probe()
499 lt7911d->dev = dev; in lt7911d_i2c_probe()
500 i2c_set_clientdata(client, lt7911d); in lt7911d_i2c_probe()
502 lt7911d->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); in lt7911d_i2c_probe()
503 if (IS_ERR(lt7911d->reset_gpio)) in lt7911d_i2c_probe()
504 return dev_err_probe(dev, PTR_ERR(lt7911d->reset_gpio), in lt7911d_i2c_probe()
507 gpiod_set_consumer_name(lt7911d->reset_gpio, "lt7911d-reset"); in lt7911d_i2c_probe()
509 lt7911d->enable_gpio = devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_LOW); in lt7911d_i2c_probe()
510 if (IS_ERR(lt7911d->enable_gpio)) in lt7911d_i2c_probe()
511 return dev_err_probe(dev, PTR_ERR(lt7911d->enable_gpio), in lt7911d_i2c_probe()
514 lt7911d->regmap = devm_regmap_init_i2c(client, <7911d_regmap_config); in lt7911d_i2c_probe()
515 if (IS_ERR(lt7911d->regmap)) in lt7911d_i2c_probe()
516 return dev_err_probe(dev, PTR_ERR(lt7911d->regmap), in lt7911d_i2c_probe()
519 lt7911d->fb_blank = FB_BLANK_UNBLANK; in lt7911d_i2c_probe()
520 lt7911d->fb_notif.notifier_call = lt7911d_fb_notifier_callback; in lt7911d_i2c_probe()
521 ret = fb_register_client(<7911d->fb_notif); in lt7911d_i2c_probe()
526 if (!lt7911d_firmware_upgrade(lt7911d)) in lt7911d_i2c_probe()
537 struct lt7911d *lt7911d = i2c_get_clientdata(client); in lt7911d_i2c_shutdown() local
539 gpiod_direction_output(lt7911d->reset_gpio, 1); in lt7911d_i2c_shutdown()
545 struct lt7911d *lt7911d = i2c_get_clientdata(client); in lt7911d_i2c_remove() local
547 fb_unregister_client(<7911d->fb_notif); in lt7911d_i2c_remove()