Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 124254
b: refs/heads/master
c: 7b29e10
h: refs/heads/master
v: v3
  • Loading branch information
Michael Krufky authored and Mauro Carvalho Chehab committed Dec 29, 2008
1 parent 045a305 commit 1a5a187
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 851a90914346b9a3b1afc0ae9c1ed2eb3dae9b5a
refs/heads/master: 7b29e10d609035b5f93546ac6bcd1c5d810476a7
22 changes: 22 additions & 0 deletions trunk/drivers/media/dvb/siano/sms-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,3 +183,25 @@ int sms_board_power(struct smscore_device_t *coredev, int onoff)
}
return 0;
}

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

/* dont touch GPIO if LEDs are already set */
if (smscore_led_state(coredev, -1) == led)
return 0;

switch (board_id) {
case SMS1XXX_BOARD_HAUPPAUGE_WINDHAM:
sms_set_gpio(coredev,
board->led_lo, (led & SMS_LED_LO) ? 1 : 0);
sms_set_gpio(coredev,
board->led_hi, (led & SMS_LED_HI) ? 1 : 0);

smscore_led_state(coredev, led);
break;
}
return 0;
}
4 changes: 4 additions & 0 deletions trunk/drivers/media/dvb/siano/sms-cards.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ struct sms_board *sms_get_board(int id);

int sms_board_setup(struct smscore_device_t *coredev);

#define SMS_LED_OFF 0
#define SMS_LED_LO 1
#define SMS_LED_HI 2
int sms_board_led_feedback(struct smscore_device_t *coredev, int led);
int sms_board_power(struct smscore_device_t *coredev, int onoff);

extern struct usb_device_id smsusb_id_table[];
Expand Down
8 changes: 8 additions & 0 deletions trunk/drivers/media/dvb/siano/smscoreapi.c
Original file line number Diff line number Diff line change
Expand Up @@ -91,13 +91,21 @@ struct smscore_device_t {
struct completion init_device_done, reload_start_done, resume_done;

int board_id;
int led_state;
};

void smscore_set_board_id(struct smscore_device_t *core, int id)
{
core->board_id = id;
}

int smscore_led_state(struct smscore_device_t *core, int led)
{
if (led >= 0)
core->led_state = led;
return core->led_state;
}

int smscore_get_board_id(struct smscore_device_t *core)
{
return core->board_id;
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/media/dvb/siano/smscoreapi.h
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,8 @@ int smscore_set_gpio(struct smscore_device_t *coredev, u32 pin, int level);
void smscore_set_board_id(struct smscore_device_t *core, int id);
int smscore_get_board_id(struct smscore_device_t *core);

int smscore_led_state(struct smscore_device_t *core, int led);

/* smsdvb.c */
int smsdvb_register(void);
void smsdvb_unregister(void);
Expand Down
15 changes: 13 additions & 2 deletions trunk/drivers/media/dvb/siano/smsdvb.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,18 @@ static int smsdvb_send_statistics_request(struct smsdvb_client_t *client)
struct SmsMsgHdr_ST Msg = { MSG_SMS_GET_STATISTICS_REQ,
DVBT_BDA_CONTROL_MSG_ID,
HIF_TASK, sizeof(struct SmsMsgHdr_ST), 0 };
return smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
&client->stat_done);
int ret = smsdvb_sendrequest_and_wait(client, &Msg, sizeof(Msg),
&client->stat_done);
if (ret < 0)
return ret;

if (client->fe_status & FE_HAS_LOCK)
sms_board_led_feedback(client->coredev,
(client->fe_unc == 0) ?
SMS_LED_HI : SMS_LED_LO);
else
sms_board_led_feedback(client->coredev, SMS_LED_OFF);
return ret;
}

static int smsdvb_read_status(struct dvb_frontend *fe, fe_status_t *stat)
Expand Down Expand Up @@ -306,6 +316,7 @@ static int smsdvb_sleep(struct dvb_frontend *fe)
struct smsdvb_client_t *client =
container_of(fe, struct smsdvb_client_t, frontend);

sms_board_led_feedback(client->coredev, SMS_LED_OFF);
sms_board_power(client->coredev, 0);

return 0;
Expand Down

0 comments on commit 1a5a187

Please sign in to comment.