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()
500 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_stream() local
503 return reg_set(client, RJ54N1_STILL_CONTROL, (!enable) << 7, 0x80); in rj54n1_s_stream()
506 static int rj54n1_set_rect(struct i2c_client *client, in rj54n1_set_rect() argument
512 ret = reg_write(client, reg_xy, in rj54n1_set_rect()
517 ret = reg_write(client, reg_x, width & 0xff); in rj54n1_set_rect()
519 ret = reg_write(client, reg_y, height & 0xff); in rj54n1_set_rect()
528 static int rj54n1_commit(struct i2c_client *client) in rj54n1_commit() argument
530 int ret = reg_write(client, RJ54N1_INIT_START, 1); in rj54n1_commit()
533 ret = reg_write(client, RJ54N1_INIT_START, 0); in rj54n1_commit()
542 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_crop() local
543 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_s_crop()
559 dev_dbg(&client->dev, "Scaling for %dx%d : %u = %dx%d\n", in rj54n1_s_crop()
577 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_crop() local
578 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_g_crop()
603 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_fmt() local
604 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_g_fmt()
623 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_sensor_scale() local
624 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_sensor_scale()
645 dev_dbg(&client->dev, "Adjusted output width: in %u, out %u\n", in rj54n1_sensor_scale()
657 dev_dbg(&client->dev, "Adjusted output height: in %u, out %u\n", in rj54n1_sensor_scale()
662 ret = rj54n1_set_rect(client, RJ54N1_X_OUTPUT_SIZE_S_L, in rj54n1_sensor_scale()
666 ret = rj54n1_set_rect(client, RJ54N1_X_OUTPUT_SIZE_P_L, in rj54n1_sensor_scale()
712 ret = reg_write(client, RJ54N1_RESIZE_HOLD_L, resize & 0xff); in rj54n1_sensor_scale()
714 ret = reg_write(client, RJ54N1_RESIZE_HOLD_H, resize >> 8); in rj54n1_sensor_scale()
740 ret = reg_write(client, RJ54N1_INC_USE_SEL_L, inc_sel & 0xfc); in rj54n1_sensor_scale()
742 ret = reg_write(client, RJ54N1_INC_USE_SEL_H, inc_sel >> 8); in rj54n1_sensor_scale()
754 ret = reg_write(client, RJ54N1_BIT8_WB, wb_bit8); in rj54n1_sensor_scale()
756 ret = reg_write(client, RJ54N1_HCAPS_WB, wb_left); in rj54n1_sensor_scale()
758 ret = reg_write(client, RJ54N1_VCAPS_WB, wb_top); in rj54n1_sensor_scale()
760 ret = reg_write(client, RJ54N1_HCAPE_WB, wb_right); in rj54n1_sensor_scale()
762 ret = reg_write(client, RJ54N1_VCAPE_WB, wb_bottom); in rj54n1_sensor_scale()
772 ret = reg_write(client, RJ54N1_PEAK_H, in rj54n1_sensor_scale()
775 ret = reg_write(client, RJ54N1_PEAK_50, peak_50); in rj54n1_sensor_scale()
777 ret = reg_write(client, RJ54N1_PEAK_60, peak_60); in rj54n1_sensor_scale()
779 ret = reg_write(client, RJ54N1_PEAK_DIFF, peak / 150); in rj54n1_sensor_scale()
783 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, in rj54n1_sensor_scale()
792 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, RESIZE_HOLD_SEL | 1); in rj54n1_sensor_scale()
801 dev_dbg(&client->dev, "Scaled for %dx%d : %u = %ux%u, skip %u\n", in rj54n1_sensor_scale()
807 static int rj54n1_set_clock(struct i2c_client *client) in rj54n1_set_clock() argument
809 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_set_clock()
813 ret = reg_write(client, RJ54N1_RESET_STANDBY, E_EXCLK | SOFT_STDBY); in rj54n1_set_clock()
816 ret = reg_write(client, RJ54N1_RESET_STANDBY, E_EXCLK); in rj54n1_set_clock()
819 ret = reg_write(client, RJ54N1_PLL_L, PLL_L); in rj54n1_set_clock()
821 ret = reg_write(client, RJ54N1_PLL_N, PLL_N); in rj54n1_set_clock()
825 ret = reg_write(client, RJ54N1_RATIO_TG, in rj54n1_set_clock()
828 ret = reg_write(client, RJ54N1_RATIO_T, in rj54n1_set_clock()
831 ret = reg_write(client, RJ54N1_RATIO_R, in rj54n1_set_clock()
836 ret = reg_write(client, RJ54N1_RAMP_TGCLK_EN, 3); in rj54n1_set_clock()
840 ret = reg_write(client, RJ54N1_OCLK_DSP, 0); in rj54n1_set_clock()
844 ret = reg_write(client, RJ54N1_RATIO_OP, in rj54n1_set_clock()
847 ret = reg_write(client, RJ54N1_RATIO_O, in rj54n1_set_clock()
852 ret = reg_write(client, RJ54N1_OCLK_SEL_EN, 1); in rj54n1_set_clock()
856 ret = reg_write(client, RJ54N1_TG_BYPASS, 2); in rj54n1_set_clock()
860 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_set_clock()
864 ret = reg_write(client, RJ54N1_PLL_EN, 1); in rj54n1_set_clock()
871 ret = reg_write(client, RJ54N1_CLK_RST, 1); in rj54n1_set_clock()
874 ret = reg_read(client, RJ54N1_CLK_RST); in rj54n1_set_clock()
876 dev_err(&client->dev, in rj54n1_set_clock()
882 ret = reg_set(client, RJ54N1_OCLK_DSP, 1, 1); in rj54n1_set_clock()
886 ret = reg_write(client, RJ54N1_OCLK_SEL_EN, 1); in rj54n1_set_clock()
891 static int rj54n1_reg_init(struct i2c_client *client) in rj54n1_reg_init() argument
893 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_reg_init()
894 int ret = rj54n1_set_clock(client); in rj54n1_reg_init()
897 ret = reg_write_multiple(client, bank_7, ARRAY_SIZE(bank_7)); in rj54n1_reg_init()
899 ret = reg_write_multiple(client, bank_10, ARRAY_SIZE(bank_10)); in rj54n1_reg_init()
903 ret = reg_write(client, RJ54N1_SCALE_1_2_LEV, 3 | (7 << 4)); in rj54n1_reg_init()
905 ret = reg_write(client, RJ54N1_SCALE_4_LEV, 0xf); in rj54n1_reg_init()
909 ret = reg_write(client, RJ54N1_RESIZE_CONTROL, in rj54n1_reg_init()
914 ret = reg_write(client, RJ54N1_Y_GAIN, 0x84); in rj54n1_reg_init()
921 ret = reg_write(client, RJ54N1_MIRROR_STILL_MODE, 0x27); in rj54n1_reg_init()
924 ret = reg_write_multiple(client, bank_4, ARRAY_SIZE(bank_4)); in rj54n1_reg_init()
928 ret = reg_write(client, RJ54N1_EXPOSURE_CONTROL, 0x80); in rj54n1_reg_init()
931 ret = reg_read(client, RJ54N1_WB_SEL_WEIGHT_I); in rj54n1_reg_init()
934 ret = reg_write_multiple(client, bank_5, ARRAY_SIZE(bank_5)); in rj54n1_reg_init()
937 ret = reg_write_multiple(client, bank_8, ARRAY_SIZE(bank_8)); in rj54n1_reg_init()
940 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_reg_init()
945 ret = rj54n1_commit(client); in rj54n1_reg_init()
949 ret = reg_write(client, RJ54N1_RESET_STANDBY, in rj54n1_reg_init()
954 ret = reg_write(client, RJ54N1_FWFLG, 2); in rj54n1_reg_init()
965 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_try_fmt() local
966 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_try_fmt()
974 dev_dbg(&client->dev, "%s: code = %d, width = %u, height = %u\n", in rj54n1_try_fmt()
996 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_fmt() local
997 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_s_fmt()
1013 ret = reg_read(client, RJ54N1_RESET_STANDBY); in rj54n1_s_fmt()
1018 ret = rj54n1_reg_init(client); in rj54n1_s_fmt()
1023 dev_dbg(&client->dev, "%s: code = %d, width = %u, height = %u\n", in rj54n1_s_fmt()
1029 ret = reg_write(client, RJ54N1_OUT_SEL, 0); in rj54n1_s_fmt()
1031 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_s_fmt()
1034 ret = reg_write(client, RJ54N1_OUT_SEL, 0); in rj54n1_s_fmt()
1036 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_s_fmt()
1039 ret = reg_write(client, RJ54N1_OUT_SEL, 0x11); in rj54n1_s_fmt()
1041 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_s_fmt()
1044 ret = reg_write(client, RJ54N1_OUT_SEL, 0x11); in rj54n1_s_fmt()
1046 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_s_fmt()
1049 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_s_fmt()
1051 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_s_fmt()
1053 ret = reg_write(client, RJ54N1_RA_SEL_UL, 0); in rj54n1_s_fmt()
1056 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_s_fmt()
1058 ret = reg_set(client, RJ54N1_BYTE_SWAP, 8, 8); in rj54n1_s_fmt()
1060 ret = reg_write(client, RJ54N1_RA_SEL_UL, 8); in rj54n1_s_fmt()
1063 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_s_fmt()
1065 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_s_fmt()
1067 ret = reg_write(client, RJ54N1_RA_SEL_UL, 0); in rj54n1_s_fmt()
1070 ret = reg_write(client, RJ54N1_OUT_SEL, 4); in rj54n1_s_fmt()
1072 ret = reg_set(client, RJ54N1_BYTE_SWAP, 0, 8); in rj54n1_s_fmt()
1074 ret = reg_write(client, RJ54N1_RA_SEL_UL, 8); in rj54n1_s_fmt()
1077 ret = reg_write(client, RJ54N1_OUT_SEL, 5); in rj54n1_s_fmt()
1085 ret = reg_set(client, RJ54N1_OCLK_SEL_EN, in rj54n1_s_fmt()
1128 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_register() local
1135 reg->val = reg_read(client, reg->reg); in rj54n1_g_register()
1146 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_register() local
1152 if (reg_write(client, reg->reg, reg->val) < 0) in rj54n1_s_register()
1161 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_power() local
1162 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_s_power()
1163 struct rj54n1 *rj54n1 = to_rj54n1(client); in rj54n1_s_power()
1165 return soc_camera_set_power(&client->dev, ssdd, rj54n1->clk, on); in rj54n1_s_power()
1172 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_ctrl() local
1178 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 0, 1); in rj54n1_s_ctrl()
1180 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 1, 1); in rj54n1_s_ctrl()
1186 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 0, 2); in rj54n1_s_ctrl()
1188 data = reg_set(client, RJ54N1_MIRROR_STILL_MODE, 2, 2); in rj54n1_s_ctrl()
1193 if (reg_write(client, RJ54N1_Y_GAIN, ctrl->val * 2) < 0) in rj54n1_s_ctrl()
1198 if (reg_set(client, RJ54N1_WB_SEL_WEIGHT_I, ctrl->val << 7, in rj54n1_s_ctrl()
1223 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_g_mbus_config() local
1224 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_g_mbus_config()
1239 struct i2c_client *client = v4l2_get_subdevdata(sd); in rj54n1_s_mbus_config() local
1240 struct soc_camera_subdev_desc *ssdd = soc_camera_i2c_to_desc(client); in rj54n1_s_mbus_config()
1245 return reg_write(client, RJ54N1_OUT_SIGPO, 1 << 4); in rj54n1_s_mbus_config()
1247 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()