Пример #1
0
void
set_freq_rt(u_int16_t frequency) {
	u_int32_t reg = 0;
	int i;

	if (tunertype == UNKNOWN)
		return;

	reg  = lm700x_encode_freq(frequency, LM700X_REF_050);
	reg |= stereo | LM700X_REF_050 | LM700X_DIVIDER_FM;

	if (tunertype == SF16_FMI)
		OUTB(radioport, 0);

	for (i = 0; i < LM700X_REGISTER_LENGTH; i++)
		if (reg & (1 << i)) {
			OUTB(radioport, 0xd5);
			OUTB(radioport, 0xd7);
		} else {
			OUTB(radioport, 0xd1);
			OUTB(radioport, 0xd3);
		}

	if (tunertype == RADIOTRACK) {
		usleep(1000);
		OUTB(radioport, 0x10);
		usleep(50000);
		OUTB(radioport, 0xd8);
	} else if (tunertype == SF16_FMI) {
		OUTB(radioport, 0x08);
	}
}
Пример #2
0
void
rt_set_freq(struct rt_softc *sc, u_int32_t nfreq)
{
	u_int32_t reg;

	if (nfreq > MAX_FM_FREQ)
		nfreq = MAX_FM_FREQ;
	if (nfreq < MIN_FM_FREQ)
		nfreq = MIN_FM_FREQ;

	sc->sc_freq = nfreq;

	reg = lm700x_encode_freq(nfreq, sc->sc_rf);
	reg |= sc->sc_stereo | sc->sc_rf | LM700X_DIVIDER_FM;

	lm700x_hardware_write(&sc->lm, reg, RT_VOLUME_STEADY);

	rt_set_mute(sc, sc->sc_vol);
}
Пример #3
0
void
az_set_freq(struct az_softc *sc, u_int32_t nfreq)
{
	u_int8_t vol;
	u_int32_t reg;

	vol = sc->mute ? 0 : sc->vol;

	if (nfreq > MAX_FM_FREQ)
		nfreq = MAX_FM_FREQ;
	if (nfreq < MIN_FM_FREQ)
		nfreq = MIN_FM_FREQ;

	sc->freq = nfreq;

	reg = lm700x_encode_freq(nfreq, sc->rf);
	reg |= sc->stereo | sc->rf | LM700X_DIVIDER_FM;

	lm700x_hardware_write(&sc->lm, reg, vol);

	az_set_mute(sc);
}