Пример #1
0
static void v4lcontrol_get_flags_from_db(struct v4lcontrol_data *data,
		const char *sysfs_prefix,
		unsigned short vendor_id, unsigned short product_id)
{
	char dmi_system_vendor[512], dmi_system_name[512], dmi_system_version[512];
	char dmi_board_vendor[512], dmi_board_name[512], dmi_board_version[512];
	int i;

	/* Get DMI board and system strings */
	v4lcontrol_get_dmi_string(sysfs_prefix, "sys_vendor", dmi_system_vendor,
			sizeof(dmi_system_vendor));
	v4lcontrol_get_dmi_string(sysfs_prefix, "product_name", dmi_system_name,
			sizeof(dmi_system_name));
	v4lcontrol_get_dmi_string(sysfs_prefix, "product_version", dmi_system_version,
			sizeof(dmi_system_version));

	v4lcontrol_get_dmi_string(sysfs_prefix, "board_vendor", dmi_board_vendor,
			sizeof(dmi_board_vendor));
	v4lcontrol_get_dmi_string(sysfs_prefix, "board_name", dmi_board_name,
			sizeof(dmi_board_name));
	v4lcontrol_get_dmi_string(sysfs_prefix, "board_version", dmi_board_version,
			sizeof(dmi_board_version));

	for (i = 0; i < ARRAY_SIZE(v4lcontrol_flags); i++)
		if (v4lcontrol_flags[i].vendor_id == vendor_id &&
				v4lcontrol_flags[i].product_id ==
				(product_id & ~v4lcontrol_flags[i].product_mask) &&

				(v4lcontrol_flags[i].dmi_system_vendor == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_vendor, dmi_system_vendor)) &&
				(v4lcontrol_flags[i].dmi_system_name == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_name, dmi_system_name)) &&
				(v4lcontrol_flags[i].dmi_system_version == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_version, dmi_system_version)) &&

				(v4lcontrol_flags[i].dmi_board_vendor == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_vendor, dmi_board_vendor)) &&
				(v4lcontrol_flags[i].dmi_board_name == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_name, dmi_board_name)) &&
				(v4lcontrol_flags[i].dmi_board_version == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_version, dmi_board_version))) {
			data->flags |= v4lcontrol_flags[i].flags;
			data->flags_info = &v4lcontrol_flags[i];
			/* Entries in the v4lcontrol_flags table override
			   wildcard matches in the upside_down table. */
			return;
		}

	for (i = 0; i < ARRAY_SIZE(upside_down); i++)
		if (find_dmi_string(upside_down[i].board_vendor, dmi_board_vendor) &&
		    find_dmi_string(upside_down[i].board_name, dmi_board_name) &&
		    find_usb_id(upside_down[i].camera_id, vendor_id, product_id)) {
			/* found entry */
			data->flags |= V4LCONTROL_HFLIPPED | V4LCONTROL_VFLIPPED;
			break;
		}
}
Пример #2
0
static void v4lcontrol_get_flags_from_db(struct v4lcontrol_data *data,
		unsigned short vendor_id, unsigned short product_id)
{
	char dmi_system_vendor[512], dmi_system_name[512], dmi_system_version[512];
	char dmi_board_vendor[512], dmi_board_name[512], dmi_board_version[512];
	int i;

	/* Get DMI board and system strings */
	v4lcontrol_get_dmi_string("sys_vendor", dmi_system_vendor,
			sizeof(dmi_system_vendor));
	v4lcontrol_get_dmi_string("product_name", dmi_system_name,
			sizeof(dmi_system_name));
	v4lcontrol_get_dmi_string("product_version", dmi_system_version,
			sizeof(dmi_system_version));

	v4lcontrol_get_dmi_string("board_vendor", dmi_board_vendor,
			sizeof(dmi_board_vendor));
	v4lcontrol_get_dmi_string("board_name", dmi_board_name,
			sizeof(dmi_board_name));
	v4lcontrol_get_dmi_string("board_version", dmi_board_version,
			sizeof(dmi_board_version));

	for (i = 0; i < ARRAY_SIZE(v4lcontrol_flags); i++)
		if (v4lcontrol_flags[i].vendor_id == vendor_id &&
				v4lcontrol_flags[i].product_id ==
				(product_id & ~v4lcontrol_flags[i].product_mask) &&

				(v4lcontrol_flags[i].dmi_system_vendor == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_vendor, dmi_system_vendor)) &&
				(v4lcontrol_flags[i].dmi_system_name == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_name, dmi_system_name)) &&
				(v4lcontrol_flags[i].dmi_system_version == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_system_version, dmi_system_version)) &&

				(v4lcontrol_flags[i].dmi_board_vendor == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_vendor, dmi_board_vendor)) &&
				(v4lcontrol_flags[i].dmi_board_name == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_name, dmi_board_name)) &&
				(v4lcontrol_flags[i].dmi_board_version == NULL ||
				 !strcmp(v4lcontrol_flags[i].dmi_board_version, dmi_board_version))) {
			data->flags |= v4lcontrol_flags[i].flags;
			data->flags_info = &v4lcontrol_flags[i];
			break;
		}
}