Symbol: lt6911uxe
drivers/media/i2c/lt6911uxe.c
108
static inline struct lt6911uxe *to_lt6911uxe(struct v4l2_subdev *sd)
drivers/media/i2c/lt6911uxe.c
110
return container_of(sd, struct lt6911uxe, sd);
drivers/media/i2c/lt6911uxe.c
113
static s64 get_pixel_rate(struct lt6911uxe *lt6911uxe)
drivers/media/i2c/lt6911uxe.c
117
pixel_rate = (s64)lt6911uxe->cur_mode.width *
drivers/media/i2c/lt6911uxe.c
118
lt6911uxe->cur_mode.height *
drivers/media/i2c/lt6911uxe.c
119
lt6911uxe->cur_mode.fps * 16;
drivers/media/i2c/lt6911uxe.c
120
do_div(pixel_rate, lt6911uxe->cur_mode.lanes);
drivers/media/i2c/lt6911uxe.c
128
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
135
bt->width = lt6911uxe->cur_mode.width;
drivers/media/i2c/lt6911uxe.c
136
bt->height = lt6911uxe->cur_mode.height;
drivers/media/i2c/lt6911uxe.c
137
bt->vsync = lt6911uxe->cur_mode.vtotal - lt6911uxe->cur_mode.height;
drivers/media/i2c/lt6911uxe.c
138
bt->hsync = lt6911uxe->cur_mode.htotal - lt6911uxe->cur_mode.width;
drivers/media/i2c/lt6911uxe.c
139
bt->pixelclock = lt6911uxe->cur_mode.pixel_clk;
drivers/media/i2c/lt6911uxe.c
147
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
151
if (v4l2_match_dv_timings(&lt6911uxe->timings, timings, 0, false)) {
drivers/media/i2c/lt6911uxe.c
161
lt6911uxe->timings = *timings;
drivers/media/i2c/lt6911uxe.c
170
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
175
*timings = lt6911uxe->timings;
drivers/media/i2c/lt6911uxe.c
218
static int lt6911uxe_status_update(struct lt6911uxe *lt6911uxe)
drivers/media/i2c/lt6911uxe.c
220
struct i2c_client *client = v4l2_get_subdevdata(&lt6911uxe->sd);
drivers/media/i2c/lt6911uxe.c
227
cci_read(lt6911uxe->regmap, REG_INT_HDMI, &int_event, &ret);
drivers/media/i2c/lt6911uxe.c
236
cci_read(lt6911uxe->regmap, REG_BYTE_CLK, &byte_clk, &ret);
drivers/media/i2c/lt6911uxe.c
238
cci_read(lt6911uxe->regmap, REG_HALF_PIX_CLK,
drivers/media/i2c/lt6911uxe.c
248
cci_read(lt6911uxe->regmap, REG_HALF_H_TOTAL,
drivers/media/i2c/lt6911uxe.c
250
cci_read(lt6911uxe->regmap, REG_V_TOTAL, &vtotal, &ret);
drivers/media/i2c/lt6911uxe.c
263
cci_read(lt6911uxe->regmap, REG_HALF_H_ACTIVE,
drivers/media/i2c/lt6911uxe.c
265
cci_read(lt6911uxe->regmap, REG_V_ACTIVE, &height, &ret);
drivers/media/i2c/lt6911uxe.c
275
cci_read(lt6911uxe->regmap, REG_MIPI_FORMAT, &format, &ret);
drivers/media/i2c/lt6911uxe.c
281
lt6911uxe->cur_mode.height = height;
drivers/media/i2c/lt6911uxe.c
282
lt6911uxe->cur_mode.width = half_width * 2;
drivers/media/i2c/lt6911uxe.c
283
lt6911uxe->cur_mode.fps = fps;
drivers/media/i2c/lt6911uxe.c
285
lt6911uxe->cur_mode.link_freq = byte_clk * 4;
drivers/media/i2c/lt6911uxe.c
286
lt6911uxe->cur_mode.pixel_clk = half_pix_clk * 2;
drivers/media/i2c/lt6911uxe.c
287
lt6911uxe->cur_mode.vtotal = vtotal;
drivers/media/i2c/lt6911uxe.c
288
lt6911uxe->cur_mode.htotal = half_htotal * 2;
drivers/media/i2c/lt6911uxe.c
292
cci_write(lt6911uxe->regmap, REG_MIPI_TX_CTRL, 0x0, &ret);
drivers/media/i2c/lt6911uxe.c
293
lt6911uxe->cur_mode.height = 0;
drivers/media/i2c/lt6911uxe.c
294
lt6911uxe->cur_mode.width = 0;
drivers/media/i2c/lt6911uxe.c
295
lt6911uxe->cur_mode.fps = 0;
drivers/media/i2c/lt6911uxe.c
296
lt6911uxe->cur_mode.link_freq = 0;
drivers/media/i2c/lt6911uxe.c
302
v4l2_subdev_notify_event(&lt6911uxe->sd, &lt6911uxe_ev_source_change);
drivers/media/i2c/lt6911uxe.c
306
static int lt6911uxe_init_controls(struct lt6911uxe *lt6911uxe)
drivers/media/i2c/lt6911uxe.c
312
ctrl_hdlr = &lt6911uxe->ctrl_handler;
drivers/media/i2c/lt6911uxe.c
317
pixel_rate = get_pixel_rate(lt6911uxe);
drivers/media/i2c/lt6911uxe.c
318
lt6911uxe->pixel_rate = v4l2_ctrl_new_std(ctrl_hdlr, NULL,
drivers/media/i2c/lt6911uxe.c
327
lt6911uxe->sd.ctrl_handler = ctrl_hdlr;
drivers/media/i2c/lt6911uxe.c
350
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
357
cci_write(lt6911uxe->regmap, REG_MIPI_TX_CTRL, 0x1, &ret);
drivers/media/i2c/lt6911uxe.c
374
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
375
struct i2c_client *client = v4l2_get_subdevdata(&lt6911uxe->sd);
drivers/media/i2c/lt6911uxe.c
378
ret = cci_write(lt6911uxe->regmap, REG_MIPI_TX_CTRL, 0x0, NULL);
drivers/media/i2c/lt6911uxe.c
390
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
393
lt6911uxe_update_pad_format(&lt6911uxe->cur_mode, &fmt->format);
drivers/media/i2c/lt6911uxe.c
398
pixel_rate = get_pixel_rate(lt6911uxe);
drivers/media/i2c/lt6911uxe.c
399
__v4l2_ctrl_modify_range(lt6911uxe->pixel_rate, pixel_rate,
drivers/media/i2c/lt6911uxe.c
409
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
414
code->code = lt6911uxe->cur_mode.code;
drivers/media/i2c/lt6911uxe.c
423
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
428
cfg->link_freq = lt6911uxe->cur_mode.link_freq;
drivers/media/i2c/lt6911uxe.c
488
static int lt6911uxe_fwnode_parse(struct lt6911uxe *lt6911uxe,
drivers/media/i2c/lt6911uxe.c
519
lt6911uxe->cur_mode.lanes = bus_cfg.bus.mipi_csi2.num_data_lanes;
drivers/media/i2c/lt6911uxe.c
520
lt6911uxe->cur_mode.code = MEDIA_BUS_FMT_UYVY8_1X16;
drivers/media/i2c/lt6911uxe.c
529
static int lt6911uxe_identify_module(struct lt6911uxe *lt6911uxe,
drivers/media/i2c/lt6911uxe.c
536
cci_write(lt6911uxe->regmap, REG_ENABLE_I2C, 0x1, &ret);
drivers/media/i2c/lt6911uxe.c
537
cci_read(lt6911uxe->regmap, REG_CHIP_ID, &val, &ret);
drivers/media/i2c/lt6911uxe.c
538
cci_write(lt6911uxe->regmap, REG_ENABLE_I2C, 0x0, &ret);
drivers/media/i2c/lt6911uxe.c
553
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
559
lt6911uxe_status_update(lt6911uxe);
drivers/media/i2c/lt6911uxe.c
574
struct lt6911uxe *lt6911uxe = to_lt6911uxe(sd);
drivers/media/i2c/lt6911uxe.c
576
free_irq(gpiod_to_irq(lt6911uxe->irq_gpio), lt6911uxe);
drivers/media/i2c/lt6911uxe.c
580
v4l2_ctrl_handler_free(&lt6911uxe->ctrl_handler);
drivers/media/i2c/lt6911uxe.c
587
struct lt6911uxe *lt6911uxe;
drivers/media/i2c/lt6911uxe.c
591
lt6911uxe = devm_kzalloc(dev, sizeof(*lt6911uxe), GFP_KERNEL);
drivers/media/i2c/lt6911uxe.c
592
if (!lt6911uxe)
drivers/media/i2c/lt6911uxe.c
595
lt6911uxe->regmap = devm_regmap_init_i2c(client,
drivers/media/i2c/lt6911uxe.c
597
if (IS_ERR(lt6911uxe->regmap))
drivers/media/i2c/lt6911uxe.c
598
return dev_err_probe(dev, PTR_ERR(lt6911uxe->regmap),
drivers/media/i2c/lt6911uxe.c
601
v4l2_i2c_subdev_init(&lt6911uxe->sd, client, &lt6911uxe_subdev_ops);
drivers/media/i2c/lt6911uxe.c
603
lt6911uxe->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
drivers/media/i2c/lt6911uxe.c
604
if (IS_ERR(lt6911uxe->reset_gpio))
drivers/media/i2c/lt6911uxe.c
605
return dev_err_probe(dev, PTR_ERR(lt6911uxe->reset_gpio),
drivers/media/i2c/lt6911uxe.c
608
lt6911uxe->irq_gpio = devm_gpiod_get(dev, "hpd", GPIOD_IN);
drivers/media/i2c/lt6911uxe.c
609
if (IS_ERR(lt6911uxe->irq_gpio))
drivers/media/i2c/lt6911uxe.c
610
return dev_err_probe(dev, PTR_ERR(lt6911uxe->irq_gpio),
drivers/media/i2c/lt6911uxe.c
613
ret = lt6911uxe_fwnode_parse(lt6911uxe, dev);
drivers/media/i2c/lt6911uxe.c
619
ret = lt6911uxe_identify_module(lt6911uxe, dev);
drivers/media/i2c/lt6911uxe.c
623
ret = lt6911uxe_init_controls(lt6911uxe);
drivers/media/i2c/lt6911uxe.c
627
lt6911uxe->sd.dev = dev;
drivers/media/i2c/lt6911uxe.c
628
lt6911uxe->sd.internal_ops = &lt6911uxe_internal_ops;
drivers/media/i2c/lt6911uxe.c
629
lt6911uxe->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
drivers/media/i2c/lt6911uxe.c
630
lt6911uxe->sd.entity.ops = &lt6911uxe_subdev_entity_ops;
drivers/media/i2c/lt6911uxe.c
631
lt6911uxe->sd.entity.function = MEDIA_ENT_F_VID_IF_BRIDGE;
drivers/media/i2c/lt6911uxe.c
632
lt6911uxe->pad.flags = MEDIA_PAD_FL_SOURCE;
drivers/media/i2c/lt6911uxe.c
633
ret = media_entity_pads_init(&lt6911uxe->sd.entity, 1, &lt6911uxe->pad);
drivers/media/i2c/lt6911uxe.c
647
ret = v4l2_subdev_init_finalize(&lt6911uxe->sd);
drivers/media/i2c/lt6911uxe.c
654
ret = request_threaded_irq(gpiod_to_irq(lt6911uxe->irq_gpio), NULL,
drivers/media/i2c/lt6911uxe.c
657
IRQF_ONESHOT, NULL, lt6911uxe);
drivers/media/i2c/lt6911uxe.c
663
ret = v4l2_async_register_subdev_sensor(&lt6911uxe->sd);
drivers/media/i2c/lt6911uxe.c
672
free_irq(gpiod_to_irq(lt6911uxe->irq_gpio), lt6911uxe);
drivers/media/i2c/lt6911uxe.c
675
v4l2_subdev_cleanup(&lt6911uxe->sd);
drivers/media/i2c/lt6911uxe.c
680
media_entity_cleanup(&lt6911uxe->sd.entity);
drivers/media/i2c/lt6911uxe.c
683
v4l2_ctrl_handler_free(lt6911uxe->sd.ctrl_handler);