Lines Matching refs:sd

76 	struct v4l2_subdev sd;  member
101 static inline struct saa711x_state *to_state(struct v4l2_subdev *sd) in to_state() argument
103 return container_of(sd, struct saa711x_state, sd); in to_state()
108 return &container_of(ctrl->handler, struct saa711x_state, hdl)->sd; in to_sd()
113 static inline int saa711x_write(struct v4l2_subdev *sd, u8 reg, u8 value) in saa711x_write() argument
115 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa711x_write()
158 static int saa711x_writeregs(struct v4l2_subdev *sd, const unsigned char *regs) in saa711x_writeregs() argument
160 struct saa711x_state *state = to_state(sd); in saa711x_writeregs()
170 if (saa711x_write(sd, reg, data) < 0) in saa711x_writeregs()
173 v4l2_dbg(1, debug, sd, "tried to access reserved reg 0x%02x\n", reg); in saa711x_writeregs()
179 static inline int saa711x_read(struct v4l2_subdev *sd, u8 reg) in saa711x_read() argument
181 struct i2c_client *client = v4l2_get_subdevdata(sd); in saa711x_read()
754 static int saa711x_s_clock_freq(struct v4l2_subdev *sd, u32 freq) in saa711x_s_clock_freq() argument
756 struct saa711x_state *state = to_state(sd); in saa711x_s_clock_freq()
767 v4l2_dbg(1, debug, sd, "set audio clock freq: %d\n", freq); in saa711x_s_clock_freq()
798 saa711x_write(sd, R_38_CLK_RATIO_AMXCLK_TO_ASCLK, 0x03); in saa711x_s_clock_freq()
799 saa711x_write(sd, R_39_CLK_RATIO_ASCLK_TO_ALRCLK, 0x10 << state->double_asclk); in saa711x_s_clock_freq()
800 saa711x_write(sd, R_3A_AUD_CLK_GEN_BASIC_SETUP, acc); in saa711x_s_clock_freq()
802 saa711x_write(sd, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD, acpf & 0xff); in saa711x_s_clock_freq()
803 saa711x_write(sd, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD+1, in saa711x_s_clock_freq()
805 saa711x_write(sd, R_30_AUD_MAST_CLK_CYCLES_PER_FIELD+2, in saa711x_s_clock_freq()
808 saa711x_write(sd, R_34_AUD_MAST_CLK_NOMINAL_INC, acni & 0xff); in saa711x_s_clock_freq()
809 saa711x_write(sd, R_34_AUD_MAST_CLK_NOMINAL_INC+1, (acni >> 8) & 0xff); in saa711x_s_clock_freq()
810 saa711x_write(sd, R_34_AUD_MAST_CLK_NOMINAL_INC+2, (acni >> 16) & 0x3f); in saa711x_s_clock_freq()
817 struct v4l2_subdev *sd = to_sd(ctrl); in saa711x_g_volatile_ctrl() local
818 struct saa711x_state *state = to_state(sd); in saa711x_g_volatile_ctrl()
825 saa711x_read(sd, R_0F_CHROMA_GAIN_CNTL) & 0x7f; in saa711x_g_volatile_ctrl()
833 struct v4l2_subdev *sd = to_sd(ctrl); in saa711x_s_ctrl() local
834 struct saa711x_state *state = to_state(sd); in saa711x_s_ctrl()
838 saa711x_write(sd, R_0A_LUMA_BRIGHT_CNTL, ctrl->val); in saa711x_s_ctrl()
842 saa711x_write(sd, R_0B_LUMA_CONTRAST_CNTL, ctrl->val); in saa711x_s_ctrl()
846 saa711x_write(sd, R_0C_CHROMA_SAT_CNTL, ctrl->val); in saa711x_s_ctrl()
850 saa711x_write(sd, R_0D_CHROMA_HUE_CNTL, ctrl->val); in saa711x_s_ctrl()
856 saa711x_write(sd, R_0F_CHROMA_GAIN_CNTL, state->gain->val); in saa711x_s_ctrl()
858 saa711x_write(sd, R_0F_CHROMA_GAIN_CNTL, state->gain->val | 0x80); in saa711x_s_ctrl()
868 static int saa711x_set_size(struct v4l2_subdev *sd, int width, int height) in saa711x_set_size() argument
870 struct saa711x_state *state = to_state(sd); in saa711x_set_size()
877 v4l2_dbg(1, debug, sd, "decoder set size to %ix%i\n", width, height); in saa711x_set_size()
903 saa711x_write(sd, R_CC_B_HORIZ_OUTPUT_WINDOW_LENGTH, in saa711x_set_size()
905 saa711x_write(sd, R_CD_B_HORIZ_OUTPUT_WINDOW_LENGTH_MSB, in saa711x_set_size()
916 saa711x_write(sd, R_CE_B_VERT_OUTPUT_WINDOW_LENGTH, in saa711x_set_size()
918 saa711x_write(sd, R_CF_B_VERT_OUTPUT_WINDOW_LENGTH_MSB, in saa711x_set_size()
929 saa711x_write(sd, R_D0_B_HORIZ_PRESCALING, in saa711x_set_size()
932 v4l2_dbg(1, debug, sd, "Hpsc: 0x%05x, Hfsc: 0x%05x\n", HPSC, HFSC); in saa711x_set_size()
934 saa711x_write(sd, R_D8_B_HORIZ_LUMA_SCALING_INC, in saa711x_set_size()
936 saa711x_write(sd, R_D9_B_HORIZ_LUMA_SCALING_INC_MSB, in saa711x_set_size()
940 saa711x_write(sd, R_DC_B_HORIZ_CHROMA_SCALING, in saa711x_set_size()
942 saa711x_write(sd, R_DD_B_HORIZ_CHROMA_SCALING_MSB, in saa711x_set_size()
946 v4l2_dbg(1, debug, sd, "Vsrc: %d, Vscy: 0x%05x\n", Vsrc, VSCY); in saa711x_set_size()
949 saa711x_write(sd, R_D5_B_LUMA_CONTRAST_CNTL, in saa711x_set_size()
951 saa711x_write(sd, R_D6_B_CHROMA_SATURATION_CNTL, in saa711x_set_size()
955 saa711x_write(sd, R_E0_B_VERT_LUMA_SCALING_INC, in saa711x_set_size()
957 saa711x_write(sd, R_E1_B_VERT_LUMA_SCALING_INC_MSB, in saa711x_set_size()
960 saa711x_write(sd, R_E2_B_VERT_CHROMA_SCALING_INC, in saa711x_set_size()
962 saa711x_write(sd, R_E3_B_VERT_CHROMA_SCALING_INC_MSB, in saa711x_set_size()
965 saa711x_writeregs(sd, saa7115_cfg_reset_scaler); in saa711x_set_size()
968 saa711x_write(sd, R_80_GLOBAL_CNTL_1, in saa711x_set_size()
969 saa711x_read(sd, R_80_GLOBAL_CNTL_1) | 0x20); in saa711x_set_size()
974 static void saa711x_set_v4lstd(struct v4l2_subdev *sd, v4l2_std_id std) in saa711x_set_v4lstd() argument
976 struct saa711x_state *state = to_state(sd); in saa711x_set_v4lstd()
992 v4l2_dbg(1, debug, sd, "decoder set standard 60 Hz\n"); in saa711x_set_v4lstd()
994 u8 reg = saa711x_read(sd, R_08_SYNC_CNTL); in saa711x_set_v4lstd()
997 saa711x_write(sd, R_08_SYNC_CNTL, reg); in saa711x_set_v4lstd()
999 saa711x_writeregs(sd, saa7115_cfg_60hz_video); in saa711x_set_v4lstd()
1001 saa711x_set_size(sd, 720, 480); in saa711x_set_v4lstd()
1003 v4l2_dbg(1, debug, sd, "decoder set standard 50 Hz\n"); in saa711x_set_v4lstd()
1005 u8 reg = saa711x_read(sd, R_08_SYNC_CNTL); in saa711x_set_v4lstd()
1007 saa711x_write(sd, R_08_SYNC_CNTL, reg); in saa711x_set_v4lstd()
1009 saa711x_writeregs(sd, saa7115_cfg_50hz_video); in saa711x_set_v4lstd()
1011 saa711x_set_size(sd, 720, 576); in saa711x_set_v4lstd()
1025 u8 reg = saa711x_read(sd, R_0E_CHROMA_CNTL_1) & 0x8f; in saa711x_set_v4lstd()
1038 saa711x_write(sd, R_0E_CHROMA_CNTL_1, reg); in saa711x_set_v4lstd()
1041 int taskb = saa711x_read(sd, R_80_GLOBAL_CNTL_1) & 0x10; in saa711x_set_v4lstd()
1044 saa711x_writeregs(sd, saa7115_cfg_vbi_on); in saa711x_set_v4lstd()
1047 saa711x_s_clock_freq(sd, state->audclk_freq); in saa711x_set_v4lstd()
1052 static void saa711x_set_lcr(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *fmt) in saa711x_set_lcr() argument
1054 struct saa711x_state *state = to_state(sd); in saa711x_set_lcr()
1125 saa711x_write(sd, i - 2 + R_41_LCR_BASE, lcr[i]); in saa711x_set_lcr()
1129 saa711x_writeregs(sd, fmt == NULL ? in saa711x_set_lcr()
1134 static int saa711x_g_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *sliced) in saa711x_g_sliced_fmt() argument
1148 if (saa711x_read(sd, R_80_GLOBAL_CNTL_1) & 0x10) in saa711x_g_sliced_fmt()
1151 u8 v = saa711x_read(sd, i - 2 + R_41_LCR_BASE); in saa711x_g_sliced_fmt()
1161 static int saa711x_s_raw_fmt(struct v4l2_subdev *sd, struct v4l2_vbi_format *fmt) in saa711x_s_raw_fmt() argument
1163 saa711x_set_lcr(sd, NULL); in saa711x_s_raw_fmt()
1167 static int saa711x_s_sliced_fmt(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_format *fmt) in saa711x_s_sliced_fmt() argument
1169 saa711x_set_lcr(sd, fmt); in saa711x_s_sliced_fmt()
1173 static int saa711x_set_fmt(struct v4l2_subdev *sd, in saa711x_set_fmt() argument
1185 return saa711x_set_size(sd, fmt->width, fmt->height); in saa711x_set_fmt()
1194 static int saa711x_decode_vbi_line(struct v4l2_subdev *sd, struct v4l2_decode_vbi_line *vbi) in saa711x_decode_vbi_line() argument
1196 struct saa711x_state *state = to_state(sd); in saa711x_decode_vbi_line()
1259 static int saa711x_g_tuner(struct v4l2_subdev *sd, struct v4l2_tuner *vt) in saa711x_g_tuner() argument
1261 struct saa711x_state *state = to_state(sd); in saa711x_g_tuner()
1266 status = saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC); in saa711x_g_tuner()
1268 v4l2_dbg(1, debug, sd, "status: 0x%02x\n", status); in saa711x_g_tuner()
1273 static int saa711x_s_std(struct v4l2_subdev *sd, v4l2_std_id std) in saa711x_s_std() argument
1275 struct saa711x_state *state = to_state(sd); in saa711x_s_std()
1278 saa711x_set_v4lstd(sd, std); in saa711x_s_std()
1282 static int saa711x_s_radio(struct v4l2_subdev *sd) in saa711x_s_radio() argument
1284 struct saa711x_state *state = to_state(sd); in saa711x_s_radio()
1290 static int saa711x_s_routing(struct v4l2_subdev *sd, in saa711x_s_routing() argument
1293 struct saa711x_state *state = to_state(sd); in saa711x_s_routing()
1296 v4l2_dbg(1, debug, sd, "decoder set input %d output %d\n", in saa711x_s_routing()
1310 v4l2_dbg(1, debug, sd, "now setting %s input %s output\n", in saa711x_s_routing()
1320 saa711x_write(sd, R_10_CHROMA_CNTL_2, in saa711x_s_routing()
1321 (saa711x_read(sd, R_10_CHROMA_CNTL_2) & 0x3f) | in saa711x_s_routing()
1323 saa711x_write(sd, R_13_RT_X_PORT_OUT_CNTL, in saa711x_s_routing()
1324 (saa711x_read(sd, R_13_RT_X_PORT_OUT_CNTL) & 0xf0) | in saa711x_s_routing()
1329 saa711x_write(sd, R_02_INPUT_CNTL_1, in saa711x_s_routing()
1330 (saa711x_read(sd, R_02_INPUT_CNTL_1) & mask) | in saa711x_s_routing()
1334 saa711x_write(sd, R_09_LUMA_CNTL, in saa711x_s_routing()
1335 (saa711x_read(sd, R_09_LUMA_CNTL) & 0x7f) | in saa711x_s_routing()
1341 saa711x_write(sd, R_83_X_PORT_I_O_ENA_AND_OUT_CLK, in saa711x_s_routing()
1342 (saa711x_read(sd, R_83_X_PORT_I_O_ENA_AND_OUT_CLK) & 0xfe) | in saa711x_s_routing()
1347 saa711x_write(sd, R_85_I_PORT_SIGNAL_POLAR, 0x20); in saa711x_s_routing()
1349 saa711x_write(sd, R_85_I_PORT_SIGNAL_POLAR, 0x21); in saa711x_s_routing()
1354 static int saa711x_s_gpio(struct v4l2_subdev *sd, u32 val) in saa711x_s_gpio() argument
1356 struct saa711x_state *state = to_state(sd); in saa711x_s_gpio()
1360 saa711x_write(sd, 0x11, (saa711x_read(sd, 0x11) & 0x7f) | in saa711x_s_gpio()
1365 static int saa711x_s_stream(struct v4l2_subdev *sd, int enable) in saa711x_s_stream() argument
1367 struct saa711x_state *state = to_state(sd); in saa711x_s_stream()
1369 v4l2_dbg(1, debug, sd, "%s output\n", in saa711x_s_stream()
1377 saa711x_write(sd, R_87_I_PORT_I_O_ENA_OUT_CLK_AND_GATED, state->enable); in saa711x_s_stream()
1381 static int saa711x_s_crystal_freq(struct v4l2_subdev *sd, u32 freq, u32 flags) in saa711x_s_crystal_freq() argument
1383 struct saa711x_state *state = to_state(sd); in saa711x_s_crystal_freq()
1392 saa711x_s_clock_freq(sd, state->audclk_freq); in saa711x_s_crystal_freq()
1396 static int saa711x_reset(struct v4l2_subdev *sd, u32 val) in saa711x_reset() argument
1398 v4l2_dbg(1, debug, sd, "decoder RESET\n"); in saa711x_reset()
1399 saa711x_writeregs(sd, saa7115_cfg_reset_scaler); in saa711x_reset()
1403 static int saa711x_g_vbi_data(struct v4l2_subdev *sd, struct v4l2_sliced_vbi_data *data) in saa711x_g_vbi_data() argument
1410 if (saa711x_read(sd, 0x6b) & 0xc0) in saa711x_g_vbi_data()
1412 data->data[0] = saa711x_read(sd, 0x6c); in saa711x_g_vbi_data()
1413 data->data[1] = saa711x_read(sd, 0x6d); in saa711x_g_vbi_data()
1418 if (saa711x_read(sd, 0x66) & 0x30) in saa711x_g_vbi_data()
1420 data->data[0] = saa711x_read(sd, 0x69); in saa711x_g_vbi_data()
1421 data->data[1] = saa711x_read(sd, 0x6a); in saa711x_g_vbi_data()
1425 if (saa711x_read(sd, 0x66) & 0xc0) in saa711x_g_vbi_data()
1427 data->data[0] = saa711x_read(sd, 0x67); in saa711x_g_vbi_data()
1428 data->data[1] = saa711x_read(sd, 0x68); in saa711x_g_vbi_data()
1435 static int saa711x_querystd(struct v4l2_subdev *sd, v4l2_std_id *std) in saa711x_querystd() argument
1437 struct saa711x_state *state = to_state(sd); in saa711x_querystd()
1446 reg1f = saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC); in saa711x_querystd()
1449 reg1e = saa711x_read(sd, R_1E_STATUS_BYTE_1_VD_DEC); in saa711x_querystd()
1451 v4l2_dbg(1, debug, sd, "Status byte 1 (0x1e)=0x%02x\n", reg1e); in saa711x_querystd()
1476 v4l2_dbg(1, debug, sd, "Status byte 2 (0x1f)=0x%02x\n", reg1f); in saa711x_querystd()
1490 v4l2_dbg(1, debug, sd, "detected std mask = %08Lx\n", *std); in saa711x_querystd()
1495 static int saa711x_g_input_status(struct v4l2_subdev *sd, u32 *status) in saa711x_g_input_status() argument
1497 struct saa711x_state *state = to_state(sd); in saa711x_g_input_status()
1503 reg1e = saa711x_read(sd, R_1E_STATUS_BYTE_1_VD_DEC); in saa711x_g_input_status()
1504 reg1f = saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC); in saa711x_g_input_status()
1511 static int saa711x_g_register(struct v4l2_subdev *sd, struct v4l2_dbg_register *reg) in saa711x_g_register() argument
1513 reg->val = saa711x_read(sd, reg->reg & 0xff); in saa711x_g_register()
1518 static int saa711x_s_register(struct v4l2_subdev *sd, const struct v4l2_dbg_register *reg) in saa711x_s_register() argument
1520 saa711x_write(sd, reg->reg & 0xff, reg->val & 0xff); in saa711x_s_register()
1525 static int saa711x_log_status(struct v4l2_subdev *sd) in saa711x_log_status() argument
1527 struct saa711x_state *state = to_state(sd); in saa711x_log_status()
1532 v4l2_info(sd, "Audio frequency: %d Hz\n", state->audclk_freq); in saa711x_log_status()
1535 reg1f = saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC); in saa711x_log_status()
1537 v4l2_info(sd, "Video signal: %s\n", signalOk ? "ok" : "bad"); in saa711x_log_status()
1538 v4l2_info(sd, "Frequency: %s\n", (reg1f & 0x20) ? "60 Hz" : "50 Hz"); in saa711x_log_status()
1543 reg1e = saa711x_read(sd, R_1E_STATUS_BYTE_1_VD_DEC); in saa711x_log_status()
1544 reg1f = saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC); in saa711x_log_status()
1550 v4l2_info(sd, "Input: S-Video %d\n", state->input - 6); in saa711x_log_status()
1552 v4l2_info(sd, "Input: Composite %d\n", state->input); in saa711x_log_status()
1553 v4l2_info(sd, "Video signal: %s\n", signalOk ? (vcr ? "VCR" : "broadcast/DVD") : "bad"); in saa711x_log_status()
1554 v4l2_info(sd, "Frequency: %s\n", (reg1f & 0x20) ? "60 Hz" : "50 Hz"); in saa711x_log_status()
1558 v4l2_info(sd, "Detected format: NTSC\n"); in saa711x_log_status()
1561 v4l2_info(sd, "Detected format: PAL\n"); in saa711x_log_status()
1564 v4l2_info(sd, "Detected format: SECAM\n"); in saa711x_log_status()
1567 v4l2_info(sd, "Detected format: BW/No color\n"); in saa711x_log_status()
1570 v4l2_info(sd, "Width, Height: %d, %d\n", state->width, state->height); in saa711x_log_status()
1571 v4l2_ctrl_handler_log_status(&state->hdl, sd->name); in saa711x_log_status()
1645 struct v4l2_subdev *sd = &state->sd; in saa711x_write_platform_data() local
1653 work = saa711x_read(sd, R_08_SYNC_CNTL); in saa711x_write_platform_data()
1656 saa711x_write(sd, R_08_SYNC_CNTL, work); in saa711x_write_platform_data()
1660 work = saa711x_read(sd, R_10_CHROMA_CNTL_2); in saa711x_write_platform_data()
1664 saa711x_write(sd, R_10_CHROMA_CNTL_2, work); in saa711x_write_platform_data()
1668 work = saa711x_read(sd, R_10_CHROMA_CNTL_2); in saa711x_write_platform_data()
1671 saa711x_write(sd, R_10_CHROMA_CNTL_2, work); in saa711x_write_platform_data()
1675 work = saa711x_read(sd, R_12_RT_SIGNAL_CNTL); in saa711x_write_platform_data()
1682 saa711x_write(sd, R_12_RT_SIGNAL_CNTL, work); in saa711x_write_platform_data()
1686 work = saa711x_read(sd, R_12_RT_SIGNAL_CNTL); in saa711x_write_platform_data()
1689 saa711x_write(sd, R_12_RT_SIGNAL_CNTL, work); in saa711x_write_platform_data()
1693 work = saa711x_read(sd, R_13_RT_X_PORT_OUT_CNTL); in saa711x_write_platform_data()
1697 saa711x_write(sd, R_13_RT_X_PORT_OUT_CNTL, work); in saa711x_write_platform_data()
1807 struct v4l2_subdev *sd; in saa711x_probe() local
1832 sd = &state->sd; in saa711x_probe()
1833 v4l2_i2c_subdev_init(sd, client, &saa711x_ops); in saa711x_probe()
1852 sd->ctrl_handler = hdl; in saa711x_probe()
1869 v4l2_dbg(1, debug, sd, "writing init values\n"); in saa711x_probe()
1877 saa711x_writeregs(sd, saa7111_init); in saa711x_probe()
1880 saa711x_writeregs(sd, gm7113c_init); in saa711x_probe()
1884 saa711x_writeregs(sd, gm7113c_init); in saa711x_probe()
1886 saa711x_writeregs(sd, saa7113_init); in saa711x_probe()
1890 saa711x_writeregs(sd, saa7115_init_auto_input); in saa711x_probe()
1893 saa711x_writeregs(sd, saa7115_init_misc); in saa711x_probe()
1898 saa711x_set_v4lstd(sd, V4L2_STD_NTSC); in saa711x_probe()
1901 v4l2_dbg(1, debug, sd, "status: (1E) 0x%02x, (1F) 0x%02x\n", in saa711x_probe()
1902 saa711x_read(sd, R_1E_STATUS_BYTE_1_VD_DEC), in saa711x_probe()
1903 saa711x_read(sd, R_1F_STATUS_BYTE_2_VD_DEC)); in saa711x_probe()
1911 struct v4l2_subdev *sd = i2c_get_clientdata(client); in saa711x_remove() local
1913 v4l2_device_unregister_subdev(sd); in saa711x_remove()
1914 v4l2_ctrl_handler_free(sd->ctrl_handler); in saa711x_remove()