Lines Matching refs:client

423 static struct rj54n1 *to_rj54n1(const struct i2c_client *client)  in to_rj54n1()  argument
425 return container_of(i2c_get_clientdata(client), struct rj54n1, subdev); in to_rj54n1()
428 static int reg_read(struct i2c_client *client, const u16 reg) in reg_read() argument
430 struct rj54n1 *rj54n1 = to_rj54n1(client); in reg_read()
435 dev_dbg(&client->dev, "[0x%x] = 0x%x\n", 0xff, reg >> 8); in reg_read()
436 ret = i2c_smbus_write_byte_data(client, 0xff, reg >> 8); in reg_read()
441 return i2c_smbus_read_byte_data(client, reg & 0xff); in reg_read()
444 static int reg_write(struct i2c_client *client, const u16 reg, in reg_write() argument
447 struct rj54n1 *rj54n1 = to_rj54n1(client); in reg_write()
452 dev_dbg(&client->dev, "[0x%x] = 0x%x\n", 0xff, reg >> 8); in reg_write()
453 ret = i2c_smbus_write_byte_data(client, 0xff, reg >> 8); in reg_write()
458 dev_dbg(&client->dev, "[0x%x] = 0x%x\n", reg & 0xff, data); in reg_write()
459 return i2c_smbus_write_byte_data(client, reg & 0xff, data); in reg_write()
462 static int reg_set(struct i2c_client *client, const u16 reg, in reg_set() argument
467 ret = reg_read(client, reg); in reg_set()
470 return reg_write(client, reg, (ret & ~mask) | (data & mask)); in reg_set()
473 static int reg_write_multiple(struct i2c_client *client, in reg_write_multiple() argument
479 ret = reg_write(client, rv->reg, rv->val); in reg_write_multiple()
501 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_stream() local
504 return reg_set(client, RJ54N1_STILL_CONTROL, (!enable) << 7, 0x80); in rj54n1_s_stream()
507 static int rj54n1_set_rect(struct i2c_client *client, in rj54n1_set_rect() argument
513 ret = reg_write(client, reg_xy, in rj54n1_set_rect()
518 ret = reg_write(client, reg_x, width & 0xff); in rj54n1_set_rect()
520 ret = reg_write(client, reg_y, height & 0xff); in rj54n1_set_rect()
529 static int rj54n1_commit(struct i2c_client *client) in rj54n1_commit() argument
531 int ret = reg_write(client, RJ54N1_INIT_START, 1); in rj54n1_commit()
534 ret = reg_write(client, RJ54N1_INIT_START, 0); in rj54n1_commit()
543 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_crop() local
544 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_s_crop()
560 dev_dbg(&client->dev, "Scaling for %dx%d : %u = %dx%d\n", in rj54n1_s_crop()
578 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_crop() local
579 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_g_crop()
606 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_get_fmt() local
607 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_get_fmt()
629 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_sensor_scale() local
630 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_sensor_scale()
651 dev_dbg(&client->dev, "Adjusted output width: in %u, out %u\n", in rj54n1_sensor_scale()
663 dev_dbg(&client->dev, "Adjusted output height: in %u, out %u\n", in rj54n1_sensor_scale()
668 ret = rj54n1_set_rect(client, RJ54N1_X_OUTPUT_SIZE_S_L, in rj54n1_sensor_scale()
672 ret = rj54n1_set_rect(client, RJ54N1_X_OUTPUT_SIZE_P_L, in rj54n1_sensor_scale()
718 ret = reg_write(client, RJ54N1_RESIZE_HOLD_L, resize & 0xff); in rj54n1_sensor_scale()
720 ret = reg_write(client, RJ54N1_RESIZE_HOLD_H, resize >> 8); in rj54n1_sensor_scale()
746 ret = reg_write(client, RJ54N1_INC_USE_SEL_L, inc_sel & 0xfc); in rj54n1_sensor_scale()
748 ret = reg_write(client, RJ54N1_INC_USE_SEL_H, inc_sel >> 8); in rj54n1_sensor_scale()
760 ret = reg_write(client, RJ54N1_BIT8_WB, wb_bit8); in rj54n1_sensor_scale()
762 ret = reg_write(client, RJ54N1_HCAPS_WB, wb_left); in rj54n1_sensor_scale()
764 ret = reg_write(client, RJ54N1_VCAPS_WB, wb_top); in rj54n1_sensor_scale()
766 ret = reg_write(client, RJ54N1_HCAPE_WB, wb_right); in rj54n1_sensor_scale()
768 ret = reg_write(client, RJ54N1_VCAPE_WB, wb_bottom); in rj54n1_sensor_scale()
778 ret = reg_write(client, RJ54N1_PEAK_H, in rj54n1_sensor_scale()
781 ret = reg_write(client, RJ54N1_PEAK_50, peak_50); in rj54n1_sensor_scale()
783 ret = reg_write(client, RJ54N1_PEAK_60, peak_60); in rj54n1_sensor_scale()
785 ret = reg_write(client, RJ54N1_PEAK_DIFF, peak / 150); in rj54n1_sensor_scale()
789 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, in rj54n1_sensor_scale()
798 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, RESIZE_HOLD_SEL | 1); in rj54n1_sensor_scale()
807 dev_dbg(&client->dev, "Scaled for %dx%d : %u = %ux%u, skip %u\n", in rj54n1_sensor_scale()
813 static int rj54n1_set_clock(struct i2c_client *client) in rj54n1_set_clock() argument
815 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_set_clock()
819 ret = reg_write(client, RJ54N1_RESET_STANDBY, E_EXCLK | SOFT_STDBY); in rj54n1_set_clock()
822 ret = reg_write(client, RJ54N1_RESET_STANDBY, E_EXCLK); in rj54n1_set_clock()
825 ret = reg_write(client, RJ54N1_PLL_L, PLL_L); in rj54n1_set_clock()
827 ret = reg_write(client, RJ54N1_PLL_N, PLL_N); in rj54n1_set_clock()
831 ret = reg_write(client, RJ54N1_RATIO_TG, in rj54n1_set_clock()
834 ret = reg_write(client, RJ54N1_RATIO_T, in rj54n1_set_clock()
837 ret = reg_write(client, RJ54N1_RATIO_R, in rj54n1_set_clock()
842 ret = reg_write(client, RJ54N1_RAMP_TGCLK_EN, 3); in rj54n1_set_clock()
846 ret = reg_write(client, RJ54N1_OCLK_DSP, 0); in rj54n1_set_clock()
850 ret = reg_write(client, RJ54N1_RATIO_OP, in rj54n1_set_clock()
853 ret = reg_write(client, RJ54N1_RATIO_O, in rj54n1_set_clock()
858 ret = reg_write(client, RJ54N1_OCLK_SEL_EN, 1); in rj54n1_set_clock()
862 ret = reg_write(client, RJ54N1_TG_BYPASS, 2); in rj54n1_set_clock()
866 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_set_clock()
870 ret = reg_write(client, RJ54N1_PLL_EN, 1); in rj54n1_set_clock()
877 ret = reg_write(client, RJ54N1_CLK_RST, 1); in rj54n1_set_clock()
880 ret = reg_read(client, RJ54N1_CLK_RST); in rj54n1_set_clock()
882 dev_err(&client->dev, in rj54n1_set_clock()
888 ret = reg_set(client, RJ54N1_OCLK_DSP, 1, 1); in rj54n1_set_clock()
892 ret = reg_write(client, RJ54N1_OCLK_SEL_EN, 1); in rj54n1_set_clock()
897 static int rj54n1_reg_init(struct i2c_client *client) in rj54n1_reg_init() argument
899 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_reg_init()
900 int ret = rj54n1_set_clock(client); in rj54n1_reg_init()
903 ret = reg_write_multiple(client, bank_7, ARRAY_SIZE(bank_7)); in rj54n1_reg_init()
905 ret = reg_write_multiple(client, bank_10, ARRAY_SIZE(bank_10)); in rj54n1_reg_init()
909 ret = reg_write(client, RJ54N1_SCALE_1_2_LEV, 3 | (7 << 4)); in rj54n1_reg_init()
911 ret = reg_write(client, RJ54N1_SCALE_4_LEV, 0xf); in rj54n1_reg_init()
915 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, in rj54n1_reg_init()
920 ret = reg_write(client, RJ54N1_Y_GAIN, 0x84); in rj54n1_reg_init()
927 ret = reg_write(client, RJ54N1_MIRROR_STILL_MODE, 0x27); in rj54n1_reg_init()
930 ret = reg_write_multiple(client, bank_4, ARRAY_SIZE(bank_4)); in rj54n1_reg_init()
934 ret = reg_write(client, RJ54N1_EXPOSURE_CONTROL, 0x80); in rj54n1_reg_init()
937 ret = reg_read(client, RJ54N1_WB_SEL_WEIGHT_I); in rj54n1_reg_init()
940 ret = reg_write_multiple(client, bank_5, ARRAY_SIZE(bank_5)); in rj54n1_reg_init()
943 ret = reg_write_multiple(client, bank_8, ARRAY_SIZE(bank_8)); in rj54n1_reg_init()
946 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_reg_init()
951 ret = rj54n1_commit(client); in rj54n1_reg_init()
955 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_reg_init()
960 ret = reg_write(client, RJ54N1_FWFLG, 2); in rj54n1_reg_init()
973 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_set_fmt() local
974 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_set_fmt()
988 dev_dbg(&client->dev, "%s: code = %d, width = %u, height = %u\n", in rj54n1_set_fmt()
1013 ret = reg_read(client, RJ54N1_RESET_STANDBY); in rj54n1_set_fmt()
1018 ret = rj54n1_reg_init(client); in rj54n1_set_fmt()
1026 ret = reg_write(client, RJ54N1_OUT_SEL, 0); in rj54n1_set_fmt()
1028 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_set_fmt()
1031 ret = reg_write(client, RJ54N1_OUT_SEL, 0); in rj54n1_set_fmt()
1033 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_set_fmt()
1036 ret = reg_write(client, RJ54N1_OUT_SEL, 0x11); in rj54n1_set_fmt()
1038 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_set_fmt()
1041 ret = reg_write(client, RJ54N1_OUT_SEL, 0x11); in rj54n1_set_fmt()
1043 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_set_fmt()
1046 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_set_fmt()
1048 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_set_fmt()
1050 ret = reg_write(client, RJ54N1_RA_SEL_UL, 0); in rj54n1_set_fmt()
1053 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_set_fmt()
1055 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_set_fmt()
1057 ret = reg_write(client, RJ54N1_RA_SEL_UL, 8); in rj54n1_set_fmt()
1060 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_set_fmt()
1062 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_set_fmt()
1064 ret = reg_write(client, RJ54N1_RA_SEL_UL, 0); in rj54n1_set_fmt()
1067 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_set_fmt()
1069 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_set_fmt()
1071 ret = reg_write(client, RJ54N1_RA_SEL_UL, 8); in rj54n1_set_fmt()
1074 ret = reg_write(client, RJ54N1_OUT_SEL, 5); in rj54n1_set_fmt()
1082 ret = reg_set(client, RJ54N1_OCLK_SEL_EN, in rj54n1_set_fmt()
1125 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_register() local
1132 reg->val = reg_read(client, reg->reg); in rj54n1_g_register()
1143 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_register() local
1149 if (reg_write(client, reg->reg, reg->val) < 0) in rj54n1_s_register()
1158 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_power() local
1159 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_s_power()
1160 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_s_power()
1162 return soc_camera_set_power(&client->dev, ssdd, rj54n1->clk, on); in rj54n1_s_power()
1169 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_ctrl() local
1175 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 0, 1); in rj54n1_s_ctrl()
1177 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 1, 1); in rj54n1_s_ctrl()
1183 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 0, 2); in rj54n1_s_ctrl()
1185 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 2, 2); in rj54n1_s_ctrl()
1190 if (reg_write(client, RJ54N1_Y_GAIN, ctrl->val * 2) < 0) in rj54n1_s_ctrl()
1195 if (reg_set(client, RJ54N1_WB_SEL_WEIGHT_I, ctrl->val << 7, in rj54n1_s_ctrl()
1220 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_mbus_config() local
1221 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_g_mbus_config()
1236 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_mbus_config() local
1237 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_s_mbus_config()
1242 return reg_write(client, RJ54N1_OUT_SIGPO, 1 << 4); in rj54n1_s_mbus_config()
1244 return reg_write(client, RJ54N1_OUT_SIGPO, 0); in rj54n1_s_mbus_config()
1272 static int rj54n1_video_probe(struct i2c_client *client, in rj54n1_video_probe() argument
1275 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_video_probe()
1284 data1 = reg_read(client, RJ54N1_DEV_CODE); in rj54n1_video_probe()
1285 data2 = reg_read(client, RJ54N1_DEV_CODE2); in rj54n1_video_probe()
1289 dev_info(&client->dev, "No RJ54N1CB0C found, read 0x%x:0x%x\n", in rj54n1_video_probe()
1295 ret = reg_write(client, RJ54N1_IOC, priv->ioctl_high << 7); in rj54n1_video_probe()
1299 dev_info(&client->dev, "Detected a RJ54N1CB0C chip ID 0x%x:0x%x\n", in rj54n1_video_probe()
1309 static int rj54n1_probe(struct i2c_client *client, in rj54n1_probe() argument
1313 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_probe()
1314 struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); in rj54n1_probe()
1319 dev_err(&client->dev, "RJ54N1CB0C: missing platform data!\n"); in rj54n1_probe()
1331 rj54n1 = devm_kzalloc(&client->dev, sizeof(struct rj54n1), GFP_KERNEL); in rj54n1_probe()
1335 v4l2_i2c_subdev_init(&rj54n1->subdev, client, &rj54n1_subdev_ops); in rj54n1_probe()
1361 rj54n1->clk = v4l2_clk_get(&client->dev, "mclk"); in rj54n1_probe()
1367 ret = rj54n1_video_probe(client, rj54n1_priv); in rj54n1_probe()
1377 static int rj54n1_remove(struct i2c_client *client) in rj54n1_remove() argument
1379 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_remove()
1380 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_remove()