version 1.2, 2011/07/10 00:47:34 |
version 1.3, 2011/08/09 01:42:24 |
Line 60 static int auvitek_dtv_set_tuner(void * |
|
Line 60 static int auvitek_dtv_set_tuner(void * |
|
static fe_status_t auvitek_dtv_get_status(void *); |
static fe_status_t auvitek_dtv_get_status(void *); |
static uint16_t auvitek_dtv_get_signal_strength(void *); |
static uint16_t auvitek_dtv_get_signal_strength(void *); |
static uint16_t auvitek_dtv_get_snr(void *); |
static uint16_t auvitek_dtv_get_snr(void *); |
static int auvitek_dtv_start_transfer(void *); |
static int auvitek_dtv_start_transfer(void *, |
|
void (*)(void *, const struct dtv_payload *), |
|
void *); |
static int auvitek_dtv_stop_transfer(void *); |
static int auvitek_dtv_stop_transfer(void *); |
|
|
static int auvitek_dtv_init_pipes(struct auvitek_softc *); |
static int auvitek_dtv_init_pipes(struct auvitek_softc *); |
Line 87 static const struct dtv_hw_if auvitek_dt |
|
Line 89 static const struct dtv_hw_if auvitek_dt |
|
int |
int |
auvitek_dtv_attach(struct auvitek_softc *sc) |
auvitek_dtv_attach(struct auvitek_softc *sc) |
{ |
{ |
struct dtv_attach_args daa; |
|
|
|
daa.hw = &auvitek_dtv_if; |
auvitek_dtv_rescan(sc, NULL, NULL); |
daa.priv = sc; |
|
sc->sc_dtvdev = config_found_ia(sc->sc_dev, "dtvbus", &daa, dtv_print); |
|
|
|
return (sc->sc_dtvdev != NULL); |
return (sc->sc_dtvdev != NULL); |
} |
} |
Line 108 auvitek_dtv_detach(struct auvitek_softc |
|
Line 107 auvitek_dtv_detach(struct auvitek_softc |
|
} |
} |
|
|
void |
void |
|
auvitek_dtv_rescan(struct auvitek_softc *sc, const char *ifattr, |
|
const int *locs) |
|
{ |
|
struct dtv_attach_args daa; |
|
|
|
daa.hw = &auvitek_dtv_if; |
|
daa.priv = sc; |
|
|
|
if (ifattr_match(ifattr, "dtvbus") && sc->sc_dtvdev == NULL) |
|
sc->sc_dtvdev = config_found_ia(sc->sc_dev, "dtvbus", |
|
&daa, dtv_print); |
|
} |
|
|
|
void |
auvitek_dtv_childdet(struct auvitek_softc *sc, device_t child) |
auvitek_dtv_childdet(struct auvitek_softc *sc, device_t child) |
{ |
{ |
if (sc->sc_dtvdev == child) |
if (sc->sc_dtvdev == child) |
Line 158 auvitek_dtv_close(void *priv) |
|
Line 171 auvitek_dtv_close(void *priv) |
|
|
|
auvitek_dtv_stop_transfer(sc); |
auvitek_dtv_stop_transfer(sc); |
auvitek_dtv_close_pipes(sc); |
auvitek_dtv_close_pipes(sc); |
|
|
|
sc->sc_dtvsubmitcb = NULL; |
|
sc->sc_dtvsubmitarg = NULL; |
} |
} |
|
|
static int |
static int |
Line 202 auvitek_dtv_get_snr(void *priv) |
|
Line 218 auvitek_dtv_get_snr(void *priv) |
|
} |
} |
|
|
static int |
static int |
auvitek_dtv_start_transfer(void *priv) |
auvitek_dtv_start_transfer(void *priv, |
|
void (*cb)(void *, const struct dtv_payload *), void *arg) |
{ |
{ |
struct auvitek_softc *sc = priv; |
struct auvitek_softc *sc = priv; |
int s; |
int s; |
Line 211 auvitek_dtv_start_transfer(void *priv) |
|
Line 228 auvitek_dtv_start_transfer(void *priv) |
|
return 0; |
return 0; |
} |
} |
|
|
|
sc->sc_dtvsubmitcb = cb; |
|
sc->sc_dtvsubmitarg = arg; |
|
|
auvitek_write_1(sc, 0x608, 0x90); |
auvitek_write_1(sc, 0x608, 0x90); |
auvitek_write_1(sc, 0x609, 0x72); |
auvitek_write_1(sc, 0x609, 0x72); |
auvitek_write_1(sc, 0x60a, 0x71); |
auvitek_write_1(sc, 0x60a, 0x71); |
Line 278 auvitek_dtv_bulk_cb(usbd_xfer_handle xfe |
|
Line 298 auvitek_dtv_bulk_cb(usbd_xfer_handle xfe |
|
struct dtv_payload payload; |
struct dtv_payload payload; |
uint32_t xferlen; |
uint32_t xferlen; |
|
|
if (ab->ab_running == false) |
if (ab->ab_running == false || sc->sc_dtvsubmitcb == NULL) |
return; |
return; |
|
|
usbd_get_xfer_status(xfer, NULL, NULL, &xferlen, NULL); |
usbd_get_xfer_status(xfer, NULL, NULL, &xferlen, NULL); |
Line 304 auvitek_dtv_bulk_cb(usbd_xfer_handle xfe |
|
Line 324 auvitek_dtv_bulk_cb(usbd_xfer_handle xfe |
|
|
|
payload.data = bx->bx_buffer; |
payload.data = bx->bx_buffer; |
payload.size = xferlen; |
payload.size = xferlen; |
dtv_submit_payload(sc->sc_dtvdev, &payload); |
sc->sc_dtvsubmitcb(sc->sc_dtvsubmitarg, &payload); |
|
|
next: |
next: |
auvitek_dtv_bulk_start1(bx); |
auvitek_dtv_bulk_start1(bx); |