void rtattach(struct rt_softc *sc) { sc->sc_freq = MIN_FM_FREQ; sc->sc_mute = 0; sc->sc_vol = 0; sc->sc_rf = LM700X_REF_050; sc->sc_stereo = LM700X_STEREO; sc->lm.wzcl = RT_WREN_ON | RT_CLCK_OFF | RT_DATA_OFF; sc->lm.wzch = RT_WREN_ON | RT_CLCK_ON | RT_DATA_OFF; sc->lm.wocl = RT_WREN_ON | RT_CLCK_OFF | RT_DATA_ON; sc->lm.woch = RT_WREN_ON | RT_CLCK_ON | RT_DATA_ON; switch (sc->sc_ct) { case CARD_RADIOTRACK: sc->lm.initdata = 0; sc->lm.rsetdata = RT_SIGNAL_METER; sc->lm.init = rt_lm700x_init; sc->lm.rset = rt_lm700x_rset; break; case CARD_SF16FMI: sc->lm.initdata = RT_CARD_OFF; sc->lm.rsetdata = RT_CARD_ON; sc->lm.init = sfi_lm700x_init; sc->lm.rset = sfi_lm700x_init; break; } rt_set_freq(sc, sc->sc_freq); rt_set_mute(sc, sc->sc_vol); radio_attach_mi(&rt_hw_if, sc, &sc->sc_dev); }
void rtii_attach(struct device *parent, struct device *self, void *aux) { struct rtii_softc *sc = (void *) self; struct isa_attach_args *ia = aux; struct cfdata *cf = sc->dev.dv_cfdata; sc->tea.iot = ia->ia_iot; sc->mute = 0; sc->vol = 0; sc->freq = MIN_FM_FREQ; sc->stereo = TEA5757_STEREO; sc->lock = TEA5757_S030; /* remap I/O */ if (bus_space_map(sc->tea.iot, ia->ia_iobase, ia->ia_iosize, 0, &sc->tea.ioh)) { printf(": bus_space_map() failed\n"); return; } sc->tea.offset = 0; sc->tea.flags = cf->cf_flags; sc->tea.init = rtii_init; sc->tea.rset = rtii_rset; sc->tea.write_bit = rtii_write_bit; sc->tea.read = rtii_hw_read; printf(": AIMS Lab Radiotrack II\n"); tea5757_set_freq(&sc->tea, sc->stereo, sc->lock, sc->freq); rtii_set_mute(sc); radio_attach_mi(&rtii_hw_if, sc, &sc->dev); }
void sfr_attach(struct device *parent, struct device *self, void *aux) { struct sfr_softc *sc = (void *) self; struct isa_attach_args *ia = aux; sc->c.iot = ia->ia_iot; sc->mute = 0; sc->vol = 0; sc->freq = MIN_FM_FREQ; sc->c.period = SF16FMR_FREQ_PERIOD; sc->c.clock = SF16FMR_FREQ_CLOCK; sc->c.data = SF16FMR_FREQ_DATA; /* remap I/O */ if (bus_space_map(sc->c.iot, ia->ia_iobase, ia->ia_iosize, 0, &sc->c.ioh)) { printf(": bus_space_map() failed\n"); return; } printf(": SoundForte RadioLink SF16-FMR\n"); sfr_set_freq(&sc->c, sc->freq); sfr_set_vol(sc->c.iot, sc->c.ioh, sc->vol, sc->mute); radio_attach_mi(&sfr_hw_if, sc, &sc->sc_dev); }
void sf2r_attach(struct device *parent, struct device *self, void *aux) { struct sf2r_softc *sc = (void *) self; struct isa_attach_args *ia = aux; sc->tea.iot = ia->ia_iot; sc->tea.flags = 0; sc->mute = 0; sc->vol = 0; sc->freq = MIN_FM_FREQ; sc->stereo = TEA5757_STEREO; sc->lock = TEA5757_S030; /* remap I/O */ if (bus_space_map(sc->tea.iot, ia->ia_io[0].ir_addr, ia->ia_io[0].ir_size, 0, &sc->tea.ioh)) panic("sf2rattach: bus_space_map() failed"); sc->tea.offset = 0; sc->tea.init = sf2r_init; sc->tea.rset = sf2r_rset; sc->tea.write_bit = sf2r_write_bit; sc->tea.read = sf2r_read_register; printf(": SoundForte RadioLink SF16-FMR2\n"); tea5757_set_freq(&sc->tea, sc->stereo, sc->lock, sc->freq); sf2r_set_mute(sc); radio_attach_mi(&sf2r_hw_if, sc, &sc->sc_dev); }
void rt_attach(device_t parent, device_t self, void *aux) { struct rt_softc *sc = device_private(self); struct isa_attach_args *ia = aux; sc->lm.iot = ia->ia_iot; sc->rf = LM700X_REF_050; sc->stereo = LM700X_STEREO; sc->mute = 0; sc->freq = MIN_FM_FREQ; sc->vol = 0; /* remap I/O */ if (bus_space_map(sc->lm.iot, ia->ia_io[0].ir_addr, ia->ia_io[0].ir_size, 0, &sc->lm.ioh)) panic(": bus_space_map() of %s failed", device_xname(self)); switch (ia->ia_io[0].ir_addr) { case 0x20C: /* FALLTHROUGH */ case 0x30C: sc->cardtype = CARD_RADIOTRACK; printf(": AIMS Lab Radiotrack or compatible\n"); break; case 0x284: /* FALLTHROUGH */ case 0x384: sc->cardtype = CARD_SF16FMI; printf(": SoundForte RadioX SF16-FMI\n"); break; default: sc->cardtype = CARD_UNKNOWN; printf(": Unknown card\n"); break; } /* Configure struct lm700x_t lm */ sc->lm.offset = 0; sc->lm.wzcl = RT_WREN_ON | RT_CLCK_OFF | RT_DATA_OFF; sc->lm.wzch = RT_WREN_ON | RT_CLCK_ON | RT_DATA_OFF; sc->lm.wocl = RT_WREN_ON | RT_CLCK_OFF | RT_DATA_ON; sc->lm.woch = RT_WREN_ON | RT_CLCK_ON | RT_DATA_ON; sc->lm.initdata = 0; sc->lm.rsetdata = RT_DATA_ON | RT_CLCK_ON | RT_WREN_OFF; sc->lm.init = rt_lm700x_init; sc->lm.rset = rt_lm700x_rset; rt_set_freq(sc, sc->freq); radio_attach_mi(&rt_hw_if, sc, self); }
static void gtp_attach(device_t parent, device_t self, void *aux) { struct gtp_softc *sc = device_private(self); struct pci_attach_args *pa = aux; cfdata_t cf = device_cfdata(self); pci_chipset_tag_t pc = pa->pa_pc; bus_size_t iosize; pcireg_t csr; pci_aprint_devinfo(pa, "Radio controller"); /* Map I/O registers */ if (pci_mapreg_map(pa, PCI_CBIO, PCI_MAPREG_TYPE_IO, 0, &sc->tea.iot, &sc->tea.ioh, NULL, &iosize)) { aprint_error(": can't map i/o space\n"); return; } /* Enable the card */ csr = pci_conf_read(pc, pa->pa_tag, PCI_COMMAND_STATUS_REG); pci_conf_write(pc, pa->pa_tag, PCI_COMMAND_STATUS_REG, csr | PCI_COMMAND_MASTER_ENABLE); sc->vol = 0; sc->mute = 0; sc->freq = MIN_FM_FREQ; sc->stereo = TEA5757_STEREO; sc->lock = TEA5757_S030; sc->tea.offset = 0; sc->tea.flags = cf->cf_flags; sc->tea.init = gtp_init; sc->tea.rset = gtp_rset; sc->tea.write_bit = gtp_write_bit; sc->tea.read = gtp_hardware_read; aprint_normal(": Gemtek PR103\n"); radio_attach_mi(>p_hw_if, sc, self); }
int fmsradio_attach(struct fms_softc *sc) { struct fmsradio_if *r; r = malloc(sizeof(struct fmsradio_if), M_DEVBUF, M_NOWAIT); if (r == NULL) { printf("%s: cannot allocate memory for FM tuner config\n", sc->sc_dev.dv_xname); return TUNER_UNKNOWN; } sc->radio = r; r->tea.iot = sc->sc_iot; r->tea.ioh = sc->sc_ioh; r->tea.offset = FM_IO_CTL; r->tea.flags = sc->sc_dev.dv_cfdata->cf_flags; r->vol = 0; r->mute = 0; r->freq = MIN_FM_FREQ; r->stereo = TEA5757_STEREO; r->lock = TEA5757_S030; r->type = TUNER_UNKNOWN; if ((r->type = sf64pcr_probe(sc)) == TUNER_SF64PCR) printf("%s: SF64-PCR FM Radio\n", sc->sc_dev.dv_xname); else if ((r->type = sf256pcpr_probe(sc)) == TUNER_SF256PCPR) printf("%s: SF256-PCP-R FM Radio\n", sc->sc_dev.dv_xname); else if ((r->type = sf256pcs_probe(sc)) == TUNER_SF256PCS) printf("%s: SF256-PCS-R FM Radio\n", sc->sc_dev.dv_xname); else return TUNER_UNKNOWN; fmsradio_set_mute(sc); radio_attach_mi(&fmsradio_hw_if, sc, &sc->sc_dev); return r->type; }
void az_attach(struct device *parent, struct device *self, void *aux) { struct az_softc *sc = (void *) self; struct isa_attach_args *ia = aux; sc->lm.iot = ia->ia_iot; sc->rf = LM700X_REF_050; sc->stereo = LM700X_STEREO; sc->mute = 0; sc->freq = MIN_FM_FREQ; sc->vol = 0; /* remap I/O */ if (bus_space_map(sc->lm.iot, ia->ia_iobase, ia->ia_iosize, 0, &sc->lm.ioh)) { printf(": bus_space_map() failed\n"); return; } printf(": Aztech/PackardBell\n"); /* Configure struct lm700x_t lm */ sc->lm.offset = 0; sc->lm.wzcl = AZ_WREN_ON | AZ_CLCK_OFF | AZ_DATA_OFF; sc->lm.wzch = AZ_WREN_ON | AZ_CLCK_ON | AZ_DATA_OFF; sc->lm.wocl = AZ_WREN_ON | AZ_CLCK_OFF | AZ_DATA_ON; sc->lm.woch = AZ_WREN_ON | AZ_CLCK_ON | AZ_DATA_ON; sc->lm.initdata = 0; sc->lm.rsetdata = AZ_DATA_ON | AZ_CLCK_ON | AZ_WREN_OFF; sc->lm.init = az_lm700x_init; sc->lm.rset = az_lm700x_rset; az_set_freq(sc, sc->freq); radio_attach_mi(&az_hw_if, sc, &sc->sc_dev); }