Commit 7a6fbed6 authored by Michael Krufky's avatar Michael Krufky Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (9736): sms1xxx: enable power LED on Hauppauge WinTV MiniStick



Enable power LED while the frontend is in use.

Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 250fa674
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -168,3 +168,18 @@ int sms_board_setup(struct smscore_device_t *coredev)
	}
	return 0;
}

int sms_board_power(struct smscore_device_t *coredev, int onoff)
{
	int board_id = smscore_get_board_id(coredev);
	struct sms_board *board = sms_get_board(board_id);

	switch (board_id) {
	case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
		/* power LED */
		sms_set_gpio(coredev,
			     board->led_power, onoff ? 1 : 0);
		break;
	}
	return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ struct sms_board *sms_get_board(int id);

int sms_board_setup(struct smscore_device_t *coredev);

int sms_board_power(struct smscore_device_t *coredev, int onoff);

extern struct usb_device_id smsusb_id_table[];

#endif /* __SMS_CARDS_H__ */
+24 −0
Original line number Diff line number Diff line
@@ -273,6 +273,27 @@ static int smsdvb_get_frontend(struct dvb_frontend *fe,
	/* todo: */
	memcpy(fep, &client->fe_params,
	       sizeof(struct dvb_frontend_parameters));

	return 0;
}

static int smsdvb_init(struct dvb_frontend *fe)
{
	struct smsdvb_client_t *client =
		container_of(fe, struct smsdvb_client_t, frontend);

	sms_board_power(client->coredev, 1);

	return 0;
}

static int smsdvb_sleep(struct dvb_frontend *fe)
{
	struct smsdvb_client_t *client =
		container_of(fe, struct smsdvb_client_t, frontend);

	sms_board_power(client->coredev, 0);

	return 0;
}

@@ -308,6 +329,9 @@ static struct dvb_frontend_ops smsdvb_fe_ops = {
	.read_ber = smsdvb_read_ber,
	.read_signal_strength = smsdvb_read_signal_strength,
	.read_snr = smsdvb_read_snr,

	.init = smsdvb_init,
	.sleep = smsdvb_sleep,
};

static int smsdvb_hotplug(struct smscore_device_t *coredev,