Lines Matching refs:state

177 static bool adv76xx_has_afe(struct adv76xx_state *state)  in adv76xx_has_afe()  argument
179 return state->info->has_afe; in adv76xx_has_afe()
364 static s32 adv_smbus_read_byte_data(struct adv76xx_state *state, in adv_smbus_read_byte_data() argument
367 return adv_smbus_read_byte_data_check(state->i2c_clients[page], in adv_smbus_read_byte_data()
371 static s32 adv_smbus_write_byte_data(struct adv76xx_state *state, in adv_smbus_write_byte_data() argument
375 struct i2c_client *client = state->i2c_clients[page]; in adv_smbus_write_byte_data()
395 static s32 adv_smbus_write_i2c_block_data(struct adv76xx_state *state, in adv_smbus_write_i2c_block_data() argument
399 struct i2c_client *client = state->i2c_clients[page]; in adv_smbus_write_i2c_block_data()
415 struct adv76xx_state *state = to_state(sd); in io_read() local
417 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_IO, reg); in io_read()
422 struct adv76xx_state *state = to_state(sd); in io_write() local
424 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_IO, reg, val); in io_write()
434 struct adv76xx_state *state = to_state(sd); in avlink_read() local
436 return adv_smbus_read_byte_data(state, ADV7604_PAGE_AVLINK, reg); in avlink_read()
441 struct adv76xx_state *state = to_state(sd); in avlink_write() local
443 return adv_smbus_write_byte_data(state, ADV7604_PAGE_AVLINK, reg, val); in avlink_write()
448 struct adv76xx_state *state = to_state(sd); in cec_read() local
450 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_CEC, reg); in cec_read()
455 struct adv76xx_state *state = to_state(sd); in cec_write() local
457 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_CEC, reg, val); in cec_write()
462 struct adv76xx_state *state = to_state(sd); in infoframe_read() local
464 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_INFOFRAME, reg); in infoframe_read()
469 struct adv76xx_state *state = to_state(sd); in infoframe_write() local
471 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_INFOFRAME, in infoframe_write()
477 struct adv76xx_state *state = to_state(sd); in afe_read() local
479 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_AFE, reg); in afe_read()
484 struct adv76xx_state *state = to_state(sd); in afe_write() local
486 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_AFE, reg, val); in afe_write()
491 struct adv76xx_state *state = to_state(sd); in rep_read() local
493 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_REP, reg); in rep_read()
498 struct adv76xx_state *state = to_state(sd); in rep_write() local
500 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_REP, reg, val); in rep_write()
510 struct adv76xx_state *state = to_state(sd); in edid_read() local
512 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_EDID, reg); in edid_read()
517 struct adv76xx_state *state = to_state(sd); in edid_write() local
519 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_EDID, reg, val); in edid_write()
525 struct adv76xx_state *state = to_state(sd); in edid_write_block() local
532 err = adv_smbus_write_i2c_block_data(state, ADV76XX_PAGE_EDID, in edid_write_block()
537 static void adv76xx_set_hpd(struct adv76xx_state *state, unsigned int hpd) in adv76xx_set_hpd() argument
541 for (i = 0; i < state->info->num_dv_ports; ++i) in adv76xx_set_hpd()
542 gpiod_set_value_cansleep(state->hpd_gpio[i], hpd & BIT(i)); in adv76xx_set_hpd()
544 v4l2_subdev_notify(&state->sd, ADV76XX_HOTPLUG, &hpd); in adv76xx_set_hpd()
550 struct adv76xx_state *state = container_of(dwork, struct adv76xx_state, in adv76xx_delayed_work_enable_hotplug() local
552 struct v4l2_subdev *sd = &state->sd; in adv76xx_delayed_work_enable_hotplug()
556 adv76xx_set_hpd(state, state->edid.present); in adv76xx_delayed_work_enable_hotplug()
561 struct adv76xx_state *state = to_state(sd); in hdmi_read() local
563 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_HDMI, reg); in hdmi_read()
573 struct adv76xx_state *state = to_state(sd); in hdmi_write() local
575 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_HDMI, reg, val); in hdmi_write()
585 struct adv76xx_state *state = to_state(sd); in test_write() local
587 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_TEST, reg, val); in test_write()
592 struct adv76xx_state *state = to_state(sd); in cp_read() local
594 return adv_smbus_read_byte_data(state, ADV76XX_PAGE_CP, reg); in cp_read()
604 struct adv76xx_state *state = to_state(sd); in cp_write() local
606 return adv_smbus_write_byte_data(state, ADV76XX_PAGE_CP, reg, val); in cp_write()
616 struct adv76xx_state *state = to_state(sd); in vdp_read() local
618 return adv_smbus_read_byte_data(state, ADV7604_PAGE_VDP, reg); in vdp_read()
623 struct adv76xx_state *state = to_state(sd); in vdp_write() local
625 return adv_smbus_write_byte_data(state, ADV7604_PAGE_VDP, reg, val); in vdp_write()
634 struct adv76xx_state *state = to_state(sd); in adv76xx_read_reg() local
637 if (!(BIT(page) & state->info->page_mask)) in adv76xx_read_reg()
642 return adv_smbus_read_byte_data(state, page, reg); in adv76xx_read_reg()
648 struct adv76xx_state *state = to_state(sd); in adv76xx_write_reg() local
651 if (!(BIT(page) & state->info->page_mask)) in adv76xx_write_reg()
656 return adv_smbus_write_byte_data(state, page, reg, val); in adv76xx_write_reg()
743 adv76xx_format_info(struct adv76xx_state *state, u32 code) in adv76xx_format_info() argument
747 for (i = 0; i < state->info->nformats; ++i) { in adv76xx_format_info()
748 if (state->info->formats[i].code == code) in adv76xx_format_info()
749 return &state->info->formats[i]; in adv76xx_format_info()
759 struct adv76xx_state *state = to_state(sd); in is_analog_input() local
761 return state->selected_input == ADV7604_PAD_VGA_RGB || in is_analog_input()
762 state->selected_input == ADV7604_PAD_VGA_COMP; in is_analog_input()
767 struct adv76xx_state *state = to_state(sd); in is_digital_input() local
769 return state->selected_input == ADV76XX_PAD_HDMI_PORT_A || in is_digital_input()
770 state->selected_input == ADV7604_PAD_HDMI_PORT_B || in is_digital_input()
771 state->selected_input == ADV7604_PAD_HDMI_PORT_C || in is_digital_input()
772 state->selected_input == ADV7604_PAD_HDMI_PORT_D; in is_digital_input()
848 struct adv76xx_state *state = to_state(sd); in adv76xx_s_detect_tx_5v_ctrl() local
849 const struct adv76xx_chip_info *info = state->info; in adv76xx_s_detect_tx_5v_ctrl()
851 return v4l2_ctrl_s_ctrl(state->detect_tx_5v_ctrl, in adv76xx_s_detect_tx_5v_ctrl()
878 struct adv76xx_state *state = to_state(sd); in configure_predefined_video_timings() local
883 if (adv76xx_has_afe(state)) { in configure_predefined_video_timings()
915 __func__, state->selected_input); in configure_predefined_video_timings()
926 struct adv76xx_state *state = to_state(sd); in configure_custom_video_timings() local
952 if (adv_smbus_write_i2c_block_data(state, ADV76XX_PAGE_IO, in configure_custom_video_timings()
974 __func__, state->selected_input); in configure_custom_video_timings()
985 struct adv76xx_state *state = to_state(sd); in adv76xx_set_offset() local
1004 if (adv_smbus_write_i2c_block_data(state, ADV76XX_PAGE_CP, in adv76xx_set_offset()
1011 struct adv76xx_state *state = to_state(sd); in adv76xx_set_gain() local
1034 if (adv_smbus_write_i2c_block_data(state, ADV76XX_PAGE_CP, in adv76xx_set_gain()
1041 struct adv76xx_state *state = to_state(sd); in set_rgb_quantization_range() local
1046 __func__, state->rgb_quantization_range, in set_rgb_quantization_range()
1052 switch (state->rgb_quantization_range) { in set_rgb_quantization_range()
1054 if (state->selected_input == ADV7604_PAD_VGA_RGB) { in set_rgb_quantization_range()
1061 if (state->selected_input == ADV7604_PAD_VGA_COMP) { in set_rgb_quantization_range()
1078 if (state->timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO) { in set_rgb_quantization_range()
1094 if (state->selected_input == ADV7604_PAD_VGA_COMP) { in set_rgb_quantization_range()
1105 if (state->selected_input == ADV7604_PAD_VGA_COMP) { in set_rgb_quantization_range()
1133 struct adv76xx_state *state = to_state(sd); in adv76xx_s_ctrl() local
1149 state->rgb_quantization_range = ctrl->val; in adv76xx_s_ctrl()
1153 if (!adv76xx_has_afe(state)) in adv76xx_s_ctrl()
1185 struct adv76xx_state *state = to_state(sd); in no_signal_tmds() local
1187 return !(io_read(sd, 0x6a) & (0x10 >> state->selected_input)); in no_signal_tmds()
1192 struct adv76xx_state *state = to_state(sd); in no_lock_tmds() local
1193 const struct adv76xx_chip_info *info = state->info; in no_lock_tmds()
1205 struct adv76xx_state *state = to_state(sd); in no_lock_sspd() local
1211 if (adv76xx_has_afe(state)) in no_lock_sspd()
1243 struct adv76xx_state *state = to_state(sd); in no_lock_cp() local
1245 if (!adv76xx_has_afe(state)) in no_lock_cp()
1284 struct adv76xx_state *state = to_state(sd); in stdi2dv_timings() local
1312 state->aspect_ratio, timings)) in stdi2dv_timings()
1325 struct adv76xx_state *state = to_state(sd); in read_stdi() local
1326 const struct adv76xx_chip_info *info = state->info; in read_stdi()
1340 if (adv76xx_has_afe(state)) { in read_stdi()
1382 struct adv76xx_state *state = to_state(sd); in adv76xx_enum_dv_timings() local
1387 if (timings->pad >= state->source_pad) in adv76xx_enum_dv_timings()
1398 struct adv76xx_state *state = to_state(sd); in adv76xx_dv_timings_cap() local
1400 if (cap->pad >= state->source_pad) in adv76xx_dv_timings_cap()
1480 struct adv76xx_state *state = to_state(sd); in adv76xx_query_dv_timings() local
1481 const struct adv76xx_chip_info *info = state->info; in adv76xx_query_dv_timings()
1491 state->restart_stdi_once = true; in adv76xx_query_dv_timings()
1549 if (state->restart_stdi_once) { in adv76xx_query_dv_timings()
1558 state->restart_stdi_once = false; in adv76xx_query_dv_timings()
1564 state->restart_stdi_once = true; in adv76xx_query_dv_timings()
1591 struct adv76xx_state *state = to_state(sd); in adv76xx_s_dv_timings() local
1598 if (v4l2_match_dv_timings(&state->timings, timings, 0)) { in adv76xx_s_dv_timings()
1614 state->timings = *timings; in adv76xx_s_dv_timings()
1637 struct adv76xx_state *state = to_state(sd); in adv76xx_g_dv_timings() local
1639 *timings = state->timings; in adv76xx_g_dv_timings()
1655 struct adv76xx_state *state = to_state(sd); in enable_input() local
1660 hdmi_write_clr_set(sd, 0x00, 0x03, state->selected_input); in enable_input()
1661 state->info->set_termination(sd, true); in enable_input()
1666 __func__, state->selected_input); in enable_input()
1672 struct adv76xx_state *state = to_state(sd); in disable_input() local
1677 state->info->set_termination(sd, false); in disable_input()
1682 struct adv76xx_state *state = to_state(sd); in select_input() local
1683 const struct adv76xx_chip_info *info = state->info; in select_input()
1692 hdmi_write(sd, 0x00, state->selected_input & 0x03); in select_input()
1696 if (adv76xx_has_afe(state)) { in select_input()
1707 __func__, state->selected_input); in select_input()
1714 struct adv76xx_state *state = to_state(sd); in adv76xx_s_routing() local
1717 __func__, input, state->selected_input); in adv76xx_s_routing()
1719 if (input == state->selected_input) in adv76xx_s_routing()
1722 if (input > state->info->max_port) in adv76xx_s_routing()
1725 state->selected_input = input; in adv76xx_s_routing()
1740 struct adv76xx_state *state = to_state(sd); in adv76xx_enum_mbus_code() local
1742 if (code->index >= state->info->nformats) in adv76xx_enum_mbus_code()
1745 code->code = state->info->formats[code->index].code; in adv76xx_enum_mbus_code()
1750 static void adv76xx_fill_format(struct adv76xx_state *state, in adv76xx_fill_format() argument
1755 format->width = state->timings.bt.width; in adv76xx_fill_format()
1756 format->height = state->timings.bt.height; in adv76xx_fill_format()
1760 if (state->timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO) in adv76xx_fill_format()
1761 format->colorspace = (state->timings.bt.height <= 576) ? in adv76xx_fill_format()
1783 static unsigned int adv76xx_op_ch_sel(struct adv76xx_state *state) in adv76xx_op_ch_sel() argument
1799 return op_ch_sel[state->pdata.bus_order][state->format->op_ch_sel >> 5]; in adv76xx_op_ch_sel()
1802 static void adv76xx_setup_format(struct adv76xx_state *state) in adv76xx_setup_format() argument
1804 struct v4l2_subdev *sd = &state->sd; in adv76xx_setup_format()
1807 state->format->rgb_out ? ADV76XX_RGB_OUT : 0); in adv76xx_setup_format()
1808 io_write(sd, 0x03, state->format->op_format_sel | in adv76xx_setup_format()
1809 state->pdata.op_format_mode_sel); in adv76xx_setup_format()
1810 io_write_clr_set(sd, 0x04, 0xe0, adv76xx_op_ch_sel(state)); in adv76xx_setup_format()
1812 state->format->swap_cb_cr ? ADV76XX_OP_SWAP_CB_CR : 0); in adv76xx_setup_format()
1819 struct adv76xx_state *state = to_state(sd); in adv76xx_get_format() local
1821 if (format->pad != state->source_pad) in adv76xx_get_format()
1824 adv76xx_fill_format(state, &format->format); in adv76xx_get_format()
1832 format->format.code = state->format->code; in adv76xx_get_format()
1842 struct adv76xx_state *state = to_state(sd); in adv76xx_set_format() local
1845 if (format->pad != state->source_pad) in adv76xx_set_format()
1848 info = adv76xx_format_info(state, format->format.code); in adv76xx_set_format()
1850 info = adv76xx_format_info(state, MEDIA_BUS_FMT_YUYV8_2X8); in adv76xx_set_format()
1852 adv76xx_fill_format(state, &format->format); in adv76xx_set_format()
1861 state->format = info; in adv76xx_set_format()
1862 adv76xx_setup_format(state); in adv76xx_set_format()
1870 struct adv76xx_state *state = to_state(sd); in adv76xx_isr() local
1871 const struct adv76xx_chip_info *info = state->info; in adv76xx_isr()
1926 struct adv76xx_state *state = to_state(sd); in adv76xx_get_edid() local
1936 if (state->edid.present & (1 << edid->pad)) in adv76xx_get_edid()
1937 data = state->edid.edid; in adv76xx_get_edid()
1944 edid->blocks = data ? state->edid.blocks : 0; in adv76xx_get_edid()
1951 if (edid->start_block >= state->edid.blocks) in adv76xx_get_edid()
1954 if (edid->start_block + edid->blocks > state->edid.blocks) in adv76xx_get_edid()
1955 edid->blocks = state->edid.blocks - edid->start_block; in adv76xx_get_edid()
1992 struct adv76xx_state *state = to_state(sd); in adv76xx_set_edid() local
1993 const struct adv76xx_chip_info *info = state->info; in adv76xx_set_edid()
2006 state->edid.present &= ~(1 << edid->pad); in adv76xx_set_edid()
2007 adv76xx_set_hpd(state, state->edid.present); in adv76xx_set_edid()
2008 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2011 state->aspect_ratio.numerator = 16; in adv76xx_set_edid()
2012 state->aspect_ratio.denominator = 9; in adv76xx_set_edid()
2014 if (!state->edid.present) in adv76xx_set_edid()
2015 state->edid.blocks = 0; in adv76xx_set_edid()
2018 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2027 __func__, edid->pad, state->edid.present); in adv76xx_set_edid()
2030 cancel_delayed_work_sync(&state->delayed_work_enable_hotplug); in adv76xx_set_edid()
2031 adv76xx_set_hpd(state, 0); in adv76xx_set_edid()
2040 state->spa_port_a[0] = edid->edid[spa_loc]; in adv76xx_set_edid()
2041 state->spa_port_a[1] = edid->edid[spa_loc + 1]; in adv76xx_set_edid()
2067 edid->edid[spa_loc] = state->spa_port_a[0]; in adv76xx_set_edid()
2068 edid->edid[spa_loc + 1] = state->spa_port_a[1]; in adv76xx_set_edid()
2070 memcpy(state->edid.edid, edid->edid, 128 * edid->blocks); in adv76xx_set_edid()
2071 state->edid.blocks = edid->blocks; in adv76xx_set_edid()
2072 state->aspect_ratio = v4l2_calc_aspect_ratio(edid->edid[0x15], in adv76xx_set_edid()
2074 state->edid.present |= 1 << edid->pad; in adv76xx_set_edid()
2076 err = edid_write_block(sd, 128 * edid->blocks, state->edid.edid); in adv76xx_set_edid()
2084 rep_write_clr_set(sd, info->edid_enable_reg, 0x0f, state->edid.present); in adv76xx_set_edid()
2087 if (rep_read(sd, info->edid_status_reg) & state->edid.present) in adv76xx_set_edid()
2092 v4l2_err(sd, "error enabling edid (0x%x)\n", state->edid.present); in adv76xx_set_edid()
2097 queue_delayed_work(state->work_queues, in adv76xx_set_edid()
2098 &state->delayed_work_enable_hotplug, HZ / 10); in adv76xx_set_edid()
2148 struct adv76xx_state *state = to_state(sd); in adv76xx_log_status() local
2149 const struct adv76xx_chip_info *info = state->info; in adv76xx_log_status()
2227 &state->timings, true); in adv76xx_log_status()
2234 rgb_quantization_range_txt[state->rgb_quantization_range]); in adv76xx_log_status()
2363 struct adv76xx_state *state = to_state(sd); in adv76xx_core_init() local
2364 const struct adv76xx_chip_info *info = state->info; in adv76xx_core_init()
2365 struct adv76xx_platform_data *pdata = &state->pdata; in adv76xx_core_init()
2374 pdata->default_input < state->source_pad) { in adv76xx_core_init()
2375 state->selected_input = pdata->default_input; in adv76xx_core_init()
2393 adv76xx_setup_format(state); in adv76xx_core_init()
2423 if (adv76xx_has_afe(state)) { in adv76xx_core_init()
2448 static void adv76xx_unregister_clients(struct adv76xx_state *state) in adv76xx_unregister_clients() argument
2452 for (i = 1; i < ARRAY_SIZE(state->i2c_clients); ++i) { in adv76xx_unregister_clients()
2453 if (state->i2c_clients[i]) in adv76xx_unregister_clients()
2454 i2c_unregister_device(state->i2c_clients[i]); in adv76xx_unregister_clients()
2614 static int adv76xx_parse_dt(struct adv76xx_state *state) in adv76xx_parse_dt() argument
2621 np = state->i2c_clients[ADV76XX_PAGE_IO]->dev.of_node; in adv76xx_parse_dt()
2634 state->pdata.inv_hs_pol = 1; in adv76xx_parse_dt()
2637 state->pdata.inv_vs_pol = 1; in adv76xx_parse_dt()
2640 state->pdata.inv_llc_pol = 1; in adv76xx_parse_dt()
2643 state->pdata.insert_av_codes = 1; in adv76xx_parse_dt()
2644 state->pdata.op_656_range = 1; in adv76xx_parse_dt()
2648 state->pdata.int1_config = ADV76XX_INT1_CONFIG_DISABLED; in adv76xx_parse_dt()
2651 state->pdata.i2c_addresses[ADV7604_PAGE_AVLINK] = 0x42; in adv76xx_parse_dt()
2652 state->pdata.i2c_addresses[ADV76XX_PAGE_CEC] = 0x40; in adv76xx_parse_dt()
2653 state->pdata.i2c_addresses[ADV76XX_PAGE_INFOFRAME] = 0x3e; in adv76xx_parse_dt()
2654 state->pdata.i2c_addresses[ADV7604_PAGE_ESDP] = 0x38; in adv76xx_parse_dt()
2655 state->pdata.i2c_addresses[ADV7604_PAGE_DPP] = 0x3c; in adv76xx_parse_dt()
2656 state->pdata.i2c_addresses[ADV76XX_PAGE_AFE] = 0x26; in adv76xx_parse_dt()
2657 state->pdata.i2c_addresses[ADV76XX_PAGE_REP] = 0x32; in adv76xx_parse_dt()
2658 state->pdata.i2c_addresses[ADV76XX_PAGE_EDID] = 0x36; in adv76xx_parse_dt()
2659 state->pdata.i2c_addresses[ADV76XX_PAGE_HDMI] = 0x34; in adv76xx_parse_dt()
2660 state->pdata.i2c_addresses[ADV76XX_PAGE_TEST] = 0x30; in adv76xx_parse_dt()
2661 state->pdata.i2c_addresses[ADV76XX_PAGE_CP] = 0x22; in adv76xx_parse_dt()
2662 state->pdata.i2c_addresses[ADV7604_PAGE_VDP] = 0x24; in adv76xx_parse_dt()
2665 state->pdata.disable_pwrdnb = 0; in adv76xx_parse_dt()
2666 state->pdata.disable_cable_det_rst = 0; in adv76xx_parse_dt()
2667 state->pdata.default_input = -1; in adv76xx_parse_dt()
2668 state->pdata.blank_data = 1; in adv76xx_parse_dt()
2669 state->pdata.alt_data_sat = 1; in adv76xx_parse_dt()
2670 state->pdata.op_format_mode_sel = ADV7604_OP_FORMAT_MODE0; in adv76xx_parse_dt()
2671 state->pdata.bus_order = ADV7604_BUS_ORDER_RGB; in adv76xx_parse_dt()
2681 struct adv76xx_state *state; in adv76xx_probe() local
2694 state = devm_kzalloc(&client->dev, sizeof(*state), GFP_KERNEL); in adv76xx_probe()
2695 if (!state) { in adv76xx_probe()
2700 state->i2c_clients[ADV76XX_PAGE_IO] = client; in adv76xx_probe()
2703 state->restart_stdi_once = true; in adv76xx_probe()
2704 state->selected_input = ~0; in adv76xx_probe()
2710 state->info = oid->data; in adv76xx_probe()
2712 err = adv76xx_parse_dt(state); in adv76xx_probe()
2720 state->info = (const struct adv76xx_chip_info *)id->driver_data; in adv76xx_probe()
2721 state->pdata = *pdata; in adv76xx_probe()
2728 for (i = 0; i < state->info->num_dv_ports; ++i) { in adv76xx_probe()
2729 state->hpd_gpio[i] = in adv76xx_probe()
2732 if (IS_ERR(state->hpd_gpio[i])) in adv76xx_probe()
2733 return PTR_ERR(state->hpd_gpio[i]); in adv76xx_probe()
2735 if (state->hpd_gpio[i]) in adv76xx_probe()
2739 state->timings = cea640x480; in adv76xx_probe()
2740 state->format = adv76xx_format_info(state, MEDIA_BUS_FMT_YUYV8_2X8); in adv76xx_probe()
2742 sd = &state->sd; in adv76xx_probe()
2754 if (state->info->type == ADV7604) { in adv76xx_probe()
2772 hdl = &state->hdl; in adv76xx_probe()
2773 v4l2_ctrl_handler_init(hdl, adv76xx_has_afe(state) ? 9 : 8); in adv76xx_probe()
2785 state->detect_tx_5v_ctrl = v4l2_ctrl_new_std(hdl, NULL, in adv76xx_probe()
2787 (1 << state->info->num_dv_ports) - 1, 0, 0); in adv76xx_probe()
2788 state->rgb_quantization_range_ctrl = in adv76xx_probe()
2794 if (adv76xx_has_afe(state)) in adv76xx_probe()
2795 state->analog_sampling_phase_ctrl = in adv76xx_probe()
2797 state->free_run_color_manual_ctrl = in adv76xx_probe()
2799 state->free_run_color_ctrl = in adv76xx_probe()
2807 state->detect_tx_5v_ctrl->is_private = true; in adv76xx_probe()
2808 state->rgb_quantization_range_ctrl->is_private = true; in adv76xx_probe()
2809 if (adv76xx_has_afe(state)) in adv76xx_probe()
2810 state->analog_sampling_phase_ctrl->is_private = true; in adv76xx_probe()
2811 state->free_run_color_manual_ctrl->is_private = true; in adv76xx_probe()
2812 state->free_run_color_ctrl->is_private = true; in adv76xx_probe()
2820 if (!(BIT(i) & state->info->page_mask)) in adv76xx_probe()
2823 state->i2c_clients[i] = in adv76xx_probe()
2824 adv76xx_dummy_client(sd, state->pdata.i2c_addresses[i], in adv76xx_probe()
2826 if (state->i2c_clients[i] == NULL) { in adv76xx_probe()
2834 state->work_queues = create_singlethread_workqueue(client->name); in adv76xx_probe()
2835 if (!state->work_queues) { in adv76xx_probe()
2841 INIT_DELAYED_WORK(&state->delayed_work_enable_hotplug, in adv76xx_probe()
2844 state->source_pad = state->info->num_dv_ports in adv76xx_probe()
2845 + (state->info->has_afe ? 2 : 0); in adv76xx_probe()
2846 for (i = 0; i < state->source_pad; ++i) in adv76xx_probe()
2847 state->pads[i].flags = MEDIA_PAD_FL_SINK; in adv76xx_probe()
2848 state->pads[state->source_pad].flags = MEDIA_PAD_FL_SOURCE; in adv76xx_probe()
2850 err = media_entity_init(&sd->entity, state->source_pad + 1, in adv76xx_probe()
2851 state->pads, 0); in adv76xx_probe()
2870 cancel_delayed_work(&state->delayed_work_enable_hotplug); in adv76xx_probe()
2871 destroy_workqueue(state->work_queues); in adv76xx_probe()
2873 adv76xx_unregister_clients(state); in adv76xx_probe()
2884 struct adv76xx_state *state = to_state(sd); in adv76xx_remove() local
2886 cancel_delayed_work(&state->delayed_work_enable_hotplug); in adv76xx_remove()
2887 destroy_workqueue(state->work_queues); in adv76xx_remove()