Lines Matching refs:state

230 	struct adv7511_state *state = get_adv7511_state(sd);  in adv7511_edid_rd()  local
237 err = adv_smbus_read_i2c_block_data(state->i2c_edid, i, in adv7511_edid_rd()
245 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_pktmem_rd() local
247 return adv_smbus_read_byte_data(state->i2c_pktmem, reg); in adv7511_pktmem_rd()
252 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_pktmem_wr() local
257 ret = i2c_smbus_write_byte_data(state->i2c_pktmem, reg, val); in adv7511_pktmem_wr()
346 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_set_IT_content_AVI_InfoFrame() local
347 if (state->dv_timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO) { in adv7511_set_IT_content_AVI_InfoFrame()
364 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_set_rgb_quantization_mode() local
366 if (state->dv_timings.bt.flags & V4L2_DV_FL_IS_CE_VIDEO) { in adv7511_set_rgb_quantization_mode()
392 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_s_ctrl() local
396 if (state->hdmi_mode_ctrl == ctrl) { in adv7511_s_ctrl()
401 if (state->rgb_quantization_range_ctrl == ctrl) in adv7511_s_ctrl()
525 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_log_status() local
526 struct adv7511_state_edid *edid = &state->edid; in adv7511_log_status()
550 v4l2_info(sd, "power %s\n", state->power_on ? "on" : "off"); in adv7511_log_status()
563 errors[adv7511_rd(sd, 0xc8) >> 4], state->edid_detect_counter, in adv7511_log_status()
590 if (state->dv_timings.type == V4L2_DV_BT_656_1120) in adv7511_log_status()
592 &state->dv_timings, false); in adv7511_log_status()
595 v4l2_info(sd, "i2c edid addr: 0x%x\n", state->i2c_edid_addr); in adv7511_log_status()
596 v4l2_info(sd, "i2c cec addr: 0x%x\n", state->i2c_cec_addr); in adv7511_log_status()
597 v4l2_info(sd, "i2c pktmem addr: 0x%x\n", state->i2c_pktmem_addr); in adv7511_log_status()
604 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_s_power() local
610 state->power_on = on; in adv7511_s_power()
646 adv7511_wr(sd, 0x43, state->i2c_edid_addr); in adv7511_s_power()
647 adv7511_wr(sd, 0x45, state->i2c_pktmem_addr); in adv7511_s_power()
729 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_s_stream() local
737 state->have_monitor = false; in adv7511_s_stream()
745 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_s_dv_timings() local
760 state->dv_timings = *timings; in adv7511_s_dv_timings()
763 adv7511_set_rgb_quantization_mode(sd, state->rgb_quantization_range_ctrl); in adv7511_s_dv_timings()
774 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_g_dv_timings() local
781 *timings = state->dv_timings; in adv7511_g_dv_timings()
894 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_get_edid() local
902 edid->blocks = state->edid.segments * 2; in adv7511_get_edid()
906 if (state->edid.segments == 0) in adv7511_get_edid()
909 if (edid->start_block >= state->edid.segments * 2) in adv7511_get_edid()
912 if (edid->start_block + edid->blocks > state->edid.segments * 2) in adv7511_get_edid()
913 edid->blocks = state->edid.segments * 2 - edid->start_block; in adv7511_get_edid()
915 memcpy(edid->edid, &state->edid.data[edid->start_block * 128], in adv7511_get_edid()
944 static void adv7511_fill_format(struct adv7511_state *state, in adv7511_fill_format() argument
949 format->width = state->dv_timings.bt.width; in adv7511_fill_format()
950 format->height = state->dv_timings.bt.height; in adv7511_fill_format()
958 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_get_fmt() local
963 adv7511_fill_format(state, &format->format); in adv7511_get_fmt()
975 format->format.code = state->fmt_code; in adv7511_get_fmt()
976 format->format.colorspace = state->colorspace; in adv7511_get_fmt()
977 format->format.ycbcr_enc = state->ycbcr_enc; in adv7511_get_fmt()
978 format->format.quantization = state->quantization; in adv7511_get_fmt()
979 format->format.xfer_func = state->xfer_func; in adv7511_get_fmt()
989 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_set_fmt() local
1017 adv7511_fill_format(state, &format->format); in adv7511_set_fmt()
1047 state->fmt_code = format->format.code; in adv7511_set_fmt()
1048 state->colorspace = format->format.colorspace; in adv7511_set_fmt()
1049 state->ycbcr_enc = format->format.ycbcr_enc; in adv7511_set_fmt()
1050 state->quantization = format->format.quantization; in adv7511_set_fmt()
1051 state->xfer_func = format->format.xfer_func; in adv7511_set_fmt()
1166 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_notify_no_edid() local
1173 v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x0); in adv7511_notify_no_edid()
1179 struct adv7511_state *state = container_of(dwork, struct adv7511_state, edid_handler); in adv7511_edid_handler() local
1180 struct v4l2_subdev *sd = &state->sd; in adv7511_edid_handler()
1193 if (state->edid.read_retries) { in adv7511_edid_handler()
1194 state->edid.read_retries--; in adv7511_edid_handler()
1196 state->have_monitor = false; in adv7511_edid_handler()
1199 queue_delayed_work(state->work_queue, &state->edid_handler, EDID_DELAY); in adv7511_edid_handler()
1221 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_setup() local
1249 v4l2_ctrl_handler_setup(&state->hdl); in adv7511_setup()
1255 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_notify_monitor_detect() local
1257 mdt.present = state->have_monitor; in adv7511_notify_monitor_detect()
1263 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_check_monitor_present_status() local
1274 v4l2_ctrl_s_ctrl(state->hotplug_ctrl, adv7511_have_hotplug(sd) ? 0x1 : 0x0); in adv7511_check_monitor_present_status()
1275 v4l2_ctrl_s_ctrl(state->rx_sense_ctrl, adv7511_have_rx_sense(sd) ? 0x1 : 0x0); in adv7511_check_monitor_present_status()
1277 …if ((status & MASK_ADV7511_HPD_DETECT) && ((status & MASK_ADV7511_MSEN_DETECT) || state->edid.segm… in adv7511_check_monitor_present_status()
1279 if (!state->have_monitor) { in adv7511_check_monitor_present_status()
1281 state->have_monitor = true; in adv7511_check_monitor_present_status()
1289 state->edid.read_retries = EDID_MAX_RETRIES; in adv7511_check_monitor_present_status()
1290 queue_delayed_work(state->work_queue, &state->edid_handler, EDID_DELAY); in adv7511_check_monitor_present_status()
1294 state->edid.read_retries = EDID_MAX_RETRIES; in adv7511_check_monitor_present_status()
1295 queue_delayed_work(state->work_queue, &state->edid_handler, EDID_DELAY); in adv7511_check_monitor_present_status()
1298 if (state->have_monitor) { in adv7511_check_monitor_present_status()
1300 state->have_monitor = false; in adv7511_check_monitor_present_status()
1304 memset(&state->edid, 0, sizeof(struct adv7511_state_edid)); in adv7511_check_monitor_present_status()
1321 struct adv7511_state *state = get_adv7511_state(sd); in edid_verify_crc() local
1322 u32 blocks = state->edid.blocks; in edid_verify_crc()
1323 u8 *data = state->edid.data; in edid_verify_crc()
1337 struct adv7511_state *state = get_adv7511_state(sd); in edid_verify_header() local
1338 u8 *data = state->edid.data; in edid_verify_header()
1347 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_check_edid_status() local
1351 __func__, EDID_MAX_RETRIES - state->edid.read_retries); in adv7511_check_edid_status()
1353 if (state->edid.complete) in adv7511_check_edid_status()
1365 adv7511_edid_rd(sd, 256, &state->edid.data[segment * 256]); in adv7511_check_edid_status()
1366 adv7511_dbg_dump_edid(2, debug, sd, segment, &state->edid.data[segment * 256]); in adv7511_check_edid_status()
1368 state->edid.blocks = state->edid.data[0x7e] + 1; in adv7511_check_edid_status()
1369 v4l2_dbg(1, debug, sd, "%s: %d blocks in total\n", __func__, state->edid.blocks); in adv7511_check_edid_status()
1375 state->have_monitor = false; in adv7511_check_edid_status()
1381 state->edid.segments = segment + 1; in adv7511_check_edid_status()
1382 v4l2_ctrl_s_ctrl(state->have_edid0_ctrl, 0x1); in adv7511_check_edid_status()
1383 if (((state->edid.data[0x7e] >> 1) + 1) > state->edid.segments) { in adv7511_check_edid_status()
1385 v4l2_dbg(1, debug, sd, "%s: request segment %d\n", __func__, state->edid.segments); in adv7511_check_edid_status()
1387 adv7511_wr(sd, 0xc4, state->edid.segments); in adv7511_check_edid_status()
1388 state->edid.read_retries = EDID_MAX_RETRIES; in adv7511_check_edid_status()
1389 queue_delayed_work(state->work_queue, &state->edid_handler, EDID_DELAY); in adv7511_check_edid_status()
1393 v4l2_dbg(1, debug, sd, "%s: edid complete with %d segment(s)\n", __func__, state->edid.segments); in adv7511_check_edid_status()
1394 state->edid.complete = true; in adv7511_check_edid_status()
1401 state->edid_detect_counter++; in adv7511_check_edid_status()
1413 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_init_setup() local
1414 struct adv7511_state_edid *edid = &state->edid; in adv7511_init_setup()
1427 state->have_monitor = false; in adv7511_init_setup()
1435 struct adv7511_state *state; in adv7511_probe() local
1446 state = devm_kzalloc(&client->dev, sizeof(struct adv7511_state), GFP_KERNEL); in adv7511_probe()
1447 if (!state) in adv7511_probe()
1455 memcpy(&state->pdata, pdata, sizeof(state->pdata)); in adv7511_probe()
1456 state->fmt_code = MEDIA_BUS_FMT_RGB888_1X24; in adv7511_probe()
1457 state->colorspace = V4L2_COLORSPACE_SRGB; in adv7511_probe()
1459 sd = &state->sd; in adv7511_probe()
1466 hdl = &state->hdl; in adv7511_probe()
1469 state->hdmi_mode_ctrl = v4l2_ctrl_new_std_menu(hdl, &adv7511_ctrl_ops, in adv7511_probe()
1472 state->hotplug_ctrl = v4l2_ctrl_new_std(hdl, NULL, in adv7511_probe()
1474 state->rx_sense_ctrl = v4l2_ctrl_new_std(hdl, NULL, in adv7511_probe()
1476 state->have_edid0_ctrl = v4l2_ctrl_new_std(hdl, NULL, in adv7511_probe()
1478 state->rgb_quantization_range_ctrl = in adv7511_probe()
1487 state->hdmi_mode_ctrl->is_private = true; in adv7511_probe()
1488 state->hotplug_ctrl->is_private = true; in adv7511_probe()
1489 state->rx_sense_ctrl->is_private = true; in adv7511_probe()
1490 state->have_edid0_ctrl->is_private = true; in adv7511_probe()
1491 state->rgb_quantization_range_ctrl->is_private = true; in adv7511_probe()
1493 state->pad.flags = MEDIA_PAD_FL_SINK; in adv7511_probe()
1494 err = media_entity_init(&sd->entity, 1, &state->pad, 0); in adv7511_probe()
1499 state->i2c_edid_addr = state->pdata.i2c_edid << 1; in adv7511_probe()
1500 state->i2c_cec_addr = state->pdata.i2c_cec << 1; in adv7511_probe()
1501 state->i2c_pktmem_addr = state->pdata.i2c_pktmem << 1; in adv7511_probe()
1503 state->chip_revision = adv7511_rd(sd, 0x0); in adv7511_probe()
1512 state->i2c_edid = i2c_new_dummy(client->adapter, state->i2c_edid_addr >> 1); in adv7511_probe()
1513 if (state->i2c_edid == NULL) { in adv7511_probe()
1519 state->i2c_pktmem = i2c_new_dummy(client->adapter, state->i2c_pktmem_addr >> 1); in adv7511_probe()
1520 if (state->i2c_pktmem == NULL) { in adv7511_probe()
1527 state->work_queue = create_singlethread_workqueue(sd->name); in adv7511_probe()
1528 if (state->work_queue == NULL) { in adv7511_probe()
1534 INIT_DELAYED_WORK(&state->edid_handler, adv7511_edid_handler); in adv7511_probe()
1545 i2c_unregister_device(state->i2c_pktmem); in adv7511_probe()
1547 i2c_unregister_device(state->i2c_edid); in adv7511_probe()
1551 v4l2_ctrl_handler_free(&state->hdl); in adv7511_probe()
1560 struct adv7511_state *state = get_adv7511_state(sd); in adv7511_remove() local
1562 state->chip_revision = -1; in adv7511_remove()
1568 cancel_delayed_work(&state->edid_handler); in adv7511_remove()
1569 i2c_unregister_device(state->i2c_edid); in adv7511_remove()
1570 i2c_unregister_device(state->i2c_pktmem); in adv7511_remove()
1571 destroy_workqueue(state->work_queue); in adv7511_remove()