Lines Matching refs:client

60 #define mt9t112_reg_write(ret, client, a, b) \  argument
61 ECHECKER(ret, __mt9t112_reg_write(client, a, b))
62 #define mt9t112_mcu_write(ret, client, a, b) \ argument
63 ECHECKER(ret, __mt9t112_mcu_write(client, a, b))
65 #define mt9t112_reg_mask_set(ret, client, a, b, c) \ argument
66 ECHECKER(ret, __mt9t112_reg_mask_set(client, a, b, c))
67 #define mt9t112_mcu_mask_set(ret, client, a, b, c) \ argument
68 ECHECKER(ret, __mt9t112_mcu_mask_set(client, a, b, c))
70 #define mt9t112_reg_read(ret, client, a) \ argument
71 ECHECKER(ret, __mt9t112_reg_read(client, a))
93 struct i2c_client *client; member
143 static struct mt9t112_priv *to_mt9t112(const struct i2c_client *client) in to_mt9t112() argument
145 return container_of(i2c_get_clientdata(client), in to_mt9t112()
150 static int __mt9t112_reg_read(const struct i2c_client *client, u16 command) in __mt9t112_reg_read() argument
158 msg[0].addr = client->addr; in __mt9t112_reg_read()
163 msg[1].addr = client->addr; in __mt9t112_reg_read()
172 ret = i2c_transfer(client->adapter, msg, 2); in __mt9t112_reg_read()
181 static int __mt9t112_reg_write(const struct i2c_client *client, in __mt9t112_reg_write() argument
194 msg.addr = client->addr; in __mt9t112_reg_write()
203 ret = i2c_transfer(client->adapter, &msg, 1); in __mt9t112_reg_write()
208 static int __mt9t112_reg_mask_set(const struct i2c_client *client, in __mt9t112_reg_mask_set() argument
211 int val = __mt9t112_reg_read(client, command); in __mt9t112_reg_mask_set()
219 return __mt9t112_reg_write(client, command, val); in __mt9t112_reg_mask_set()
223 static int __mt9t112_mcu_read(const struct i2c_client *client, u16 command) in __mt9t112_mcu_read() argument
227 ret = __mt9t112_reg_write(client, 0x098E, command); in __mt9t112_mcu_read()
231 return __mt9t112_reg_read(client, 0x0990); in __mt9t112_mcu_read()
234 static int __mt9t112_mcu_write(const struct i2c_client *client, in __mt9t112_mcu_write() argument
239 ret = __mt9t112_reg_write(client, 0x098E, command); in __mt9t112_mcu_write()
243 return __mt9t112_reg_write(client, 0x0990, data); in __mt9t112_mcu_write()
246 static int __mt9t112_mcu_mask_set(const struct i2c_client *client, in __mt9t112_mcu_mask_set() argument
249 int val = __mt9t112_mcu_read(client, command); in __mt9t112_mcu_mask_set()
257 return __mt9t112_mcu_write(client, command, val); in __mt9t112_mcu_mask_set()
260 static int mt9t112_reset(const struct i2c_client *client) in mt9t112_reset() argument
264 mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0001); in mt9t112_reset()
266 mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0000); in mt9t112_reset()
275 static int mt9t112_clock_info(const struct i2c_client *client, u32 ext) in mt9t112_clock_info() argument
283 mt9t112_reg_read(n, client, 0x0012); in mt9t112_clock_info()
290 mt9t112_reg_read(n, client, 0x002a); in mt9t112_clock_info()
297 mt9t112_reg_read(n, client, 0x002c); in mt9t112_clock_info()
300 mt9t112_reg_read(n, client, 0x0010); in mt9t112_clock_info()
305 dev_dbg(&client->dev, "EXTCLK : %10u K %s\n", ext, enable); in mt9t112_clock_info()
309 dev_dbg(&client->dev, "VCO : %10u K %s\n", vco, enable); in mt9t112_clock_info()
313 dev_dbg(&client->dev, "PIXCLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
317 dev_dbg(&client->dev, "MIPICLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
321 dev_dbg(&client->dev, "MCU CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
325 dev_dbg(&client->dev, "SOC CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
329 dev_dbg(&client->dev, "Sensor CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
332 dev_dbg(&client->dev, "External sensor : %10u K\n", clk); in mt9t112_clock_info()
336 dev_dbg(&client->dev, "PFD : %10u K %s\n", clk, enable); in mt9t112_clock_info()
342 static int mt9t112_set_a_frame_size(const struct i2c_client *client, in mt9t112_set_a_frame_size() argument
350 mt9t112_mcu_write(ret, client, VAR(26, 0), width); in mt9t112_set_a_frame_size()
351 mt9t112_mcu_write(ret, client, VAR(26, 2), height); in mt9t112_set_a_frame_size()
354 mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + width); in mt9t112_set_a_frame_size()
355 mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + height); in mt9t112_set_a_frame_size()
358 mt9t112_mcu_write(ret, client, VAR(18, 2), 4 + hstart); in mt9t112_set_a_frame_size()
359 mt9t112_mcu_write(ret, client, VAR(18, 4), 4 + wstart); in mt9t112_set_a_frame_size()
362 mt9t112_mcu_write(ret, client, VAR(18, 6), 11 + height + hstart); in mt9t112_set_a_frame_size()
363 mt9t112_mcu_write(ret, client, VAR(18, 8), 11 + width + wstart); in mt9t112_set_a_frame_size()
365 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_set_a_frame_size()
370 static int mt9t112_set_pll_dividers(const struct i2c_client *client, in mt9t112_set_pll_dividers() argument
379 mt9t112_reg_mask_set(ret, client, 0x0010, 0x3fff, val); in mt9t112_set_pll_dividers()
383 mt9t112_reg_mask_set(ret, client, 0x0012, 0x0fff, val); in mt9t112_set_pll_dividers()
388 mt9t112_reg_mask_set(ret, client, 0x002A, 0x7fff, val); in mt9t112_set_pll_dividers()
392 mt9t112_reg_mask_set(ret, client, 0x002C, 0x100f, val); in mt9t112_set_pll_dividers()
397 static int mt9t112_init_pll(const struct i2c_client *client) in mt9t112_init_pll() argument
399 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_init_pll()
402 mt9t112_reg_mask_set(ret, client, 0x0014, 0x003, 0x0001); in mt9t112_init_pll()
405 mt9t112_reg_write(ret, client, 0x0014, 0x2145); in mt9t112_init_pll()
408 mt9t112_set_pll_dividers(client, in mt9t112_init_pll()
421 mt9t112_reg_write(ret, client, 0x0014, 0x2525); in mt9t112_init_pll()
422 mt9t112_reg_write(ret, client, 0x0014, 0x2527); in mt9t112_init_pll()
423 mt9t112_reg_write(ret, client, 0x0014, 0x3427); in mt9t112_init_pll()
424 mt9t112_reg_write(ret, client, 0x0014, 0x3027); in mt9t112_init_pll()
433 mt9t112_reg_write(ret, client, 0x0014, 0x3046); in mt9t112_init_pll()
435 mt9t112_reg_write(ret, client, 0x0016, 0x0400); in mt9t112_init_pll()
436 mt9t112_reg_write(ret, client, 0x0022, 0x0190); in mt9t112_init_pll()
437 mt9t112_reg_write(ret, client, 0x3B84, 0x0212); in mt9t112_init_pll()
440 mt9t112_reg_write(ret, client, 0x002E, 0x0500); in mt9t112_init_pll()
442 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0002, 0x0002); in mt9t112_init_pll()
443 mt9t112_reg_mask_set(ret, client, 0x3B82, 0x0004, 0x0004); in mt9t112_init_pll()
446 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0x0004); in mt9t112_init_pll()
449 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0001, 0); in mt9t112_init_pll()
457 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
459 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
461 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
463 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
465 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
467 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
472 mt9t112_reg_read(data, client, 0x0018); in mt9t112_init_pll()
482 static int mt9t112_init_setting(const struct i2c_client *client) in mt9t112_init_setting() argument
487 mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); in mt9t112_init_setting()
490 mt9t112_mcu_write(ret, client, VAR(18, 12), 0x0024); in mt9t112_init_setting()
493 mt9t112_mcu_write(ret, client, VAR(18, 15), 0x00CC); in mt9t112_init_setting()
496 mt9t112_mcu_write(ret, client, VAR(18, 17), 0x01f1); in mt9t112_init_setting()
499 mt9t112_mcu_write(ret, client, VAR(18, 19), 0x00fF); in mt9t112_init_setting()
502 mt9t112_mcu_write(ret, client, VAR(18, 29), 0x032D); in mt9t112_init_setting()
505 mt9t112_mcu_write(ret, client, VAR(18, 31), 0x073a); in mt9t112_init_setting()
508 mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07d0); in mt9t112_init_setting()
511 mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); in mt9t112_init_setting()
514 mt9t112_mcu_write(ret, client, VAR(18, 74), 0x004); in mt9t112_init_setting()
517 mt9t112_mcu_write(ret, client, VAR(18, 76), 0x004); in mt9t112_init_setting()
520 mt9t112_mcu_write(ret, client, VAR(18, 78), 0x60B); in mt9t112_init_setting()
523 mt9t112_mcu_write(ret, client, VAR(18, 80), 0x80B); in mt9t112_init_setting()
526 mt9t112_mcu_write(ret, client, VAR(18, 87), 0x008C); in mt9t112_init_setting()
529 mt9t112_mcu_write(ret, client, VAR(18, 89), 0x01F1); in mt9t112_init_setting()
532 mt9t112_mcu_write(ret, client, VAR(18, 91), 0x00FF); in mt9t112_init_setting()
535 mt9t112_mcu_write(ret, client, VAR(18, 101), 0x0668); in mt9t112_init_setting()
538 mt9t112_mcu_write(ret, client, VAR(18, 103), 0x0AF0); in mt9t112_init_setting()
541 mt9t112_mcu_write(ret, client, VAR(18, 109), 0x0AF0); in mt9t112_init_setting()
552 mt9t112_mcu_write(ret, client, VAR8(8, 5), 0x01); in mt9t112_init_setting()
555 mt9t112_mcu_write(ret, client, VAR(27, 17), 0x0003); in mt9t112_init_setting()
558 mt9t112_mcu_write(ret, client, VAR(26, 17), 0x0003); in mt9t112_init_setting()
565 mt9t112_mcu_write(ret, client, VAR8(18, 165), 0x25); in mt9t112_init_setting()
568 mt9t112_mcu_write(ret, client, VAR8(18, 166), 0x28); in mt9t112_init_setting()
571 mt9t112_mcu_write(ret, client, VAR8(18, 167), 0x2C); in mt9t112_init_setting()
574 mt9t112_mcu_write(ret, client, VAR8(18, 168), 0x2F); in mt9t112_init_setting()
577 mt9t112_mcu_write(ret, client, VAR8(18, 68), 0xBA); in mt9t112_init_setting()
581 mt9t112_mcu_write(ret, client, VAR8(18, 303), 0x00); in mt9t112_init_setting()
584 mt9t112_mcu_write(ret, client, VAR8(18, 69), 0x9B); in mt9t112_init_setting()
588 mt9t112_mcu_write(ret, client, VAR8(18, 301), 0x00); in mt9t112_init_setting()
591 mt9t112_mcu_write(ret, client, VAR8(18, 140), 0x82); in mt9t112_init_setting()
595 mt9t112_mcu_write(ret, client, VAR8(18, 304), 0x00); in mt9t112_init_setting()
598 mt9t112_mcu_write(ret, client, VAR8(18, 141), 0x6D); in mt9t112_init_setting()
602 mt9t112_mcu_write(ret, client, VAR8(18, 302), 0x00); in mt9t112_init_setting()
605 mt9t112_mcu_write(ret, client, VAR8(8, 2), 0x10); in mt9t112_init_setting()
608 mt9t112_mcu_write(ret, client, VAR8(8, 9), 0x02); in mt9t112_init_setting()
611 mt9t112_mcu_write(ret, client, VAR8(8, 10), 0x03); in mt9t112_init_setting()
614 mt9t112_mcu_write(ret, client, VAR8(8, 12), 0x0A); in mt9t112_init_setting()
617 mt9t112_mcu_write(ret, client, VAR(18, 70), 0x0014); in mt9t112_init_setting()
620 mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0014); in mt9t112_init_setting()
626 mt9t112_mcu_write(ret, client, VAR8(18, 0x0044), 133); in mt9t112_init_setting()
627 mt9t112_mcu_write(ret, client, VAR8(18, 0x0045), 110); in mt9t112_init_setting()
628 mt9t112_mcu_write(ret, client, VAR8(18, 0x008c), 130); in mt9t112_init_setting()
629 mt9t112_mcu_write(ret, client, VAR8(18, 0x008d), 108); in mt9t112_init_setting()
631 mt9t112_mcu_write(ret, client, VAR8(18, 0x00A5), 27); in mt9t112_init_setting()
632 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a6), 30); in mt9t112_init_setting()
633 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a7), 32); in mt9t112_init_setting()
634 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a8), 35); in mt9t112_init_setting()
639 static int mt9t112_auto_focus_setting(const struct i2c_client *client) in mt9t112_auto_focus_setting() argument
643 mt9t112_mcu_write(ret, client, VAR(12, 13), 0x000F); in mt9t112_auto_focus_setting()
644 mt9t112_mcu_write(ret, client, VAR(12, 23), 0x0F0F); in mt9t112_auto_focus_setting()
645 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_auto_focus_setting()
647 mt9t112_reg_write(ret, client, 0x0614, 0x0000); in mt9t112_auto_focus_setting()
649 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); in mt9t112_auto_focus_setting()
650 mt9t112_mcu_write(ret, client, VAR8(12, 2), 0x02); in mt9t112_auto_focus_setting()
651 mt9t112_mcu_write(ret, client, VAR(12, 3), 0x0002); in mt9t112_auto_focus_setting()
652 mt9t112_mcu_write(ret, client, VAR(17, 3), 0x8001); in mt9t112_auto_focus_setting()
653 mt9t112_mcu_write(ret, client, VAR(17, 11), 0x0025); in mt9t112_auto_focus_setting()
654 mt9t112_mcu_write(ret, client, VAR(17, 13), 0x0193); in mt9t112_auto_focus_setting()
655 mt9t112_mcu_write(ret, client, VAR8(17, 33), 0x18); in mt9t112_auto_focus_setting()
656 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); in mt9t112_auto_focus_setting()
661 static int mt9t112_auto_focus_trigger(const struct i2c_client *client) in mt9t112_auto_focus_trigger() argument
665 mt9t112_mcu_write(ret, client, VAR8(12, 25), 0x01); in mt9t112_auto_focus_trigger()
670 static int mt9t112_init_camera(const struct i2c_client *client) in mt9t112_init_camera() argument
674 ECHECKER(ret, mt9t112_reset(client)); in mt9t112_init_camera()
675 ECHECKER(ret, mt9t112_init_pll(client)); in mt9t112_init_camera()
676 ECHECKER(ret, mt9t112_init_setting(client)); in mt9t112_init_camera()
677 ECHECKER(ret, mt9t112_auto_focus_setting(client)); in mt9t112_init_camera()
679 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0); in mt9t112_init_camera()
682 mt9t112_reg_write(ret, client, 0x3084, 0x2409); in mt9t112_init_camera()
683 mt9t112_reg_write(ret, client, 0x3092, 0x0A49); in mt9t112_init_camera()
684 mt9t112_reg_write(ret, client, 0x3094, 0x4949); in mt9t112_init_camera()
685 mt9t112_reg_write(ret, client, 0x3096, 0x4950); in mt9t112_init_camera()
692 mt9t112_mcu_write(ret, client, VAR(26, 160), 0x0A2E); in mt9t112_init_camera()
693 mt9t112_mcu_write(ret, client, VAR(27, 160), 0x0A2E); in mt9t112_init_camera()
699 mt9t112_mcu_write(ret, client, VAR(27, 144), 0x0CB4); in mt9t112_init_camera()
705 mt9t112_mcu_write(ret, client, VAR8(27, 142), 0x01); in mt9t112_init_camera()
708 mt9t112_reg_write(ret, client, 0x316C, 0x350F); in mt9t112_init_camera()
711 mt9t112_reg_write(ret, client, 0x1E, 0x777); in mt9t112_init_camera()
724 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_g_register() local
728 mt9t112_reg_read(ret, client, reg->reg); in mt9t112_g_register()
738 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_register() local
741 mt9t112_reg_write(ret, client, reg->reg, reg->val); in mt9t112_s_register()
776 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_power() local
777 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_power()
796 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_stream() local
797 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_stream()
809 mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); in mt9t112_s_stream()
817 ECHECKER(ret, mt9t112_init_camera(client)); in mt9t112_s_stream()
820 mt9t112_reg_write(ret, client, 0x3C20, param); in mt9t112_s_stream()
827 mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); in mt9t112_s_stream()
828 mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); in mt9t112_s_stream()
829 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_s_stream()
831 mt9t112_set_a_frame_size(client, priv->frame.width, priv->frame.height); in mt9t112_s_stream()
833 ECHECKER(ret, mt9t112_auto_focus_trigger(client)); in mt9t112_s_stream()
835 dev_dbg(&client->dev, "format : %d\n", priv->format->code); in mt9t112_s_stream()
836 dev_dbg(&client->dev, "size : %d x %d\n", in mt9t112_s_stream()
840 CLOCK_INFO(client, EXT_CLOCK); in mt9t112_s_stream()
878 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_get_selection() local
879 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_get_selection()
903 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_set_selection() local
904 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_set_selection()
919 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_get_fmt() local
920 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_get_fmt()
937 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_fmt() local
938 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_fmt()
959 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_set_fmt() local
961 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_set_fmt()
994 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_enum_mbus_code() local
995 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_enum_mbus_code()
1026 static int mt9t112_camera_probe(struct i2c_client *client) in mt9t112_camera_probe() argument
1028 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_camera_probe()
1038 mt9t112_reg_read(chipid, client, 0x0000); in mt9t112_camera_probe()
1050 dev_err(&client->dev, "Product ID error %04x\n", chipid); in mt9t112_camera_probe()
1055 dev_info(&client->dev, "%s chip ID %04x\n", devname, chipid); in mt9t112_camera_probe()
1063 static int mt9t112_probe(struct i2c_client *client) in mt9t112_probe() argument
1068 if (!client->dev.platform_data) { in mt9t112_probe()
1069 dev_err(&client->dev, "mt9t112: missing platform data!\n"); in mt9t112_probe()
1073 priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL); in mt9t112_probe()
1077 priv->info = client->dev.platform_data; in mt9t112_probe()
1080 v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); in mt9t112_probe()
1082 priv->clk = devm_clk_get(&client->dev, "extclk"); in mt9t112_probe()
1086 dev_err(&client->dev, "Unable to get clock \"extclk\"\n"); in mt9t112_probe()
1090 priv->standby_gpio = devm_gpiod_get_optional(&client->dev, "standby", in mt9t112_probe()
1093 dev_err(&client->dev, "Unable to get gpio \"standby\"\n"); in mt9t112_probe()
1097 ret = mt9t112_camera_probe(client); in mt9t112_probe()
1104 static void mt9t112_remove(struct i2c_client *client) in mt9t112_remove() argument
1106 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_remove()