/* set all the rx/tx carrier parameters; this must be called with the device * spinlock held */ static void ite_set_carrier_params(struct ite_dev *dev) { unsigned int freq, low_freq, high_freq; int allowance; bool use_demodulator; bool for_tx = dev->transmitting; ite_dbg("%s called", __func__); if (for_tx) { /* we don't need no stinking calculations */ freq = dev->params.tx_carrier_freq; allowance = ITE_RXDCR_DEFAULT; use_demodulator = false; } else { low_freq = dev->params.rx_low_carrier_freq; high_freq = dev->params.rx_high_carrier_freq; if (low_freq == 0) { /* don't demodulate */ freq = ITE_DEFAULT_CARRIER_FREQ; allowance = ITE_RXDCR_DEFAULT; use_demodulator = false; } else { /* calculate the middle freq */ freq = (low_freq + high_freq) / 2; /* calculate the allowance */ allowance = DIV_ROUND_CLOSEST(10000 * (high_freq - low_freq), ITE_RXDCR_PER_10000_STEP * (high_freq + low_freq)); if (allowance < 1) allowance = 1; if (allowance > ITE_RXDCR_MAX) allowance = ITE_RXDCR_MAX; } } /* set the carrier parameters in a device-dependent way */ dev->params.set_carrier_params(dev, ite_is_high_carrier_freq(freq), use_demodulator, ite_get_carrier_freq_bits(freq), allowance, ite_get_pulse_width_bits(freq, dev->params.tx_duty_cycle)); }
static void ite_set_carrier_params(struct ite_dev *dev) { unsigned int freq, low_freq, high_freq; int allowance; bool use_demodulator; bool for_tx = dev->transmitting; ite_dbg("%s called", __func__); if (for_tx) { freq = dev->params.tx_carrier_freq; allowance = ITE_RXDCR_DEFAULT; use_demodulator = false; } else { low_freq = dev->params.rx_low_carrier_freq; high_freq = dev->params.rx_high_carrier_freq; if (low_freq == 0) { freq = ITE_DEFAULT_CARRIER_FREQ; allowance = ITE_RXDCR_DEFAULT; use_demodulator = false; } else { freq = (low_freq + high_freq) / 2; allowance = DIV_ROUND_CLOSEST(10000 * (high_freq - low_freq), ITE_RXDCR_PER_10000_STEP * (high_freq + low_freq)); if (allowance < 1) allowance = 1; if (allowance > ITE_RXDCR_MAX) allowance = ITE_RXDCR_MAX; } } dev->params.set_carrier_params(dev, ite_is_high_carrier_freq(freq), use_demodulator, ite_get_carrier_freq_bits(freq), allowance, ite_get_pulse_width_bits(freq, dev->params.tx_duty_cycle)); }