Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}
Beispiel #4
0
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);
}
Beispiel #6
0
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(&gtp_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;
}
Beispiel #8
0
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);
}