Commit ae1a616a authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'staging-5.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging/IIO fixes from Greg KH:
 "Here are four small staging and iio driver fixes for 5.3-rc5

  Two are for the dt3000 comedi driver for some reported problems found
  in that codebase, and two are some small iio fixes.

  All of these have been in linux-next this week with no reported
  issues"

* tag 'staging-5.3-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: comedi: dt3000: Fix rounding up of timer divisor
  staging: comedi: dt3000: Fix signed integer overflow 'divider * base'
  iio: adc: max9611: Fix temperature reading in probe
  iio: frequency: adf4371: Fix output frequency setting
parents 359334ca 48b30e10
...@@ -480,7 +480,7 @@ static int max9611_init(struct max9611_dev *max9611) ...@@ -480,7 +480,7 @@ static int max9611_init(struct max9611_dev *max9611)
if (ret) if (ret)
return ret; return ret;
regval = ret & MAX9611_TEMP_MASK; regval &= MAX9611_TEMP_MASK;
if ((regval > MAX9611_TEMP_MAX_POS && if ((regval > MAX9611_TEMP_MAX_POS &&
regval < MAX9611_TEMP_MIN_NEG) || regval < MAX9611_TEMP_MIN_NEG) ||
......
...@@ -276,11 +276,11 @@ static int adf4371_set_freq(struct adf4371_state *st, unsigned long long freq, ...@@ -276,11 +276,11 @@ static int adf4371_set_freq(struct adf4371_state *st, unsigned long long freq,
st->buf[0] = st->integer >> 8; st->buf[0] = st->integer >> 8;
st->buf[1] = 0x40; /* REG12 default */ st->buf[1] = 0x40; /* REG12 default */
st->buf[2] = 0x00; st->buf[2] = 0x00;
st->buf[3] = st->fract2 & 0xFF; st->buf[3] = st->fract1 & 0xFF;
st->buf[4] = st->fract2 >> 7; st->buf[4] = st->fract1 >> 8;
st->buf[5] = st->fract2 >> 15; st->buf[5] = st->fract1 >> 16;
st->buf[6] = ADF4371_FRAC2WORD_L(st->fract2 & 0x7F) | st->buf[6] = ADF4371_FRAC2WORD_L(st->fract2 & 0x7F) |
ADF4371_FRAC1WORD(st->fract1 >> 23); ADF4371_FRAC1WORD(st->fract1 >> 24);
st->buf[7] = ADF4371_FRAC2WORD_H(st->fract2 >> 7); st->buf[7] = ADF4371_FRAC2WORD_H(st->fract2 >> 7);
st->buf[8] = st->mod2 & 0xFF; st->buf[8] = st->mod2 & 0xFF;
st->buf[9] = ADF4371_MOD2WORD(st->mod2 >> 8); st->buf[9] = ADF4371_MOD2WORD(st->mod2 >> 8);
......
...@@ -342,9 +342,9 @@ static irqreturn_t dt3k_interrupt(int irq, void *d) ...@@ -342,9 +342,9 @@ static irqreturn_t dt3k_interrupt(int irq, void *d)
static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec, static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
unsigned int flags) unsigned int flags)
{ {
int divider, base, prescale; unsigned int divider, base, prescale;
/* This function needs improvment */ /* This function needs improvement */
/* Don't know if divider==0 works. */ /* Don't know if divider==0 works. */
for (prescale = 0; prescale < 16; prescale++) { for (prescale = 0; prescale < 16; prescale++) {
...@@ -358,7 +358,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec, ...@@ -358,7 +358,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
divider = (*nanosec) / base; divider = (*nanosec) / base;
break; break;
case CMDF_ROUND_UP: case CMDF_ROUND_UP:
divider = (*nanosec) / base; divider = DIV_ROUND_UP(*nanosec, base);
break; break;
} }
if (divider < 65536) { if (divider < 65536) {
...@@ -368,7 +368,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec, ...@@ -368,7 +368,7 @@ static int dt3k_ns_to_timer(unsigned int timer_base, unsigned int *nanosec,
} }
prescale = 15; prescale = 15;
base = timer_base * (1 << prescale); base = timer_base * (prescale + 1);
divider = 65535; divider = 65535;
*nanosec = divider * base; *nanosec = divider * base;
return (prescale << 16) | (divider); return (prescale << 16) | (divider);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment