Commit 480ac761 authored by Aapo Tahkola's avatar Aapo Tahkola Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (5425): M920x: rework driver code to allow for different devices

parent 26a154c3
Loading
Loading
Loading
Loading
+28 −23
Original line number Diff line number Diff line
@@ -67,16 +67,18 @@ static inline int m9206_write(struct usb_device *udev, u8 request,
	return ret;
}

static int m9206_rc_init(struct usb_device *udev)
static int m9206_init(struct dvb_usb_device *d)
{
	int ret = 0;

	/* Remote controller init. */
	if ((ret = m9206_write(udev, M9206_CORE, 0xa8, M9206_RC_INIT2)) != 0)
	if (d->props.rc_query) {
		if ((ret = m9206_write(d->udev, M9206_CORE, 0xa8, M9206_RC_INIT2)) != 0)
			return ret;

	if ((ret = m9206_write(udev, M9206_CORE, 0x51, M9206_RC_INIT1)) != 0)
		if ((ret = m9206_write(d->udev, M9206_CORE, 0x51, M9206_RC_INIT1)) != 0)
			return ret;
	}

	return ret;
}
@@ -94,9 +96,9 @@ static int m9206_rc_query(struct dvb_usb_device *d, u32 *event, int *state)
	if ((ret = m9206_read(d->udev, M9206_CORE, 0x0, M9206_RC_KEY, rc_state + 1, 1)) != 0)
		goto unlock;

	for (i = 0; i < ARRAY_SIZE(megasky_rc_keys); i++)
		if (megasky_rc_keys[i].data == rc_state[1]) {
			*event = megasky_rc_keys[i].event;
	for (i = 0; i < d->props.rc_key_map_size; i++)
		if (d->props.rc_key_map[i].data == rc_state[1]) {
			*event = d->props.rc_key_map[i].event;

			switch(rc_state[0]) {
			case 0x80:
@@ -412,12 +414,17 @@ static int m920x_probe(struct usb_interface *intf,
	struct usb_host_interface *alt;
	int ret;

	if ((ret = dvb_usb_device_init(intf, &megasky_properties, THIS_MODULE, &d)) == 0) {
		deb_rc("probed!\n");
	deb_rc("Probed!\n");

	if ((ret = dvb_usb_device_init(intf, &megasky_properties, THIS_MODULE, &d)) == 0)
		goto found;

	return ret;

found:
	alt = usb_altnum_to_altsetting(intf, 1);
	if (alt == NULL) {
			deb_rc("not alt found!\n");
		deb_rc("No alt found!\n");
		return -ENODEV;
	}

@@ -426,11 +433,9 @@ static int m920x_probe(struct usb_interface *intf,
	if (ret < 0)
		return ret;

		deb_rc("Changed to alternate setting!\n");

		if ((ret = m9206_rc_init(d->udev)) != 0)
	if ((ret = m9206_init(d)) != 0)
		return ret;
	}

	return ret;
}