⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse_display_cmdline.c

📁 Sample code for use on smp 863x processor.
💻 C
📖 第 1 页 / 共 5 页
字号:
			i += 2;		}		else			err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi")) {		options->hdmi_force = TRUE;		options->hdmi_monitor = TRUE;  // force HDMI		i++;		if ((argc > i) && opt_arg(argv[i][0])) {			// optional argument: force DVI or HDMI			options->hdmi_monitor = ((argv[i][0] == '0') || (argv[i][0] == 'd') || (argv[i][0] == 'D')) ? FALSE : TRUE;			i++;		}		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-hdcp")) {		options->dvi_hdmi_hdcp = TRUE;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-edid")) {		options->dvi_hdmi_display_edid = TRUE;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-hdmi_de")) {		options->hdmi_de = TRUE;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-no_disp")) {		options->configure_outports = FALSE;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-edmode")) {		if (argc > i + 4) {			RMuint32 intl;			RMasciiToUInt32(argv[i + 1], &(options->dvi_hdmi_edid_hsize));			RMasciiToUInt32(argv[i + 2], &(options->dvi_hdmi_edid_vsize));			RMasciiToUInt32(argv[i + 3], &(options->dvi_hdmi_edid_vfreq));			if ((argv[i + 4][0] == 'p') || (argv[i + 4][0] == 'P')) {				intl = FALSE;			} else if ((argv[i + 4][0] == 'i') || (argv[i + 4][0] == 'I')) {				intl = TRUE;			} else {				RMasciiToUInt32(argv[i + 4], &intl);			}			options->dvi_hdmi_edid_intl = (intl ? TRUE : FALSE);			options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard			if (options->edid_sel != DH_EDID_fmatch) {				options->edid_sel = DH_EDID_match;			}			i += 5;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-edforce")) {		if (options->edid_sel == DH_EDID_none) {			options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard		}		options->edid_sel = DH_EDID_fmatch;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-edid_exclude")) {		i++;		if (argc <= i) err = RM_ERROR;		while ((err != RM_ERROR) && (argc > i) && opt_arg(argv[i][0])) {			err = parse_hdmi_mask(argv[i], &(options->edid_exclude_mask), &(options->edid_exclude_mask_vfreq), &(options->edid_exclude_mask_asp));			if (RMSUCCEEDED(err)) {				options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard				options->edid_sel = DH_EDID_mask;			}			i++;		}	}	else if (RMCompareAscii(argv[i], "-edid_force")) {		i++;		if (argc <= i) err = RM_ERROR;		while ((err != RM_ERROR) && (argc > i) && opt_arg(argv[i][0])) {			err = parse_hdmi_mask(argv[i], &(options->edid_force_mask), &(options->edid_force_mask_vfreq), &(options->edid_force_mask_asp));			if (RMSUCCEEDED(err)) {				options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard				options->edid_sel = DH_EDID_mask;			}			i++;		}	}	else if (RMCompareAscii(argv[i], "-edid_limits")) {		options->edid_min_pixclk = 0;		options->edid_max_pixclk = 0;		options->edid_min_hfreq = 0;		options->edid_max_hfreq = 0;		options->edid_min_vfreq = 0;		options->edid_max_vfreq = 0;		i++;		if ((argc > i) && opt_arg(argv[i][0])) {			RMasciiToUInt32(argv[i], &(options->edid_min_pixclk));			i++;			if ((argc > i) && opt_arg(argv[i][0])) {				RMasciiToUInt32(argv[i], &(options->edid_max_pixclk));				i++;				if ((argc > i) && opt_arg(argv[i][0])) {					RMasciiToUInt32(argv[i], &(options->edid_min_hfreq));					i++;					if ((argc > i) && opt_arg(argv[i][0])) {						RMasciiToUInt32(argv[i], &(options->edid_max_hfreq));						i++;						if ((argc > i) && opt_arg(argv[i][0])) {							RMasciiToUInt32(argv[i], &(options->edid_min_vfreq));							i++;							if ((argc > i) && opt_arg(argv[i][0])) {								RMasciiToUInt32(argv[i], &(options->edid_max_vfreq));								i++;							}						}					}				}			}		}		if (options->edid_sel == DH_EDID_none) {			options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard			options->edid_sel = DH_EDID_mask;		}		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-edwrite")) {		if (argc > i + 1) {			options->dvi_hdmi_edid_write = TRUE;			options->dvi_hdmi_edid_file = argv[i + 1];			i += 2;			err = RM_OK;		} else {			err = RM_ERROR;		}	}	else if (RMCompareAscii(argv[i], "-edread")) {		if (argc > i + 1) {			options->dvi_hdmi_edid_read = TRUE;			options->dvi_hdmi_edid_file = argv[i + 1];			i += 2;			err = RM_OK;		} else {			err = RM_ERROR;		}	}	else if (RMCompareAscii(argv[i], "-force_edid")) {		if (argc > i + 1) {			options->dvi_hdmi_edid_override = TRUE;			options->dvi_hdmi_edid_file = argv[i + 1];			i += 2;			err = RM_OK;		} else {			err = RM_ERROR;		}	}	else if (RMCompareAscii(argv[i], "-ed")) {		if (argc > i+1) {			if (argv[i + 1][0] == 'n') {				options->edid_sel = DH_EDID_native;			} else {				RMasciiToUInt32(argv[i+1], &(options->dvi_hdmi_edid_descriptor));				options->edid_sel = DH_EDID_force;			}			options->standard = EMhwlibTVStandard_HDMI_480p59;  // fallback standard			i += 2;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi2c")) {		if (argc > i+1) {			RMasciiToUInt32(argv[i+1], &(options->i2c_module));			i += 2;			if ((argc > i) && (argv[i][0] >= '0') && (argv[i][0] <= '9')) {				RMasciiToUInt32(argv[i], &(options->i2c_speed));				i++;			}			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi_ddc_tx")) {		options->i2c_ddc_on_tx = TRUE;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-dvi_reset")) {		if (argc > i+1) {			RMasciiToUInt32(argv[i+1], &(options->dvi_reset_gpio));			i += 2;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi_act")) {		if (argc > i+1) {			options->hdmi_active_format_valid = TRUE;			if (RMCompareAscii(argv[i+1], "none")) {				options->hdmi_active_format_valid = FALSE;			} else if (RMCompareAscii(argv[i+1], "full")) {				options->hdmi_active_format = DH_af_same_as_picture;			} else if (RMCompareAscii(argv[i+1], "16x9top")) {				options->hdmi_active_format = DH_af_16x9_top;			} else if (RMCompareAscii(argv[i+1], "14x9top")) {				options->hdmi_active_format = DH_af_14x9_top;			} else if (RMCompareAscii(argv[i+1], "64x27")) {				options->hdmi_active_format = DH_af_64x27_centered;			} else if (RMCompareAscii(argv[i+1], "4x3")) {				options->hdmi_active_format = DH_af_4x3_centered;			} else if (RMCompareAscii(argv[i+1], "16x9")) {				options->hdmi_active_format = DH_af_16x9_centered;			} else if (RMCompareAscii(argv[i+1], "14x9")) {				options->hdmi_active_format = DH_af_14x9_centered;			} else if (RMCompareAscii(argv[i+1], "4x3_14x9")) {				options->hdmi_active_format = DH_af_4x3_centered_prot_14x9;			} else if (RMCompareAscii(argv[i+1], "16x9_14x9")) {				options->hdmi_active_format = DH_af_16x9_centered_prot_14x9;			} else if (RMCompareAscii(argv[i+1], "16x9_4x3")) {				options->hdmi_active_format = DH_af_16x9_centered_prot_4x3;			} else {				err = RM_ERROR;			}			if (err != RM_ERROR)							err = RM_OK;			i += 2;		}		else 			err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi_bars")) {		if (argc > i+4) {			RMasciiToUInt32(argv[i+1], &(options->hdmi_bar_top));			RMasciiToUInt32(argv[i+2], &(options->hdmi_bar_bottom));			RMasciiToUInt32(argv[i+3], &(options->hdmi_bar_left));			RMasciiToUInt32(argv[i+4], &(options->hdmi_bar_right));			err = RM_OK;			i+=5;		}		else 			err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-hdmi_underscan")) {		options->hdmi_scan = EMhwlibScanInfo_Underscanned;		i++;		err = RM_OK;	}	else if (RMCompareAscii(argv[i], "-hdmi_scan")) {		if (argc > i + 1) {			i++;			err = RM_OK;			if ((argv[i][0] == 'o') || (argv[i][0] == 'O')) {				options->hdmi_scan = EMhwlibScanInfo_Overscanned;			} else if ((argv[i][0] == 'u') || (argv[i][0] == 'U')) {				options->hdmi_scan = EMhwlibScanInfo_Underscanned;			} else {				err = RM_ERROR;			}		} else err = RM_ERROR;		i++;	}	else if (RMCompareAscii(argv[i], "-hdmi_spd")) {		if (argc > i + 2) {			options->hdmi_spd_vendor = argv[i + 1];			options->hdmi_spd_product = argv[i + 2];			options->hdmi_spd_class = DH_source_dev_unknown;			err = RM_OK;			i += 3;			if ((argc > i) && opt_arg(argv[i][0])) {				if (RMCompareAscii(argv[i], "STB")) {					options->hdmi_spd_class = DH_source_dev_DigitalSTB;				} else if (RMCompareAscii(argv[i], "DVD")) {					options->hdmi_spd_class = DH_source_dev_DVD;				} else if (RMCompareAscii(argv[i], "DVHS")) {					options->hdmi_spd_class = DH_source_dev_DVHS;				} else if (RMCompareAscii(argv[i], "HDD")) {					options->hdmi_spd_class = DH_source_dev_HDDVideo;				} else if (RMCompareAscii(argv[i], "DVC")) {					options->hdmi_spd_class = DH_source_dev_DVC;				} else if (RMCompareAscii(argv[i], "DSC")) {					options->hdmi_spd_class = DH_source_dev_DSC;				} else if (RMCompareAscii(argv[i], "VCD")) {					options->hdmi_spd_class = DH_source_dev_VideoCD;				} else if (RMCompareAscii(argv[i], "Game")) {					options->hdmi_spd_class = DH_source_dev_Game;				} else if (RMCompareAscii(argv[i], "PC")) {					options->hdmi_spd_class = DH_source_dev_PC;				} else if (RMCompareAscii(argv[i], "BluRay")) {					options->hdmi_spd_class = DH_source_dev_BluRay;				} else if (RMCompareAscii(argv[i], "SACD")) {					options->hdmi_spd_class = DH_source_dev_SACD;				} else {					fprintf(stderr, "Unknown HDMI SPD class: %s\n", argv[i]);					err = RM_ERROR;				}				i++;			}		} else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-tmds_mode")) {		if (argc > i+2) {			RMuint32 gpio;			RMasciiToUInt32(argv[i+1], &(gpio));			options->tmds_gpio = (enum GPIOId_type)gpio;			RMasciiToUInt32(argv[i+2], &(options->tmds_threshold));			i += 3;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-filter_gpio")) {		if (argc > i+3) {			RMuint32 gpio;			RMasciiToUInt32(argv[i+1], &(gpio));			options->filter_gpio_start = (enum GPIOId_type)gpio;			RMasciiToUInt32(argv[i+2], &(options->filter_gpio_num));			RMasciiToUInt32(argv[i+3], &(options->filter_gpio_val));			i += 4;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-mv_filter")) {		if (argc > i+1) {			if (RMCompareAscii(argv[i], "0")) {				options->filtermode.Boundary_0_1 = 0x4000;				options->filtermode.Boundary_1_2 = 0x4000;				options->filtermode.Boundary_2_3 = 0x4000;			} else if (RMCompareAscii(argv[i+1], "1")) {				options->filtermode.Boundary_0_1 = 0x0000;				options->filtermode.Boundary_1_2 = 0x4000;				options->filtermode.Boundary_2_3 = 0x4000;			} else if (RMCompareAscii(argv[i+1], "2")) {				options->filtermode.Boundary_0_1 = 0x0000;				options->filtermode.Boundary_1_2 = 0x0000;				options->filtermode.Boundary_2_3 = 0x4000;			} else if (RMCompareAscii(argv[i+1], "3")) {				options->filtermode.Boundary_0_1 = 0x0000;				options->filtermode.Boundary_1_2 = 0x0000;				options->filtermode.Boundary_2_3 = 0x0000;			} else if (RMCompareAscii(argv[i+1], "auto")) {				options->filtermode.Boundary_0_1 = 0x1400;				options->filtermode.Boundary_1_2 = 0x1c00;				options->filtermode.Boundary_2_3 = 0x2c00;			}			else				err = RM_ERROR;			i += 2;			err = RM_OK;		}		else err = RM_ERROR;	}	else if (RMCompareAscii(argv[i], "-luma_lpf")) {		if (argc > i+1) {			if (RMCompareAscii(argv[i], "0")) {				options->downscalingmode.Discard = FALS

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -