Lines Matching +full:native +full:- +full:mode

1 // SPDX-License-Identifier: GPL-2.0-only
156 if (hdr->cid & PS3AV_EVENT_CMD_MASK) { in ps3av_parse_event_packet()
157 table = ps3av_search_cmd_table(hdr->cid, PS3AV_EVENT_CMD_MASK); in ps3av_parse_event_packet()
159 dev_dbg(&ps3av->dev->core, in ps3av_parse_event_packet()
161 hdr->cid, ps3av_event_get_port_id(hdr->cid), in ps3av_parse_event_packet()
162 hdr->size); in ps3av_parse_event_packet()
166 __func__, hdr->cid, hdr->size); in ps3av_parse_event_packet()
179 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3av_vuart_write()
181 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3av_vuart_write()
191 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3av_vuart_read()
192 timeout = (timeout + POLLING_INTERVAL - 1) / POLLING_INTERVAL; in ps3av_vuart_read()
197 if (error != -EAGAIN) { in ps3av_vuart_read()
204 return -EWOULDBLOCK; in ps3av_vuart_read()
216 return -ENODEV; in ps3av_send_cmd_pkt()
219 res = ps3av_vuart_write(ps3av->dev, send_buf, write_len); in ps3av_send_cmd_pkt()
221 dev_warn(&ps3av->dev->core, in ps3av_send_cmd_pkt()
228 cmd = send_buf->cid; in ps3av_send_cmd_pkt()
231 res = ps3av_vuart_read(ps3av->dev, recv_buf, PS3AV_HDR_SIZE, in ps3av_send_cmd_pkt()
234 dev_warn(&ps3av->dev->core, in ps3av_send_cmd_pkt()
241 res = ps3av_vuart_read(ps3av->dev, &recv_buf->cid, in ps3av_send_cmd_pkt()
242 recv_buf->size, timeout); in ps3av_send_cmd_pkt()
244 dev_warn(&ps3av->dev->core, in ps3av_send_cmd_pkt()
254 if ((cmd | PS3AV_REPLY_BIT) != recv_buf->cid) { in ps3av_send_cmd_pkt()
255 dev_warn(&ps3av->dev->core, "%s:%d: reply err: %x\n", __func__, in ps3av_send_cmd_pkt()
256 __LINE__, recv_buf->cid); in ps3av_send_cmd_pkt()
257 return -EINVAL; in ps3av_send_cmd_pkt()
269 if (recv_buf->version != PS3AV_VERSION) { in ps3av_process_reply_packet()
270 dev_dbg(&ps3av->dev->core, "reply_packet invalid version:%x\n", in ps3av_process_reply_packet()
271 recv_buf->version); in ps3av_process_reply_packet()
272 return -EFAULT; in ps3av_process_reply_packet()
274 return_len = recv_buf->size + PS3AV_HDR_SIZE; in ps3av_process_reply_packet()
283 hdr->version = PS3AV_VERSION; in ps3av_set_hdr()
284 hdr->size = size - PS3AV_HDR_SIZE; in ps3av_set_hdr()
285 hdr->cid = cid; in ps3av_set_hdr()
296 mutex_lock(&ps3av->mutex); in ps3av_do_pkt()
308 res = ps3av_send_cmd_pkt(buf, &ps3av->recv_buf.reply_hdr, send_len, in ps3av_do_pkt()
318 res = ps3av_process_reply_packet(buf, &ps3av->recv_buf.reply_hdr, in ps3av_do_pkt()
326 mutex_unlock(&ps3av->mutex); in ps3av_do_pkt()
330 mutex_unlock(&ps3av->mutex); in ps3av_do_pkt()
339 num_of_av_port = ps3av->av_hw_conf.num_of_hdmi + in ps3av_set_av_video_mute()
340 ps3av->av_hw_conf.num_of_avmulti; in ps3av_set_av_video_mute()
343 res = ps3av_cmd_av_video_mute(1, &ps3av->av_port[i], mute); in ps3av_set_av_video_mute()
345 return -1; in ps3av_set_av_video_mute()
355 num_of_hdmi_port = ps3av->av_hw_conf.num_of_hdmi; in ps3av_set_video_disable_sig()
356 num_of_av_port = ps3av->av_hw_conf.num_of_hdmi + in ps3av_set_video_disable_sig()
357 ps3av->av_hw_conf.num_of_avmulti; in ps3av_set_video_disable_sig()
361 res = ps3av_cmd_av_tv_mute(ps3av->av_port[i], in ps3av_set_video_disable_sig()
364 return -1; in ps3av_set_video_disable_sig()
370 res = ps3av_cmd_av_video_disable_sig(ps3av->av_port[i]); in ps3av_set_video_disable_sig()
372 return -1; in ps3av_set_video_disable_sig()
374 res = ps3av_cmd_av_tv_mute(ps3av->av_port[i], in ps3av_set_video_disable_sig()
377 return -1; in ps3av_set_video_disable_sig()
389 num_of_av_port = ps3av->av_hw_conf.num_of_hdmi + in ps3av_set_audio_mute()
390 ps3av->av_hw_conf.num_of_avmulti; in ps3av_set_audio_mute()
391 num_of_opt_port = ps3av->av_hw_conf.num_of_spdif; in ps3av_set_audio_mute()
394 res = ps3av_cmd_av_audio_mute(1, &ps3av->av_port[i], mute); in ps3av_set_audio_mute()
396 return -1; in ps3av_set_audio_mute()
399 res = ps3av_cmd_audio_mute(1, &ps3av->opt_port[i], mute); in ps3av_set_audio_mute()
401 return -1; in ps3av_set_audio_mute()
414 num_of_audio = ps3av->av_hw_conf.num_of_hdmi + in ps3av_set_audio_mode()
415 ps3av->av_hw_conf.num_of_avmulti + in ps3av_set_audio_mode()
416 ps3av->av_hw_conf.num_of_spdif; in ps3av_set_audio_mode()
421 avb_param.num_of_av_audio_pkt = ps3av->av_hw_conf.num_of_hdmi; in ps3av_set_audio_mode()
423 vid = video_mode_table[ps3av->ps3av_mode].vid; in ps3av_set_audio_mode()
429 res = ps3av_cmd_audio_active(0, ps3av->audio_port); in ps3av_set_audio_mode()
431 dev_dbg(&ps3av->dev->core, in ps3av_set_audio_mode()
436 ps3av_cmd_set_audio_mode(&audio_mode, ps3av->av_port[i], ch, in ps3av_set_audio_mode()
438 if (i < ps3av->av_hw_conf.num_of_hdmi) { in ps3av_set_audio_mode()
441 ps3av->av_port[i], in ps3av_set_audio_mode()
447 dev_dbg(&ps3av->dev->core, in ps3av_set_audio_mode()
455 dev_dbg(&ps3av->dev->core, "ps3av_cmd_avb_param failed\n"); in ps3av_set_audio_mode()
461 res = ps3av_cmd_audio_active(1, ps3av->audio_port); in ps3av_set_audio_mode()
463 dev_dbg(&ps3av->dev->core, in ps3av_set_audio_mode()
475 /* wake up ps3avd to do the actual video mode setting */ in ps3av_set_videomode()
476 schedule_work(&ps3av->work); in ps3av_set_videomode()
493 avb_param.num_of_av_video_pkt = ps3av->av_hw_conf.num_of_hdmi + in ps3av_set_videomode_packet()
494 ps3av->av_hw_conf.num_of_avmulti; in ps3av_set_videomode_packet()
500 ps3av->head[i], video_mode->vid, in ps3av_set_videomode_packet()
501 video_mode->fmt, id); in ps3av_set_videomode_packet()
507 av_video_cs = video_mode->cs; in ps3av_set_videomode_packet()
509 if (ps3av->av_port[i] == PS3AV_CMD_AVPORT_HDMI_0 || in ps3av_set_videomode_packet()
510 ps3av->av_port[i] == PS3AV_CMD_AVPORT_HDMI_1) in ps3av_set_videomode_packet()
514 ps3av->av_port[i], in ps3av_set_videomode_packet()
515 video_mode->vid, av_video_cs, in ps3av_set_videomode_packet()
516 video_mode->aspect, id); in ps3av_set_videomode_packet()
526 dev_dbg(&ps3av->dev->core, "ps3av_cmd_avb_param failed\n"); in ps3av_set_videomode_packet()
538 * AV backend needs non-VESA mode setting at least one time in ps3av_set_videomode_cont()
539 * when VESA mode is used. in ps3av_set_videomode_cont()
542 /* vesa mode */ in ps3av_set_videomode_cont()
551 dev_dbg(&ps3av->dev->core, "Not supported\n"); in ps3av_set_videomode_cont()
553 dev_dbg(&ps3av->dev->core, in ps3av_set_videomode_cont()
558 dev_dbg(&ps3av->dev->core, in ps3av_set_videomode_cont()
571 ps3av_set_videomode_cont(ps3av->ps3av_mode, ps3av->ps3av_mode_old); in ps3avd()
572 complete(&ps3av->done); in ps3avd()
633 /* check native resolution */ in ps3av_hdmi_get_id()
634 id = ps3av_resbit2id(info->res_50.native, info->res_60.native, in ps3av_hdmi_get_id()
635 info->res_vesa.native); in ps3av_hdmi_get_id()
637 pr_debug("%s: Using native mode %d\n", __func__, id); in ps3av_hdmi_get_id()
642 id = ps3av_resbit2id(info->res_50.res_bits, info->res_60.res_bits, in ps3av_hdmi_get_id()
643 info->res_vesa.res_bits); in ps3av_hdmi_get_id()
645 pr_debug("%s: Using supported mode %d\n", __func__, id); in ps3av_hdmi_get_id()
649 if (ps3av->region & PS3AV_REGION_60) in ps3av_hdmi_get_id()
653 pr_debug("%s: Using default mode %d\n", __func__, id); in ps3av_hdmi_get_id()
660 const struct ps3av_info_monitor *info = &monitor_info->info; in ps3av_monitor_info_dump()
661 const struct ps3av_info_audio *audio = info->audio; in ps3av_monitor_info_dump()
662 char id[sizeof(info->monitor_id)*3+1]; in ps3av_monitor_info_dump()
665 pr_debug("Monitor Info: size %u\n", monitor_info->send_hdr.size); in ps3av_monitor_info_dump()
667 pr_debug("avport: %02x\n", info->avport); in ps3av_monitor_info_dump()
668 for (i = 0; i < sizeof(info->monitor_id); i++) in ps3av_monitor_info_dump()
669 sprintf(&id[i*3], " %02x", info->monitor_id[i]); in ps3av_monitor_info_dump()
671 pr_debug("monitor_type: %02x\n", info->monitor_type); in ps3av_monitor_info_dump()
672 pr_debug("monitor_name: %.*s\n", (int)sizeof(info->monitor_name), in ps3av_monitor_info_dump()
673 info->monitor_name); in ps3av_monitor_info_dump()
676 pr_debug("resolution_60: bits: %08x native: %08x\n", in ps3av_monitor_info_dump()
677 info->res_60.res_bits, info->res_60.native); in ps3av_monitor_info_dump()
678 pr_debug("resolution_50: bits: %08x native: %08x\n", in ps3av_monitor_info_dump()
679 info->res_50.res_bits, info->res_50.native); in ps3av_monitor_info_dump()
680 pr_debug("resolution_other: bits: %08x native: %08x\n", in ps3av_monitor_info_dump()
681 info->res_other.res_bits, info->res_other.native); in ps3av_monitor_info_dump()
682 pr_debug("resolution_vesa: bits: %08x native: %08x\n", in ps3av_monitor_info_dump()
683 info->res_vesa.res_bits, info->res_vesa.native); in ps3av_monitor_info_dump()
686 pr_debug("color space rgb: %02x\n", info->cs.rgb); in ps3av_monitor_info_dump()
687 pr_debug("color space yuv444: %02x\n", info->cs.yuv444); in ps3av_monitor_info_dump()
688 pr_debug("color space yuv422: %02x\n", info->cs.yuv422); in ps3av_monitor_info_dump()
691 pr_debug("color info red: X %04x Y %04x\n", info->color.red_x, in ps3av_monitor_info_dump()
692 info->color.red_y); in ps3av_monitor_info_dump()
693 pr_debug("color info green: X %04x Y %04x\n", info->color.green_x, in ps3av_monitor_info_dump()
694 info->color.green_y); in ps3av_monitor_info_dump()
695 pr_debug("color info blue: X %04x Y %04x\n", info->color.blue_x, in ps3av_monitor_info_dump()
696 info->color.blue_y); in ps3av_monitor_info_dump()
697 pr_debug("color info white: X %04x Y %04x\n", info->color.white_x, in ps3av_monitor_info_dump()
698 info->color.white_y); in ps3av_monitor_info_dump()
699 pr_debug("color info gamma: %08x\n", info->color.gamma); in ps3av_monitor_info_dump()
702 pr_debug("supported_AI: %02x\n", info->supported_ai); in ps3av_monitor_info_dump()
703 pr_debug("speaker_info: %02x\n", info->speaker_info); in ps3av_monitor_info_dump()
704 pr_debug("num of audio: %02x\n", info->num_of_audio_block); in ps3av_monitor_info_dump()
707 for (i = 0; i < info->num_of_audio_block; i++) { in ps3av_monitor_info_dump()
710 i, audio->type, audio->max_num_of_ch, audio->fs, in ps3av_monitor_info_dump()
711 audio->sbit); in ps3av_monitor_info_dump()
740 if (!strncmp(info->monitor_name, quirk->monitor_name, in ps3av_fixup_monitor_info()
741 sizeof(info->monitor_name))) { in ps3av_fixup_monitor_info()
743 quirk->monitor_name); in ps3av_fixup_monitor_info()
744 info->res_60.res_bits &= ~quirk->clear_60; in ps3av_fixup_monitor_info()
745 info->res_60.native &= ~quirk->clear_60; in ps3av_fixup_monitor_info()
757 /* get mode id for hdmi */ in ps3av_auto_videomode()
758 for (i = 0; i < av_hw_conf->num_of_hdmi && !id; i++) { in ps3av_auto_videomode()
763 return -1; in ps3av_auto_videomode()
770 switch (info->monitor_type) { in ps3av_auto_videomode()
782 if (ps3av->region & PS3AV_REGION_60) in ps3av_auto_videomode()
786 if (ps3av->region & PS3AV_REGION_RGB) in ps3av_auto_videomode()
788 pr_debug("%s: Using avmulti mode %d\n", __func__, id); in ps3av_auto_videomode()
800 res = ps3av_cmd_av_get_hw_conf(&ps3av->av_hw_conf); in ps3av_get_hw_conf()
802 return -1; in ps3av_get_hw_conf()
804 hw_conf = &ps3av->av_hw_conf; in ps3av_get_hw_conf()
805 pr_debug("av_h_conf: num of hdmi: %u\n", hw_conf->num_of_hdmi); in ps3av_get_hw_conf()
806 pr_debug("av_h_conf: num of avmulti: %u\n", hw_conf->num_of_avmulti); in ps3av_get_hw_conf()
807 pr_debug("av_h_conf: num of spdif: %u\n", hw_conf->num_of_spdif); in ps3av_get_hw_conf()
810 ps3av->head[i] = PS3AV_CMD_VIDEO_HEAD_A + i; in ps3av_get_hw_conf()
812 ps3av->opt_port[i] = PS3AV_CMD_AVPORT_SPDIF_0 + i; in ps3av_get_hw_conf()
813 for (i = 0; i < hw_conf->num_of_hdmi; i++) in ps3av_get_hw_conf()
814 ps3av->av_port[i] = PS3AV_CMD_AVPORT_HDMI_0 + i; in ps3av_get_hw_conf()
815 for (j = 0; j < hw_conf->num_of_avmulti; j++) in ps3av_get_hw_conf()
816 ps3av->av_port[i + j] = PS3AV_CMD_AVPORT_AVMULTI_0 + j; in ps3av_get_hw_conf()
817 for (k = 0; k < hw_conf->num_of_spdif; k++) in ps3av_get_hw_conf()
818 ps3av->av_port[i + j + k] = PS3AV_CMD_AVPORT_SPDIF_0 + k; in ps3av_get_hw_conf()
821 ps3av->audio_port = PS3AV_CMD_AUDIO_PORT_HDMI_0 in ps3av_get_hw_conf()
829 /* set mode using id */
836 if ((id & PS3AV_MODE_MASK) > size - 1 || id < 0) { in ps3av_set_video_mode()
837 dev_dbg(&ps3av->dev->core, "%s: error id :%d\n", __func__, id); in ps3av_set_video_mode()
838 return -EINVAL; in ps3av_set_video_mode()
841 /* auto mode */ in ps3av_set_video_mode()
844 id = ps3av_auto_videomode(&ps3av->av_hw_conf); in ps3av_set_video_mode()
847 return -EINVAL; in ps3av_set_video_mode()
853 wait_for_completion(&ps3av->done); in ps3av_set_video_mode()
854 ps3av->ps3av_mode_old = ps3av->ps3av_mode; in ps3av_set_video_mode()
855 ps3av->ps3av_mode = id; in ps3av_set_video_mode()
857 ps3av->ps3av_mode = ps3av->ps3av_mode_old; in ps3av_set_video_mode()
865 return ps3av_auto_videomode(&ps3av->av_hw_conf); in ps3av_get_auto_mode()
871 return ps3av ? ps3av->ps3av_mode : 0; in ps3av_get_mode()
882 if (id > size - 1 || id < 0) { in ps3av_video_mode2res()
883 printk(KERN_ERR "%s: invalid mode %d\n", __func__, id); in ps3av_video_mode2res()
884 return -EINVAL; in ps3av_video_mode2res()
905 for (i = 0; i < ps3av->av_hw_conf.num_of_avmulti; i++) { in ps3av_audio_mute_analog()
907 &ps3av->av_port[i + ps3av->av_hw_conf.num_of_hdmi], in ps3av_audio_mute_analog()
910 return -1; in ps3av_audio_mute_analog()
929 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3av_probe()
930 dev_dbg(&dev->core, " timeout=%d\n", timeout); in ps3av_probe()
933 dev_err(&dev->core, "Only one ps3av device is supported\n"); in ps3av_probe()
934 return -EBUSY; in ps3av_probe()
939 return -ENOMEM; in ps3av_probe()
941 mutex_init(&ps3av->mutex); in ps3av_probe()
942 ps3av->ps3av_mode = PS3AV_MODE_AUTO; in ps3av_probe()
943 ps3av->dev = dev; in ps3av_probe()
945 INIT_WORK(&ps3av->work, ps3avd); in ps3av_probe()
946 init_completion(&ps3av->done); in ps3av_probe()
947 complete(&ps3av->done); in ps3av_probe()
951 ps3av->region = PS3AV_REGION_60; in ps3av_probe()
955 ps3av->region = PS3AV_REGION_50; in ps3av_probe()
958 ps3av->region = PS3AV_REGION_50 | PS3AV_REGION_RGB; in ps3av_probe()
961 ps3av->region = PS3AV_REGION_60; in ps3av_probe()
976 id = ps3av_auto_videomode(&ps3av->av_hw_conf); in ps3av_probe()
979 res = -EINVAL; in ps3av_probe()
985 mutex_lock(&ps3av->mutex); in ps3av_probe()
986 ps3av->ps3av_mode = id; in ps3av_probe()
987 mutex_unlock(&ps3av->mutex); in ps3av_probe()
989 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3av_probe()
1001 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3av_remove()
1004 flush_work(&ps3av->work); in ps3av_remove()
1009 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3av_remove()
1015 dev_dbg(&dev->core, " -> %s:%d\n", __func__, __LINE__); in ps3av_shutdown()
1017 dev_dbg(&dev->core, " <- %s:%d\n", __func__, __LINE__); in ps3av_shutdown()
1033 return -ENODEV; in ps3av_module_init()
1035 pr_debug(" -> %s:%d\n", __func__, __LINE__); in ps3av_module_init()
1045 pr_debug(" <- %s:%d\n", __func__, __LINE__); in ps3av_module_init()
1051 pr_debug(" -> %s:%d\n", __func__, __LINE__); in ps3av_module_exit()
1053 pr_debug(" <- %s:%d\n", __func__, __LINE__); in ps3av_module_exit()