diff options
| -rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700.h | 2 | ||||
| -rw-r--r-- | drivers/media/dvb/dvb-usb/dib0700_devices.c | 41 |
2 files changed, 42 insertions, 1 deletions
diff --git a/drivers/media/dvb/dvb-usb/dib0700.h b/drivers/media/dvb/dvb-usb/dib0700.h index 9bd6d51b3b9..7de125c0b36 100644 --- a/drivers/media/dvb/dvb-usb/dib0700.h +++ b/drivers/media/dvb/dvb-usb/dib0700.h | |||
| @@ -48,6 +48,8 @@ struct dib0700_state { | |||
| 48 | u8 disable_streaming_master_mode; | 48 | u8 disable_streaming_master_mode; |
| 49 | u32 fw_version; | 49 | u32 fw_version; |
| 50 | u32 nb_packet_buffer_size; | 50 | u32 nb_packet_buffer_size; |
| 51 | int (*read_status)(struct dvb_frontend *, fe_status_t *); | ||
| 52 | int (*sleep)(struct dvb_frontend* fe); | ||
| 51 | u8 buf[255]; | 53 | u8 buf[255]; |
| 52 | }; | 54 | }; |
| 53 | 55 | ||
diff --git a/drivers/media/dvb/dvb-usb/dib0700_devices.c b/drivers/media/dvb/dvb-usb/dib0700_devices.c index 3ab45aedbdf..f9e966aa26e 100644 --- a/drivers/media/dvb/dvb-usb/dib0700_devices.c +++ b/drivers/media/dvb/dvb-usb/dib0700_devices.c | |||
| @@ -3105,6 +3105,35 @@ static int stk7070pd_frontend_attach1(struct dvb_usb_adapter *adap) | |||
| 3105 | return adap->fe_adap[0].fe == NULL ? -ENODEV : 0; | 3105 | return adap->fe_adap[0].fe == NULL ? -ENODEV : 0; |
| 3106 | } | 3106 | } |
| 3107 | 3107 | ||
| 3108 | static int novatd_read_status_override(struct dvb_frontend *fe, | ||
| 3109 | fe_status_t *stat) | ||
| 3110 | { | ||
| 3111 | struct dvb_usb_adapter *adap = fe->dvb->priv; | ||
| 3112 | struct dvb_usb_device *dev = adap->dev; | ||
| 3113 | struct dib0700_state *state = dev->priv; | ||
| 3114 | int ret; | ||
| 3115 | |||
| 3116 | ret = state->read_status(fe, stat); | ||
| 3117 | |||
| 3118 | if (!ret) | ||
| 3119 | dib0700_set_gpio(dev, adap->id == 0 ? GPIO1 : GPIO0, GPIO_OUT, | ||
| 3120 | !!(*stat & FE_HAS_LOCK)); | ||
| 3121 | |||
| 3122 | return ret; | ||
| 3123 | } | ||
| 3124 | |||
| 3125 | static int novatd_sleep_override(struct dvb_frontend* fe) | ||
| 3126 | { | ||
| 3127 | struct dvb_usb_adapter *adap = fe->dvb->priv; | ||
| 3128 | struct dvb_usb_device *dev = adap->dev; | ||
| 3129 | struct dib0700_state *state = dev->priv; | ||
| 3130 | |||
| 3131 | /* turn off LED */ | ||
| 3132 | dib0700_set_gpio(dev, adap->id == 0 ? GPIO1 : GPIO0, GPIO_OUT, 0); | ||
| 3133 | |||
| 3134 | return state->sleep(fe); | ||
| 3135 | } | ||
| 3136 | |||
| 3108 | /** | 3137 | /** |
| 3109 | * novatd_frontend_attach - Nova-TD specific attach | 3138 | * novatd_frontend_attach - Nova-TD specific attach |
| 3110 | * | 3139 | * |
| @@ -3114,6 +3143,7 @@ static int stk7070pd_frontend_attach1(struct dvb_usb_adapter *adap) | |||
| 3114 | static int novatd_frontend_attach(struct dvb_usb_adapter *adap) | 3143 | static int novatd_frontend_attach(struct dvb_usb_adapter *adap) |
| 3115 | { | 3144 | { |
| 3116 | struct dvb_usb_device *dev = adap->dev; | 3145 | struct dvb_usb_device *dev = adap->dev; |
| 3146 | struct dib0700_state *st = dev->priv; | ||
| 3117 | 3147 | ||
| 3118 | if (adap->id == 0) { | 3148 | if (adap->id == 0) { |
| 3119 | stk7070pd_init(dev); | 3149 | stk7070pd_init(dev); |
| @@ -3134,7 +3164,16 @@ static int novatd_frontend_attach(struct dvb_usb_adapter *adap) | |||
| 3134 | adap->fe_adap[0].fe = dvb_attach(dib7000p_attach, &dev->i2c_adap, | 3164 | adap->fe_adap[0].fe = dvb_attach(dib7000p_attach, &dev->i2c_adap, |
| 3135 | adap->id == 0 ? 0x80 : 0x82, | 3165 | adap->id == 0 ? 0x80 : 0x82, |
| 3136 | &stk7070pd_dib7000p_config[adap->id]); | 3166 | &stk7070pd_dib7000p_config[adap->id]); |
| 3137 | return adap->fe_adap[0].fe == NULL ? -ENODEV : 0; | 3167 | |
| 3168 | if (adap->fe_adap[0].fe == NULL) | ||
| 3169 | return -ENODEV; | ||
| 3170 | |||
| 3171 | st->read_status = adap->fe_adap[0].fe->ops.read_status; | ||
| 3172 | adap->fe_adap[0].fe->ops.read_status = novatd_read_status_override; | ||
| 3173 | st->sleep = adap->fe_adap[0].fe->ops.sleep; | ||
| 3174 | adap->fe_adap[0].fe->ops.sleep = novatd_sleep_override; | ||
| 3175 | |||
| 3176 | return 0; | ||
| 3138 | } | 3177 | } |
| 3139 | 3178 | ||
| 3140 | /* S5H1411 */ | 3179 | /* S5H1411 */ |
