Lines Matching refs:client
56 #define mt9t112_reg_write(ret, client, a, b) \ argument
57 ECHECKER(ret, __mt9t112_reg_write(client, a, b))
58 #define mt9t112_mcu_write(ret, client, a, b) \ argument
59 ECHECKER(ret, __mt9t112_mcu_write(client, a, b))
61 #define mt9t112_reg_mask_set(ret, client, a, b, c) \ argument
62 ECHECKER(ret, __mt9t112_reg_mask_set(client, a, b, c))
63 #define mt9t112_mcu_mask_set(ret, client, a, b, c) \ argument
64 ECHECKER(ret, __mt9t112_mcu_mask_set(client, a, b, c))
66 #define mt9t112_reg_read(ret, client, a) \ argument
67 ECHECKER(ret, __mt9t112_reg_read(client, a))
89 struct i2c_client *client; member
141 static struct mt9t112_priv *to_mt9t112(const struct i2c_client *client) in to_mt9t112() argument
143 return container_of(i2c_get_clientdata(client), in to_mt9t112()
148 static int __mt9t112_reg_read(const struct i2c_client *client, u16 command) in __mt9t112_reg_read() argument
156 msg[0].addr = client->addr; in __mt9t112_reg_read()
161 msg[1].addr = client->addr; in __mt9t112_reg_read()
171 ret = i2c_transfer(client->adapter, msg, 2); in __mt9t112_reg_read()
179 static int __mt9t112_reg_write(const struct i2c_client *client, in __mt9t112_reg_write() argument
192 msg.addr = client->addr; in __mt9t112_reg_write()
201 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
213 int val = __mt9t112_reg_read(client, command); in __mt9t112_reg_mask_set()
220 return __mt9t112_reg_write(client, command, val); in __mt9t112_reg_mask_set()
224 static int __mt9t112_mcu_read(const struct i2c_client *client, u16 command) in __mt9t112_mcu_read() argument
228 ret = __mt9t112_reg_write(client, 0x098E, command); in __mt9t112_mcu_read()
232 return __mt9t112_reg_read(client, 0x0990); in __mt9t112_mcu_read()
235 static int __mt9t112_mcu_write(const struct i2c_client *client, in __mt9t112_mcu_write() argument
240 ret = __mt9t112_reg_write(client, 0x098E, command); in __mt9t112_mcu_write()
244 return __mt9t112_reg_write(client, 0x0990, data); in __mt9t112_mcu_write()
247 static int __mt9t112_mcu_mask_set(const struct i2c_client *client, in __mt9t112_mcu_mask_set() argument
252 int val = __mt9t112_mcu_read(client, command); in __mt9t112_mcu_mask_set()
259 return __mt9t112_mcu_write(client, command, val); in __mt9t112_mcu_mask_set()
262 static int mt9t112_reset(const struct i2c_client *client) in mt9t112_reset() argument
266 mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0001); in mt9t112_reset()
268 mt9t112_reg_mask_set(ret, client, 0x001a, 0x0001, 0x0000); in mt9t112_reset()
277 static int mt9t112_clock_info(const struct i2c_client *client, u32 ext) in mt9t112_clock_info() argument
285 mt9t112_reg_read(n, client, 0x0012); in mt9t112_clock_info()
292 mt9t112_reg_read(n, client, 0x002a); in mt9t112_clock_info()
299 mt9t112_reg_read(n, client, 0x002c); in mt9t112_clock_info()
302 mt9t112_reg_read(n, client, 0x0010); in mt9t112_clock_info()
307 dev_dbg(&client->dev, "EXTCLK : %10u K %s\n", ext, enable); in mt9t112_clock_info()
311 dev_dbg(&client->dev, "VCO : %10u K %s\n", vco, enable); in mt9t112_clock_info()
315 dev_dbg(&client->dev, "PIXCLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
319 dev_dbg(&client->dev, "MIPICLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
323 dev_dbg(&client->dev, "MCU CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
327 dev_dbg(&client->dev, "SOC CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
331 dev_dbg(&client->dev, "Sensor CLK : %10u K %s\n", clk, enable); in mt9t112_clock_info()
334 dev_dbg(&client->dev, "External sensor : %10u K\n", clk); in mt9t112_clock_info()
338 dev_dbg(&client->dev, "PFD : %10u K %s\n", clk, enable); in mt9t112_clock_info()
350 static int mt9t112_set_a_frame_size(const struct i2c_client *client, in mt9t112_set_a_frame_size() argument
359 mt9t112_mcu_write(ret, client, VAR(26, 0), width); in mt9t112_set_a_frame_size()
360 mt9t112_mcu_write(ret, client, VAR(26, 2), height); in mt9t112_set_a_frame_size()
363 mt9t112_mcu_write(ret, client, VAR(18, 43), 8 + width); in mt9t112_set_a_frame_size()
364 mt9t112_mcu_write(ret, client, VAR(18, 45), 8 + height); in mt9t112_set_a_frame_size()
367 mt9t112_mcu_write(ret, client, VAR(18, 2), 4 + hstart); in mt9t112_set_a_frame_size()
368 mt9t112_mcu_write(ret, client, VAR(18, 4), 4 + wstart); in mt9t112_set_a_frame_size()
371 mt9t112_mcu_write(ret, client, VAR(18, 6), 11 + height + hstart); in mt9t112_set_a_frame_size()
372 mt9t112_mcu_write(ret, client, VAR(18, 8), 11 + width + wstart); in mt9t112_set_a_frame_size()
374 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_set_a_frame_size()
379 static int mt9t112_set_pll_dividers(const struct i2c_client *client, in mt9t112_set_pll_dividers() argument
391 mt9t112_reg_mask_set(ret, client, 0x0010, 0x3fff, val); in mt9t112_set_pll_dividers()
397 mt9t112_reg_mask_set(ret, client, 0x0012, 0x0fff, val); in mt9t112_set_pll_dividers()
404 mt9t112_reg_mask_set(ret, client, 0x002A, 0x7fff, val); in mt9t112_set_pll_dividers()
409 mt9t112_reg_mask_set(ret, client, 0x002C, 0x100f, val); in mt9t112_set_pll_dividers()
414 static int mt9t112_init_pll(const struct i2c_client *client) in mt9t112_init_pll() argument
416 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_init_pll()
419 mt9t112_reg_mask_set(ret, client, 0x0014, 0x003, 0x0001); in mt9t112_init_pll()
422 mt9t112_reg_write(ret, client, 0x0014, 0x2145); in mt9t112_init_pll()
425 mt9t112_set_pll_dividers(client, in mt9t112_init_pll()
442 mt9t112_reg_write(ret, client, 0x0014, 0x2525); in mt9t112_init_pll()
443 mt9t112_reg_write(ret, client, 0x0014, 0x2527); in mt9t112_init_pll()
444 mt9t112_reg_write(ret, client, 0x0014, 0x3427); in mt9t112_init_pll()
445 mt9t112_reg_write(ret, client, 0x0014, 0x3027); in mt9t112_init_pll()
454 mt9t112_reg_write(ret, client, 0x0014, 0x3046); in mt9t112_init_pll()
455 mt9t112_reg_write(ret, client, 0x0016, 0x0400); /* JPEG initialization workaround */ in mt9t112_init_pll()
456 mt9t112_reg_write(ret, client, 0x0022, 0x0190); in mt9t112_init_pll()
457 mt9t112_reg_write(ret, client, 0x3B84, 0x0212); in mt9t112_init_pll()
460 mt9t112_reg_write(ret, client, 0x002E, 0x0500); in mt9t112_init_pll()
462 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0002, 0x0002); in mt9t112_init_pll()
463 mt9t112_reg_mask_set(ret, client, 0x3B82, 0x0004, 0x0004); in mt9t112_init_pll()
466 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0x0004); in mt9t112_init_pll()
469 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0001, 0); in mt9t112_init_pll()
477 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
479 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
481 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
483 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
485 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
487 mt9t112_reg_write(ret, client, 0x0614, 0x0001); in mt9t112_init_pll()
492 mt9t112_reg_read(data, client, 0x0018); in mt9t112_init_pll()
502 static int mt9t112_init_setting(const struct i2c_client *client) in mt9t112_init_setting() argument
508 mt9t112_mcu_mask_set(ret, client, VAR(26, 160), 0x0040, 0x0000); in mt9t112_init_setting()
511 mt9t112_mcu_write(ret, client, VAR(18, 12), 0x0024); in mt9t112_init_setting()
514 mt9t112_mcu_write(ret, client, VAR(18, 15), 0x00CC); in mt9t112_init_setting()
517 mt9t112_mcu_write(ret, client, VAR(18, 17), 0x01f1); in mt9t112_init_setting()
520 mt9t112_mcu_write(ret, client, VAR(18, 19), 0x00fF); in mt9t112_init_setting()
523 mt9t112_mcu_write(ret, client, VAR(18, 29), 0x032D); in mt9t112_init_setting()
526 mt9t112_mcu_write(ret, client, VAR(18, 31), 0x073a); in mt9t112_init_setting()
529 mt9t112_mcu_write(ret, client, VAR(18, 37), 0x07d0); in mt9t112_init_setting()
532 mt9t112_mcu_mask_set(ret, client, VAR(27, 160), 0x0040, 0x0000); in mt9t112_init_setting()
535 mt9t112_mcu_write(ret, client, VAR(18, 74), 0x004); in mt9t112_init_setting()
538 mt9t112_mcu_write(ret, client, VAR(18, 76), 0x004); in mt9t112_init_setting()
541 mt9t112_mcu_write(ret, client, VAR(18, 78), 0x60B); in mt9t112_init_setting()
544 mt9t112_mcu_write(ret, client, VAR(18, 80), 0x80B); in mt9t112_init_setting()
547 mt9t112_mcu_write(ret, client, VAR(18, 87), 0x008C); in mt9t112_init_setting()
550 mt9t112_mcu_write(ret, client, VAR(18, 89), 0x01F1); in mt9t112_init_setting()
553 mt9t112_mcu_write(ret, client, VAR(18, 91), 0x00FF); in mt9t112_init_setting()
556 mt9t112_mcu_write(ret, client, VAR(18, 101), 0x0668); in mt9t112_init_setting()
559 mt9t112_mcu_write(ret, client, VAR(18, 103), 0x0AF0); in mt9t112_init_setting()
562 mt9t112_mcu_write(ret, client, VAR(18, 109), 0x0AF0); in mt9t112_init_setting()
573 mt9t112_mcu_write(ret, client, VAR8(8, 5), 0x01); in mt9t112_init_setting()
576 mt9t112_mcu_write(ret, client, VAR(27, 17), 0x0003); in mt9t112_init_setting()
579 mt9t112_mcu_write(ret, client, VAR(26, 17), 0x0003); in mt9t112_init_setting()
586 mt9t112_mcu_write(ret, client, VAR8(18, 165), 0x25); in mt9t112_init_setting()
589 mt9t112_mcu_write(ret, client, VAR8(18, 166), 0x28); in mt9t112_init_setting()
592 mt9t112_mcu_write(ret, client, VAR8(18, 167), 0x2C); in mt9t112_init_setting()
595 mt9t112_mcu_write(ret, client, VAR8(18, 168), 0x2F); in mt9t112_init_setting()
598 mt9t112_mcu_write(ret, client, VAR8(18, 68), 0xBA); in mt9t112_init_setting()
602 mt9t112_mcu_write(ret, client, VAR8(18, 303), 0x00); in mt9t112_init_setting()
605 mt9t112_mcu_write(ret, client, VAR8(18, 69), 0x9B); in mt9t112_init_setting()
609 mt9t112_mcu_write(ret, client, VAR8(18, 301), 0x00); in mt9t112_init_setting()
612 mt9t112_mcu_write(ret, client, VAR8(18, 140), 0x82); in mt9t112_init_setting()
616 mt9t112_mcu_write(ret, client, VAR8(18, 304), 0x00); in mt9t112_init_setting()
619 mt9t112_mcu_write(ret, client, VAR8(18, 141), 0x6D); in mt9t112_init_setting()
623 mt9t112_mcu_write(ret, client, VAR8(18, 302), 0x00); in mt9t112_init_setting()
626 mt9t112_mcu_write(ret, client, VAR8(8, 2), 0x10); in mt9t112_init_setting()
629 mt9t112_mcu_write(ret, client, VAR8(8, 9), 0x02); in mt9t112_init_setting()
632 mt9t112_mcu_write(ret, client, VAR8(8, 10), 0x03); in mt9t112_init_setting()
635 mt9t112_mcu_write(ret, client, VAR8(8, 12), 0x0A); in mt9t112_init_setting()
638 mt9t112_mcu_write(ret, client, VAR(18, 70), 0x0014); in mt9t112_init_setting()
641 mt9t112_mcu_write(ret, client, VAR(18, 142), 0x0014); in mt9t112_init_setting()
647 mt9t112_mcu_write(ret, client, VAR8(18, 0x0044), 133); in mt9t112_init_setting()
648 mt9t112_mcu_write(ret, client, VAR8(18, 0x0045), 110); in mt9t112_init_setting()
649 mt9t112_mcu_write(ret, client, VAR8(18, 0x008c), 130); in mt9t112_init_setting()
650 mt9t112_mcu_write(ret, client, VAR8(18, 0x008d), 108); in mt9t112_init_setting()
652 mt9t112_mcu_write(ret, client, VAR8(18, 0x00A5), 27); in mt9t112_init_setting()
653 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a6), 30); in mt9t112_init_setting()
654 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a7), 32); in mt9t112_init_setting()
655 mt9t112_mcu_write(ret, client, VAR8(18, 0x00a8), 35); in mt9t112_init_setting()
660 static int mt9t112_auto_focus_setting(const struct i2c_client *client) in mt9t112_auto_focus_setting() argument
664 mt9t112_mcu_write(ret, client, VAR(12, 13), 0x000F); in mt9t112_auto_focus_setting()
665 mt9t112_mcu_write(ret, client, VAR(12, 23), 0x0F0F); in mt9t112_auto_focus_setting()
666 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_auto_focus_setting()
668 mt9t112_reg_write(ret, client, 0x0614, 0x0000); in mt9t112_auto_focus_setting()
670 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); in mt9t112_auto_focus_setting()
671 mt9t112_mcu_write(ret, client, VAR8(12, 2), 0x02); in mt9t112_auto_focus_setting()
672 mt9t112_mcu_write(ret, client, VAR(12, 3), 0x0002); in mt9t112_auto_focus_setting()
673 mt9t112_mcu_write(ret, client, VAR(17, 3), 0x8001); in mt9t112_auto_focus_setting()
674 mt9t112_mcu_write(ret, client, VAR(17, 11), 0x0025); in mt9t112_auto_focus_setting()
675 mt9t112_mcu_write(ret, client, VAR(17, 13), 0x0193); in mt9t112_auto_focus_setting()
676 mt9t112_mcu_write(ret, client, VAR8(17, 33), 0x18); in mt9t112_auto_focus_setting()
677 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x05); in mt9t112_auto_focus_setting()
682 static int mt9t112_auto_focus_trigger(const struct i2c_client *client) in mt9t112_auto_focus_trigger() argument
686 mt9t112_mcu_write(ret, client, VAR8(12, 25), 0x01); in mt9t112_auto_focus_trigger()
691 static int mt9t112_init_camera(const struct i2c_client *client) in mt9t112_init_camera() argument
695 ECHECKER(ret, mt9t112_reset(client)); in mt9t112_init_camera()
697 ECHECKER(ret, mt9t112_init_pll(client)); in mt9t112_init_camera()
699 ECHECKER(ret, mt9t112_init_setting(client)); in mt9t112_init_camera()
701 ECHECKER(ret, mt9t112_auto_focus_setting(client)); in mt9t112_init_camera()
703 mt9t112_reg_mask_set(ret, client, 0x0018, 0x0004, 0); in mt9t112_init_camera()
706 mt9t112_reg_write(ret, client, 0x3084, 0x2409); in mt9t112_init_camera()
707 mt9t112_reg_write(ret, client, 0x3092, 0x0A49); in mt9t112_init_camera()
708 mt9t112_reg_write(ret, client, 0x3094, 0x4949); in mt9t112_init_camera()
709 mt9t112_reg_write(ret, client, 0x3096, 0x4950); in mt9t112_init_camera()
716 mt9t112_mcu_write(ret, client, VAR(26, 160), 0x0A2E); in mt9t112_init_camera()
717 mt9t112_mcu_write(ret, client, VAR(27, 160), 0x0A2E); in mt9t112_init_camera()
721 mt9t112_mcu_write(ret, client, VAR(27, 144), 0x0CB4); in mt9t112_init_camera()
725 mt9t112_mcu_write(ret, client, VAR8(27, 142), 0x01); in mt9t112_init_camera()
728 mt9t112_reg_write(ret, client, 0x316C, 0x350F); in mt9t112_init_camera()
731 mt9t112_reg_write(ret, client, 0x1E, 0x777); in mt9t112_init_camera()
744 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_g_register() local
748 mt9t112_reg_read(ret, client, reg->reg); in mt9t112_g_register()
758 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_register() local
761 mt9t112_reg_write(ret, client, reg->reg, reg->val); in mt9t112_s_register()
769 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_power() local
770 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in mt9t112_s_power()
771 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_power()
773 return soc_camera_set_power(&client->dev, ssdd, priv->clk, on); in mt9t112_s_power()
790 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_stream() local
791 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_stream()
804 mt9t112_set_a_frame_size(client, VGA_WIDTH, VGA_HEIGHT); in mt9t112_s_stream()
811 ECHECKER(ret, mt9t112_init_camera(client)); in mt9t112_s_stream()
814 mt9t112_reg_write(ret, client, 0x3C20, param); in mt9t112_s_stream()
821 mt9t112_mcu_write(ret, client, VAR(26, 7), priv->format->fmt); in mt9t112_s_stream()
822 mt9t112_mcu_write(ret, client, VAR(26, 9), priv->format->order); in mt9t112_s_stream()
823 mt9t112_mcu_write(ret, client, VAR8(1, 0), 0x06); in mt9t112_s_stream()
825 mt9t112_set_a_frame_size(client, in mt9t112_s_stream()
829 ECHECKER(ret, mt9t112_auto_focus_trigger(client)); in mt9t112_s_stream()
831 dev_dbg(&client->dev, "format : %d\n", priv->format->code); in mt9t112_s_stream()
832 dev_dbg(&client->dev, "size : %d x %d\n", in mt9t112_s_stream()
836 CLOCK_INFO(client, EXT_CLOCK); in mt9t112_s_stream()
889 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_g_crop() local
890 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_g_crop()
900 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_crop() local
901 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_crop()
912 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_get_fmt() local
913 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_get_fmt()
930 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_fmt() local
931 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_fmt()
953 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_set_fmt() local
954 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_set_fmt()
986 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_enum_mbus_code() local
987 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_enum_mbus_code()
1000 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_g_mbus_config() local
1001 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in mt9t112_g_mbus_config()
1015 struct i2c_client *client = v4l2_get_subdevdata(sd); in mt9t112_s_mbus_config() local
1016 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in mt9t112_s_mbus_config()
1017 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_s_mbus_config()
1049 static int mt9t112_camera_probe(struct i2c_client *client) in mt9t112_camera_probe() argument
1051 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_camera_probe()
1063 mt9t112_reg_read(chipid, client, 0x0000); in mt9t112_camera_probe()
1075 dev_err(&client->dev, "Product ID error %04x\n", chipid); in mt9t112_camera_probe()
1080 dev_info(&client->dev, "%s chip ID %04x\n", devname, chipid); in mt9t112_camera_probe()
1087 static int mt9t112_probe(struct i2c_client *client, in mt9t112_probe() argument
1091 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in mt9t112_probe()
1101 dev_err(&client->dev, "mt9t112: missing platform data!\n"); in mt9t112_probe()
1105 priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL); in mt9t112_probe()
1111 v4l2_i2c_subdev_init(&priv->subdev, client, &mt9t112_subdev_ops); in mt9t112_probe()
1113 priv->clk = v4l2_clk_get(&client->dev, "mclk"); in mt9t112_probe()
1117 ret = mt9t112_camera_probe(client); in mt9t112_probe()
1128 static int mt9t112_remove(struct i2c_client *client) in mt9t112_remove() argument
1130 struct mt9t112_priv *priv = to_mt9t112(client); in mt9t112_remove()