Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e530a5e3 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab
Browse files

[media] gspca_sonixj: Probe sensor type independent of bridge type



Looking at the windows inf file, for usb ids with a sensor type where probing
is needed to determine the type (for example ov7630 or soi768), this is
needed for all bridge variants with a usb id indicating this sensor type.

So do the probing to determine the actual sensor type for types where the
usb-id info is not 100% deterministic, independent of the bridge type.

If you look through the list of currently active usb ids in sonixj, this
effectively only changes the code path for 0c45:60fe (sn9c105 + ov7630) and
0c45:612e (sn9c110 + ov7630), which according to the inf file can have a
soi768 instead of a ov7630 just like the sn9c120 + ov7630 models where we
already probe for a soi7630.

The main reason for this code change is to keep the code paths as bridge
variant independent as possible, so that we don't need a lot of special
per bridge cases, as we enable more usb-ids in the future.

This change makes the 0c45:60fe code path identical to the successfully
tested 0c45:613e, so also make sonixj the default driver for 0c45:60fe.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Acked-by: default avatarJean-Francois Moine <moinejf@free.fr>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 4944e27d
Loading
Loading
Loading
Loading
+29 −29
Original line number Diff line number Diff line
@@ -1822,20 +1822,17 @@ static int sd_init(struct gspca_dev *gspca_dev)
	PDEBUG(D_PROBE, "Sonix chip id: %02x", regF1);
	switch (sd->bridge) {
	case BRIDGE_SN9C102P:
		if (regF1 != 0x11)
			return -ENODEV;
		reg_w1(gspca_dev, 0x02, regGpio[1]);
		break;
	case BRIDGE_SN9C105:
		if (regF1 != 0x11)
			return -ENODEV;
		if (sd->sensor == SENSOR_MI0360)
			mi0360_probe(gspca_dev);
		reg_w(gspca_dev, 0x01, regGpio, 2);
		break;
	case BRIDGE_SN9C120:
	default:
/*	case BRIDGE_SN9C110: */
/*	case BRIDGE_SN9C120: */
		if (regF1 != 0x12)
			return -ENODEV;
	}

	switch (sd->sensor) {
	case SENSOR_MI0360:
		mi0360_probe(gspca_dev);
@@ -1850,16 +1847,21 @@ static int sd_init(struct gspca_dev *gspca_dev)
		po2030n_probe(gspca_dev);
		break;
	}
		regGpio[1] = 0x70;		/* no audio */

	switch (sd->bridge) {
	case BRIDGE_SN9C102P:
		reg_w1(gspca_dev, 0x02, regGpio[1]);
		break;
	case BRIDGE_SN9C105:
		reg_w(gspca_dev, 0x01, regGpio, 2);
		break;
	default:
/*	case BRIDGE_SN9C110: */
/*	case BRIDGE_SN9C325: */
		if (regF1 != 0x12)
			return -ENODEV;
	case BRIDGE_SN9C110:
		reg_w1(gspca_dev, 0x02, 0x62);
		break;
	case BRIDGE_SN9C120:
		regGpio[1] = 0x70;		/* no audio */
		reg_w(gspca_dev, 0x01, regGpio, 2);
		break;
	}

	if (sd->sensor == SENSOR_OM6802)
@@ -2935,9 +2937,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
/*	{USB_DEVICE(0x0c45, 0x60f2), BS(SN9C105, OV7660)}, */
	{USB_DEVICE(0x0c45, 0x60fb), BS(SN9C105, OV7660)},
	{USB_DEVICE(0x0c45, 0x60fc), BS(SN9C105, HV7131R)},
#if !defined CONFIG_USB_SN9C102 && !defined CONFIG_USB_SN9C102_MODULE
	{USB_DEVICE(0x0c45, 0x60fe), BS(SN9C105, OV7630)},
#endif
	{USB_DEVICE(0x0c45, 0x6100), BS(SN9C120, MI0360)},	/*sn9c128*/
	{USB_DEVICE(0x0c45, 0x6102), BS(SN9C120, PO2030N)},	/* /GC0305*/
/*	{USB_DEVICE(0x0c45, 0x6108), BS(SN9C120, OM6802)}, */
+0 −2
Original line number Diff line number Diff line
@@ -108,10 +108,8 @@ static const struct usb_device_id sn9c102_id_table[] = {
/*	{ SN9C102_USB_DEVICE(0x0c45, 0x60fa, BRIDGE_SN9C105), }, OV7648 */
	{ SN9C102_USB_DEVICE(0x0c45, 0x60fb, BRIDGE_SN9C105), },
	{ SN9C102_USB_DEVICE(0x0c45, 0x60fc, BRIDGE_SN9C105), },
#endif
	{ SN9C102_USB_DEVICE(0x0c45, 0x60fe, BRIDGE_SN9C105), },
	/* SN9C120 */
#if !defined CONFIG_USB_GSPCA_SONIXJ && !defined CONFIG_USB_GSPCA_SONIXJ_MODULE
	{ SN9C102_USB_DEVICE(0x0458, 0x7025, BRIDGE_SN9C120), },
/*	{ SN9C102_USB_DEVICE(0x0c45, 0x6102, BRIDGE_SN9C120), }, po2030 */
/*	{ SN9C102_USB_DEVICE(0x0c45, 0x6108, BRIDGE_SN9C120), }, om6801 */