for (i = 0; i+1 < sz; i += 2) {
                w = (raw_data[i] << 8) | (raw_data[i+1]);
                rawir.pulse = !!(w & 0x8000);
-               rawir.duration = US_TO_NS(rawir.pulse ? (65536 - w) : w);
+               rawir.duration = rawir.pulse ? (65536 - w) : w;
                /* Quirk!! - see above */
-               if (i == 0 && rawir.duration > 15000000)
-                       rawir.duration -= 15000000;
+               if (i == 0 && rawir.duration > 15000)
+                       rawir.duration -= 15000;
                ir_raw_event_store(data->rc_dev, &rawir);
        }
        ir_raw_event_handle(data->rc_dev);
        rdev->dev.parent       = &data->hdev->dev;
        rdev->driver_name      = PICOLCD_NAME;
        rdev->map_name         = RC_MAP_RC6_MCE;
-       rdev->timeout          = MS_TO_NS(100);
-       rdev->rx_resolution    = US_TO_NS(1);
+       rdev->timeout          = MS_TO_US(100);
+       rdev->rx_resolution    = 1;
 
        ret = rc_register_device(rdev);
        if (ret)
 
        adap->rc->allowed_protocols = RC_PROTO_BIT_CEC;
        adap->rc->priv = adap;
        adap->rc->map_name = RC_MAP_CEC;
-       adap->rc->timeout = MS_TO_NS(550);
+       adap->rc->timeout = MS_TO_US(550);
 #endif
        return adap;
 }
 
        cec->ir->allowed_protocols = RC_PROTO_BIT_RC5;
        cec->ir->priv = cec;
        cec->ir->map_name = RC_MAP_HAUPPAUGE;
-       cec->ir->timeout = MS_TO_NS(100);
+       cec->ir->timeout = MS_TO_US(100);
 
        /* Clear the status register */
        status = smb_rd16(SECOCEC_STATUS_REG_1, &val);
 
 
        for (i = 0; i < len >> 2; i++) {
                struct ir_raw_event ev = {
-                       .duration = abs(samples[i]) * 1000, /* Convert to ns */
+                       .duration = abs(samples[i]),
                        .pulse = (samples[i] > 0) ? false : true
                };
 
                return -ENOMEM;
 
        coredev->ir.controller = 0;     /* Todo: vega/nova SPI number */
-       coredev->ir.timeout = IR_DEFAULT_TIMEOUT;
+       coredev->ir.timeout = US_TO_NS(IR_DEFAULT_TIMEOUT);
        pr_debug("IR port %d, timeout %d ms\n",
                        coredev->ir.controller, coredev->ir.timeout);
 
 
                }
 
                v = (unsigned) pulse_width_count_to_ns(
-                                 (u16) (p->hw_fifo_data & FIFO_RXTX), divider);
+                                 (u16)(p->hw_fifo_data & FIFO_RXTX), divider) / 1000;
                if (v > IR_MAX_DURATION)
                        v = IR_MAX_DURATION;
 
 
                }
 
                v = (unsigned) pulse_width_count_to_ns(
-                                 (u16) (p->hw_fifo_data & FIFO_RXTX), divider);
+                                 (u16)(p->hw_fifo_data & FIFO_RXTX), divider) / 1000;
                if (v > IR_MAX_DURATION)
                        v = IR_MAX_DURATION;
 
 
        dev->scancode_mask = hardware_mask;
 
        if (ir->sampling) {
-               dev->timeout = 10 * 1000 * 1000; /* 10 ms */
+               dev->timeout = MS_TO_US(10); /* 10 ms */
        } else {
                dev->driver_type = RC_DRIVER_SCANCODE;
                dev->allowed_protocols = rc_proto;
        for (todo = 32; todo > 0; todo -= bits) {
                ev.pulse = samples & 0x80000000 ? false : true;
                bits = min(todo, 32U - fls(ev.pulse ? samples : ~samples));
-               ev.duration = (bits * (NSEC_PER_SEC / 1000)) / ir_samplerate;
+               ev.duration = (bits * (USEC_PER_SEC / 1000)) / ir_samplerate;
                ir_raw_event_store_with_filter(ir->dev, &ev);
                samples <<= bits;
        }
 
                struct ir_raw_event rawir = {};
 
                rawir.pulse = 0;
-               rawir.duration = US_TO_NS(SMI_SAMPLE_PERIOD *
-                                         SMI_SAMPLE_IDLEMIN);
+               rawir.duration = SMI_SAMPLE_PERIOD * SMI_SAMPLE_IDLEMIN;
                ir_raw_event_store_with_filter(rc_dev, &rawir);
                smi_set(IR_Init_Reg, rbIRhighidle);
        }
        rc_dev->dev.parent = &dev->pci_dev->dev;
 
        rc_dev->map_name = dev->info->rc_map;
-       rc_dev->timeout = MS_TO_NS(100);
-       rc_dev->rx_resolution = US_TO_NS(SMI_SAMPLE_PERIOD);
+       rc_dev->timeout = MS_TO_US(100);
+       rc_dev->rx_resolution = SMI_SAMPLE_PERIOD;
 
        ir->rc_dev = rc_dev;
        ir->dev = dev;
 
 
 select_timeout:
        if (dev->rx_fan_input_inuse) {
-               dev->rdev->rx_resolution = US_TO_NS(ENE_FW_SAMPLE_PERIOD_FAN);
+               dev->rdev->rx_resolution = ENE_FW_SAMPLE_PERIOD_FAN;
 
                /* Fan input doesn't support timeouts, it just ends the
                        input with a maximum sample */
                dev->rdev->min_timeout = dev->rdev->max_timeout =
-                       US_TO_NS(ENE_FW_SMPL_BUF_FAN_MSK *
-                               ENE_FW_SAMPLE_PERIOD_FAN);
+                       ENE_FW_SMPL_BUF_FAN_MSK *
+                               ENE_FW_SAMPLE_PERIOD_FAN;
        } else {
-               dev->rdev->rx_resolution = US_TO_NS(sample_period);
+               dev->rdev->rx_resolution = sample_period;
 
                /* Theoreticly timeout is unlimited, but we cap it
                 * because it was seen that on one device, it
                 * would stop sending spaces after around 250 msec.
                 * Besides, this is close to 2^32 anyway and timeout is u32.
                 */
-               dev->rdev->min_timeout = US_TO_NS(127 * sample_period);
-               dev->rdev->max_timeout = US_TO_NS(200000);
+               dev->rdev->min_timeout = 127 * sample_period;
+               dev->rdev->max_timeout = 200000;
        }
 
        if (dev->hw_learning_and_tx_capable)
-               dev->rdev->tx_resolution = US_TO_NS(sample_period);
+               dev->rdev->tx_resolution = sample_period;
 
        if (dev->rdev->timeout > dev->rdev->max_timeout)
                dev->rdev->timeout = dev->rdev->max_timeout;
 
                dbg("RX: %d (%s)", hw_sample, pulse ? "pulse" : "space");
 
-               ev.duration = US_TO_NS(hw_sample);
+               ev.duration = hw_sample;
                ev.pulse = pulse;
                ir_raw_event_store_with_filter(dev->rdev, &ev);
        }
        dev->learning_mode_enabled = learning_mode_force;
 
        /* Set reasonable default timeout */
-       dev->rdev->timeout = US_TO_NS(150000);
+       dev->rdev->timeout = MS_TO_US(150);
 }
 
 /* Upload all hardware settings at once. Used at load and resume time */
 
                case PARSE_IRDATA:
                        fintek->rem--;
                        rawir.pulse = ((sample & BUF_PULSE_BIT) != 0);
-                       rawir.duration = US_TO_NS((sample & BUF_SAMPLE_MASK)
-                                         * CIR_SAMPLE_PERIOD);
+                       rawir.duration = (sample & BUF_SAMPLE_MASK)
+                                         * CIR_SAMPLE_PERIOD;
 
                        fit_dbg("Storing %s with duration %d",
                                rawir.pulse ? "pulse" : "space",
        rdev->dev.parent = &pdev->dev;
        rdev->driver_name = FINTEK_DRIVER_NAME;
        rdev->map_name = RC_MAP_RC6_MCE;
-       rdev->timeout = US_TO_NS(1000);
+       rdev->timeout = 1000;
        /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
-       rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
+       rdev->rx_resolution = CIR_SAMPLE_PERIOD;
 
        fintek->rdev = rdev;
 
 
                                                                overflow);
 
                do {
-                       rawir.duration = ir->buf_in[i] * 85333;
+                       rawir.duration = ir->buf_in[i] * 85;
                        rawir.pulse = i & 1;
 
                        ir_raw_event_store_with_filter(ir->rc, &rawir);
        rc->priv = ir;
        rc->driver_name = DRIVER_NAME;
        rc->map_name = RC_MAP_HAUPPAUGE;
-       rc->timeout = MS_TO_NS(100);
-       rc->rx_resolution = 85333;
+       rc->timeout = MS_TO_US(100);
+       rc->rx_resolution = 85;
 
        ir->rc = rc;
        ret = rc_register_device(rc);
 
 #define MAX_IN_PACKET          8u
 #define MAX_OUT_PACKET         (sizeof(struct send_packet) + BUF_SIZE)
 #define TIMEOUT                        1000
-#define RX_RESOLUTION          21333
+#define RX_RESOLUTION          21
 
 struct packet {
        uint16_t start;
                for (i = 0; i < 7; i++) {
                        if (ir->buf_in[i] == 0x80) {
                                rawir.pulse = false;
-                               rawir.duration = US_TO_NS(21845);
+                               rawir.duration = 21845;
                        } else {
                                rawir.pulse = (ir->buf_in[i] & 0x80) == 0;
                                rawir.duration = ((ir->buf_in[i] & 0x7f) + 1) *
 
 #include <media/rc-core.h>
 
 /* Each bit is 250us */
-#define BIT_DURATION 250000
+#define BIT_DURATION 250
 
 struct imon {
        struct device *dev;
 
                        data_h =  ((symb_val >> 16) & 0xffff) * 10;
                        symb_time = (data_l + data_h) / 10;
 
-                       ev.duration = US_TO_NS(data_l);
+                       ev.duration = data_l;
                        ev.pulse = true;
                        ir_raw_event_store(priv->rdev, &ev);
 
                        if (symb_time < IR_CFG_SYMBOL_MAXWIDTH) {
-                               ev.duration = US_TO_NS(data_h);
+                               ev.duration = data_h;
                                ev.pulse = false;
                                ir_raw_event_store(priv->rdev, &ev);
                        } else {
        rdev->input_id.vendor = 0x0001;
        rdev->input_id.product = 0x0001;
        rdev->input_id.version = 0x0100;
-       rdev->rx_resolution = US_TO_NS(10);
-       rdev->timeout = US_TO_NS(IR_CFG_SYMBOL_MAXWIDTH * 10);
+       rdev->rx_resolution = 10;
+       rdev->timeout = IR_CFG_SYMBOL_MAXWIDTH * 10;
 
        ret = rc_register_device(rdev);
        if (ret < 0)
 
 #include <linux/module.h>
 #include "rc-core-priv.h"
 
-#define IMON_UNIT              415662 /* ns */
+#define IMON_UNIT              416 /* us */
 #define IMON_BITS              30
 #define IMON_CHKBITS           (BIT(30) | BIT(25) | BIT(24) | BIT(22) | \
                                 BIT(21) | BIT(20) | BIT(19) | BIT(18) | \
 
        dev_dbg(&dev->dev,
                "iMON decode started at state %d bitno %d (%uus %s)\n",
-               data->state, data->count, TO_US(ev.duration),
-               TO_STR(ev.pulse));
+               data->state, data->count, ev.duration, TO_STR(ev.pulse));
 
        /*
         * Since iMON protocol is a series of bits, if at any point
         * we're at a new scancode.
         */
        if (data->state == STATE_ERROR) {
-               if (!ev.pulse && ev.duration > MS_TO_NS(10))
+               if (!ev.pulse && ev.duration > MS_TO_US(10))
                        data->state = STATE_INACTIVE;
                return 0;
        }
 err_out:
        dev_dbg(&dev->dev,
                "iMON decode failed at state %d bitno %d (%uus %s)\n",
-               data->state, data->count, TO_US(ev.duration),
-               TO_STR(ev.pulse));
+               data->state, data->count, ev.duration, TO_STR(ev.pulse));
 
        data->state = STATE_ERROR;
 
 
 #include "rc-core-priv.h"
 
 #define JVC_NBITS              16              /* dev(8) + func(8) */
-#define JVC_UNIT               525000          /* ns */
+#define JVC_UNIT               525             /* us */
 #define JVC_HEADER_PULSE       (16 * JVC_UNIT) /* lack of header -> repeat */
 #define JVC_HEADER_SPACE       (8  * JVC_UNIT)
 #define JVC_BIT_PULSE          (1  * JVC_UNIT)
                goto out;
 
        dev_dbg(&dev->dev, "JVC decode started at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
 again:
        switch (data->state) {
 
 out:
        dev_dbg(&dev->dev, "JVC decode failed at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
  * input device for the remote, rather than the keyboard/mouse one.
  */
 
-#define MCIR2_UNIT             333333  /* ns */
+#define MCIR2_UNIT             333     /* us */
 #define MCIR2_HEADER_NBITS     5
 #define MCIR2_MOUSE_NBITS      29
 #define MCIR2_KEYBOARD_NBITS   32
 
 again:
        dev_dbg(&dev->dev, "started at state %i (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        if (!geq_margin(ev.duration, MCIR2_UNIT, MCIR2_UNIT / 2))
                return 0;
 
 out:
        dev_dbg(&dev->dev, "failed at state %i (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #include "rc-core-priv.h"
 
 #define NEC_NBITS              32
-#define NEC_UNIT               562500  /* ns */
+#define NEC_UNIT               563  /* us */
 #define NEC_HEADER_PULSE       (16 * NEC_UNIT)
 #define NECX_HEADER_PULSE      (8  * NEC_UNIT) /* Less common NEC variant */
 #define NEC_HEADER_SPACE       (8  * NEC_UNIT)
        }
 
        dev_dbg(&dev->dev, "NEC decode started at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        switch (data->state) {
 
        }
 
        dev_dbg(&dev->dev, "NEC decode failed at count %d state %d (%uus %s)\n",
-               data->count, data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->count, data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #define RC5_SZ_NBITS           15
 #define RC5X_NBITS             20
 #define CHECK_RC5X_NBITS       8
-#define RC5_UNIT               888888 /* ns */
+#define RC5_UNIT               889 /* us */
 #define RC5_BIT_START          (1 * RC5_UNIT)
 #define RC5_BIT_END            (1 * RC5_UNIT)
 #define RC5X_SPACE             (4 * RC5_UNIT)
 
 again:
        dev_dbg(&dev->dev, "RC5(x/sz) decode started at state %i (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        if (!geq_margin(ev.duration, RC5_UNIT, RC5_UNIT / 2))
                return 0;
 
 out:
        dev_dbg(&dev->dev, "RC5(x/sz) decode failed at state %i count %d (%uus %s)\n",
-               data->state, data->count, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, data->count, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
  * RC6-6A-32   (MCE version with toggle bit in body)
  */
 
-#define RC6_UNIT               444444  /* nanosecs */
+#define RC6_UNIT               444     /* microseconds */
 #define RC6_HEADER_NBITS       4       /* not including toggle bit */
 #define RC6_0_NBITS            16
 #define RC6_6A_32_NBITS                32
 
 again:
        dev_dbg(&dev->dev, "RC6 decode started at state %i (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        if (!geq_margin(ev.duration, RC6_UNIT, RC6_UNIT / 2))
                return 0;
 
 out:
        dev_dbg(&dev->dev, "RC6 decode failed at state %i (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #include "rc-core-priv.h"
 #include <linux/module.h>
 
-#define RCMM_UNIT              166667  /* nanosecs */
-#define RCMM_PREFIX_PULSE      416666  /* 166666.666666666*2.5 */
-#define RCMM_PULSE_0            277777  /* 166666.666666666*(1+2/3) */
-#define RCMM_PULSE_1            444444  /* 166666.666666666*(2+2/3) */
-#define RCMM_PULSE_2            611111  /* 166666.666666666*(3+2/3) */
-#define RCMM_PULSE_3            777778  /* 166666.666666666*(4+2/3) */
+#define RCMM_UNIT              166  /* microseconds */
+#define RCMM_PREFIX_PULSE      417  /* 166.666666666666*2.5 */
+#define RCMM_PULSE_0            278  /* 166.666666666666*(1+2/3) */
+#define RCMM_PULSE_1            444  /* 166.666666666666*(2+2/3) */
+#define RCMM_PULSE_2            611  /* 166.666666666666*(3+2/3) */
+#define RCMM_PULSE_3            778  /* 166.666666666666*(4+2/3) */
 
 enum rcmm_state {
        STATE_INACTIVE,
        int value;
 
        if (!(dev->enabled_protocols & (RC_PROTO_BIT_RCMM32 |
-                                                       RC_PROTO_BIT_RCMM24 |
-                                                       RC_PROTO_BIT_RCMM12)))
+                                       RC_PROTO_BIT_RCMM24 |
+                                       RC_PROTO_BIT_RCMM12)))
                return 0;
 
        if (!is_timing_event(ev)) {
        }
 
        dev_dbg(&dev->dev, "RC-MM decode failed at count %d state %d (%uus %s)\n",
-               data->count, data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->count, data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #include "rc-core-priv.h"
 
 #define SANYO_NBITS            (13+13+8+8)
-#define SANYO_UNIT             562500  /* ns */
+#define SANYO_UNIT             563  /* us */
 #define SANYO_HEADER_PULSE     (16  * SANYO_UNIT)
 #define SANYO_HEADER_SPACE     (8   * SANYO_UNIT)
 #define SANYO_BIT_PULSE                (1   * SANYO_UNIT)
        }
 
        dev_dbg(&dev->dev, "SANYO decode started at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        switch (data->state) {
 
        }
 
        dev_dbg(&dev->dev, "SANYO decode failed at count %d state %d (%uus %s)\n",
-               data->count, data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->count, data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #include "rc-core-priv.h"
 
 #define SHARP_NBITS            15
-#define SHARP_UNIT             40000  /* ns */
+#define SHARP_UNIT             40  /* us */
 #define SHARP_BIT_PULSE                (8    * SHARP_UNIT) /* 320us */
 #define SHARP_BIT_0_PERIOD     (25   * SHARP_UNIT) /* 1ms (680us space) */
 #define SHARP_BIT_1_PERIOD     (50   * SHARP_UNIT) /* 2ms (1680ms space) */
        }
 
        dev_dbg(&dev->dev, "Sharp decode started at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        switch (data->state) {
 
        }
 
        dev_dbg(&dev->dev, "Sharp decode failed at count %d state %d (%uus %s)\n",
-               data->count, data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->count, data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #include <linux/module.h>
 #include "rc-core-priv.h"
 
-#define SONY_UNIT              600000 /* ns */
+#define SONY_UNIT              600 /* us */
 #define SONY_HEADER_PULSE      (4 * SONY_UNIT)
 #define        SONY_HEADER_SPACE       (1 * SONY_UNIT)
 #define SONY_BIT_0_PULSE       (1 * SONY_UNIT)
                goto out;
 
        dev_dbg(&dev->dev, "Sony decode started at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
 
        switch (data->state) {
 
 
 out:
        dev_dbg(&dev->dev, "Sony decode failed at state %d (%uus %s)\n",
-               data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 
 
 #include <linux/module.h>
 #include "rc-core-priv.h"
 
-#define XMP_UNIT                 136000 /* ns */
-#define XMP_LEADER               210000 /* ns */
-#define XMP_NIBBLE_PREFIX        760000 /* ns */
-#define        XMP_HALFFRAME_SPACE     13800000 /* ns */
-#define        XMP_TRAILER_SPACE       20000000 /* should be 80ms but not all dureation supliers can go that high */
+#define XMP_UNIT                 136 /* us */
+#define XMP_LEADER               210 /* us */
+#define XMP_NIBBLE_PREFIX        760 /* us */
+#define        XMP_HALFFRAME_SPACE     13800 /* us */
+/* should be 80ms but not all duration supliers can go that high */
+#define        XMP_TRAILER_SPACE       20000
 
 enum xmp_state {
        STATE_INACTIVE,
        }
 
        dev_dbg(&dev->dev, "XMP decode started at state %d %d (%uus %s)\n",
-               data->state, data->count, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->state, data->count, ev.duration, TO_STR(ev.pulse));
 
        switch (data->state) {
 
        }
 
        dev_dbg(&dev->dev, "XMP decode failed at count %d state %d (%uus %s)\n",
-               data->count, data->state, TO_US(ev.duration), TO_STR(ev.pulse));
+               data->count, data->state, ev.duration, TO_STR(ev.pulse));
        data->state = STATE_INACTIVE;
        return -EINVAL;
 }
 
 #define LEN_SAMPLEMODEPROTO 3
 
 #define MIN_FW_VERSION 20
-#define UNIT_NS 21333
-#define MAX_TIMEOUT_NS (UNIT_NS * U16_MAX)
+#define UNIT_US 21
+#define MAX_TIMEOUT_US (UNIT_US * U16_MAX)
 
 #define MAX_PACKET 64
 
                        if (v == 0xffff) {
                                rawir.pulse = false;
                        } else {
-                               rawir.duration = v * UNIT_NS;
+                               rawir.duration = v * UNIT_US;
                                ir_raw_event_store_with_timeout(irtoy->rc,
                                                                &rawir);
                        }
                return -ENOMEM;
 
        for (i = 0; i < count; i++) {
-               u16 v = DIV_ROUND_CLOSEST(US_TO_NS(txbuf[i]), UNIT_NS);
+               u16 v = DIV_ROUND_CLOSEST(txbuf[i], UNIT_US);
 
                if (!v)
                        v = 1;
        rc->tx_ir = irtoy_tx;
        rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
        rc->map_name = RC_MAP_RC6_MCE;
-       rc->rx_resolution = UNIT_NS;
+       rc->rx_resolution = UNIT_US;
        rc->timeout = IR_DEFAULT_TIMEOUT;
 
        /*
         *
         * So, make timeout a largish minimum which works with most protocols.
         */
-       rc->min_timeout = MS_TO_NS(40);
-       rc->max_timeout = MAX_TIMEOUT_NS;
+       rc->min_timeout = MS_TO_US(40);
+       rc->max_timeout = MAX_TIMEOUT_US;
 
        err = rc_register_device(rc);
        if (err)
 
        if (next_one > 0) {
                ev.pulse = true;
                ev.duration =
-                   ITE_BITS_TO_NS(next_one, sample_period);
+                   ITE_BITS_TO_US(next_one, sample_period);
                ir_raw_event_store_with_filter(dev->rdev, &ev);
        }
 
        while (next_one < size) {
                next_zero = find_next_zero_bit_le(ldata, size, next_one + 1);
                ev.pulse = false;
-               ev.duration = ITE_BITS_TO_NS(next_zero - next_one, sample_period);
+               ev.duration = ITE_BITS_TO_US(next_zero - next_one, sample_period);
                ir_raw_event_store_with_filter(dev->rdev, &ev);
 
                if (next_zero < size) {
                                                     next_zero + 1);
                        ev.pulse = true;
                        ev.duration =
-                           ITE_BITS_TO_NS(next_one - next_zero,
+                           ITE_BITS_TO_US(next_one - next_zero,
                                           sample_period);
                        ir_raw_event_store_with_filter
                            (dev->rdev, &ev);
        rdev->timeout = IR_DEFAULT_TIMEOUT;
        rdev->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
        rdev->rx_resolution = ITE_BAUDRATE_DIVISOR *
-                               itdev->params.sample_period;
+                               itdev->params.sample_period / 1000;
        rdev->tx_resolution = ITE_BAUDRATE_DIVISOR *
-                               itdev->params.sample_period;
+                               itdev->params.sample_period / 1000;
 
        /* set up transmitter related values if needed */
        if (itdev->params.hw_tx_capable) {
 
 #define ITE_DEFAULT_CARRIER_FREQ       38000
 
 /* convert bits to us */
-#define ITE_BITS_TO_NS(bits, sample_period) \
-((u32) ((bits) * ITE_BAUDRATE_DIVISOR * sample_period))
+#define ITE_BITS_TO_US(bits, sample_period) \
+((u32)((bits) * ITE_BAUDRATE_DIVISOR * (sample_period) / 1000))
 
 /*
  * n in RDCR produces a tolerance of +/- n * 6.25% around the center
 
                dev->gap = true;
                dev->gap_duration = ev.duration;
 
-               sample = LIRC_TIMEOUT(ev.duration / 1000);
+               sample = LIRC_TIMEOUT(ev.duration);
                dev_dbg(&dev->dev, "timeout report (duration: %d)\n", sample);
 
        /* Normal sample */
        } else {
                if (dev->gap) {
-                       dev->gap_duration += ktime_to_ns(ktime_sub(ktime_get(),
+                       dev->gap_duration += ktime_to_us(ktime_sub(ktime_get(),
                                                         dev->gap_start));
 
-                       /* Convert to ms and cap by LIRC_VALUE_MASK */
-                       do_div(dev->gap_duration, 1000);
+                       /* Cap by LIRC_VALUE_MASK */
                        dev->gap_duration = min_t(u64, dev->gap_duration,
                                                  LIRC_VALUE_MASK);
 
                        dev->gap = false;
                }
 
-               sample = ev.pulse ? LIRC_PULSE(ev.duration / 1000) :
-                                       LIRC_SPACE(ev.duration / 1000);
+               sample = ev.pulse ? LIRC_PULSE(ev.duration) :
+                                       LIRC_SPACE(ev.duration);
                dev_dbg(&dev->dev, "delivering %uus %s to lirc_dev\n",
-                       TO_US(ev.duration), TO_STR(ev.pulse));
+                       ev.duration, TO_STR(ev.pulse));
        }
 
        /*
                }
 
                for (i = 0; i < count; i++)
-                       /* Convert from NS to US */
-                       txbuf[i] = DIV_ROUND_UP(raw[i].duration, 1000);
+                       txbuf[i] = raw[i].duration;
 
                if (dev->s_tx_carrier) {
                        int carrier = ir_raw_encode_carrier(scan.rc_proto);
        }
 
        for (i = 0; i < count; i++) {
-               if (txbuf[i] > IR_MAX_DURATION / 1000 - duration || !txbuf[i]) {
+               if (txbuf[i] > IR_MAX_DURATION - duration || !txbuf[i]) {
                        ret = -EINVAL;
                        goto out_kfree;
                }
                if (!dev->rx_resolution)
                        ret = -ENOTTY;
                else
-                       val = dev->rx_resolution / 1000;
+                       val = dev->rx_resolution;
                break;
 
        case LIRC_SET_WIDEBAND_RECEIVER:
                if (!dev->max_timeout)
                        ret = -ENOTTY;
                else
-                       val = DIV_ROUND_UP(dev->min_timeout, 1000);
+                       val = dev->min_timeout;
                break;
 
        case LIRC_GET_MAX_TIMEOUT:
                if (!dev->max_timeout)
                        ret = -ENOTTY;
                else
-                       val = dev->max_timeout / 1000;
+                       val = dev->max_timeout;
                break;
 
        case LIRC_SET_REC_TIMEOUT:
                if (!dev->max_timeout) {
                        ret = -ENOTTY;
-               } else if (val > U32_MAX / 1000) {
-                       /* Check for multiply overflow */
-                       ret = -EINVAL;
                } else {
-                       u32 tmp = val * 1000;
-
-                       if (tmp < dev->min_timeout || tmp > dev->max_timeout)
+                       if (val < dev->min_timeout || val > dev->max_timeout)
                                ret = -EINVAL;
                        else if (dev->s_timeout)
-                               ret = dev->s_timeout(dev, tmp);
+                               ret = dev->s_timeout(dev, val);
                        else
-                               dev->timeout = tmp;
+                               dev->timeout = val;
                }
                break;
 
                if (!dev->timeout)
                        ret = -ENOTTY;
                else
-                       val = DIV_ROUND_UP(dev->timeout, 1000);
+                       val = dev->timeout;
                break;
 
        case LIRC_SET_REC_TIMEOUT_REPORTS:
 
        struct mceusb_dev *ir = dev->priv;
        unsigned int units;
 
-       units = DIV_ROUND_CLOSEST(timeout, US_TO_NS(MCE_TIME_UNIT));
+       units = DIV_ROUND_CLOSEST(timeout, MCE_TIME_UNIT);
 
        cmdbuf[2] = units >> 8;
        cmdbuf[3] = units;
        switch (subcmd) {
        /* 2-byte return value commands */
        case MCE_RSP_EQIRTIMEOUT:
-               ir->rc->timeout = US_TO_NS((*hi << 8 | *lo) * MCE_TIME_UNIT);
+               ir->rc->timeout = (*hi << 8 | *lo) * MCE_TIME_UNIT;
                break;
        case MCE_RSP_EQIRNUMPORTS:
                ir->num_txports = *hi;
                                ir->pulse_tunit += rawir.duration;
                                ir->pulse_count++;
                        }
-                       rawir.duration *= US_TO_NS(MCE_TIME_UNIT);
+                       rawir.duration *= MCE_TIME_UNIT;
 
-                       dev_dbg(ir->dev, "Storing %s %u ns (%02x)",
+                       dev_dbg(ir->dev, "Storing %s %u us (%02x)",
                                rawir.pulse ? "pulse" : "space",
                                rawir.duration, ir->buf_in[i]);
 
        rc->dev.parent = dev;
        rc->priv = ir;
        rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
-       rc->min_timeout = US_TO_NS(MCE_TIME_UNIT);
-       rc->timeout = MS_TO_NS(100);
+       rc->min_timeout = MCE_TIME_UNIT;
+       rc->timeout = MS_TO_US(100);
        if (!mceusb_model[ir->model].broken_irtimeout) {
                rc->s_timeout = mceusb_set_timeout;
                rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
 
 
        duration = readl_relaxed(ir->reg + IR_DEC_REG1);
        duration = FIELD_GET(REG1_TIME_IV_MASK, duration);
-       rawir.duration = US_TO_NS(duration * MESON_TRATE);
+       rawir.duration = duration * MESON_TRATE;
 
        status = readl_relaxed(ir->reg + IR_DEC_STATUS);
        rawir.pulse = !!(status & STATUS_IR_DEC_IN);
        map_name = of_get_property(node, "linux,rc-map-name", NULL);
        ir->rc->map_name = map_name ? map_name : RC_MAP_EMPTY;
        ir->rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
-       ir->rc->rx_resolution = US_TO_NS(MESON_TRATE);
+       ir->rc->rx_resolution = MESON_TRATE;
        ir->rc->min_timeout = 1;
        ir->rc->timeout = IR_DEFAULT_TIMEOUT;
        ir->rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
 
 #define MTK_IR_END(v, p)         ((v) == MTK_MAX_SAMPLES && (p) == 0)
 /* Number of registers to record the pulse width */
 #define MTK_CHKDATA_SZ           17
-/* Sample period in ns */
-#define MTK_IR_SAMPLE            46000
+/* Sample period in us */
+#define MTK_IR_SAMPLE            46
 
 enum mtk_fields {
        /* Register to setting software sampling period */
 
 
        /* Inspect the ir samples */
        for (i = 0, count = 0; i < ret && count < WAKEUP_MAX_SIZE; ++i) {
-               /* NS to US */
-               val = DIV_ROUND_UP(raw[i].duration, 1000L) / SAMPLE_PERIOD;
+               val = raw[i].duration / SAMPLE_PERIOD;
 
                /* Split too large values into several smaller ones */
                while (val > 0 && count < WAKEUP_MAX_SIZE) {
                sample = nvt->buf[i];
 
                rawir.pulse = ((sample & BUF_PULSE_BIT) != 0);
-               rawir.duration = US_TO_NS((sample & BUF_LEN_MASK)
-                                         * SAMPLE_PERIOD);
+               rawir.duration = (sample & BUF_LEN_MASK) * SAMPLE_PERIOD;
 
                nvt_dbg("Storing %s with duration %d",
                        rawir.pulse ? "pulse" : "space", rawir.duration);
        rdev->input_id.version = nvt->chip_minor;
        rdev->driver_name = NVT_DRIVER_NAME;
        rdev->map_name = RC_MAP_RC6_MCE;
-       rdev->timeout = MS_TO_NS(100);
+       rdev->timeout = MS_TO_US(100);
        /* rx resolution is hardwired to 50us atm, 1, 25, 100 also possible */
-       rdev->rx_resolution = US_TO_NS(CIR_SAMPLE_PERIOD);
+       rdev->rx_resolution = CIR_SAMPLE_PERIOD;
 #if 0
        rdev->min_timeout = XYZ;
        rdev->max_timeout = XYZ;
 
 #define CIR_IOREG_LENGTH       0x0f
 
 /* RX limit length, 8 high bits for SLCH, 8 low bits for SLCL */
-#define CIR_RX_LIMIT_COUNT  (IR_DEFAULT_TIMEOUT / US_TO_NS(SAMPLE_PERIOD))
+#define CIR_RX_LIMIT_COUNT  (IR_DEFAULT_TIMEOUT / SAMPLE_PERIOD)
 
 /* CIR Regs */
 #define CIR_IRCON      0x00
 
        return !ev.carrier_report && !ev.reset;
 }
 
-#define TO_US(duration)                        DIV_ROUND_CLOSEST((duration), 1000)
 #define TO_STR(is_pulse)               ((is_pulse) ? "pulse" : "space")
 
 /* functions for IR encoders */
 
                return -EINVAL;
 
        dev_dbg(&dev->dev, "sample: (%05dus %s)\n",
-               TO_US(ev->duration), TO_STR(ev->pulse));
+               ev->duration, TO_STR(ev->pulse));
 
        if (!kfifo_put(&dev->raw->kfifo, *ev)) {
                dev_err(&dev->dev, "IR event FIFO is full!\n");
                return -EINVAL;
 
        now = ktime_get();
-       ev.duration = ktime_to_ns(ktime_sub(now, dev->raw->last_event));
+       ev.duration = ktime_to_us(ktime_sub(now, dev->raw->last_event));
        ev.pulse = !pulse;
 
        return ir_raw_event_store_with_timeout(dev, &ev);
        if (timeout == 0)
                timeout = IR_DEFAULT_TIMEOUT;
        else
-               timeout += MS_TO_NS(10);
+               timeout += MS_TO_US(10);
 
        if (timeout < dev->min_timeout)
                timeout = dev->min_timeout;
 
        spin_lock_irqsave(&dev->raw->edge_spinlock, flags);
        interval = ktime_sub(ktime_get(), dev->raw->last_event);
-       if (ktime_to_ns(interval) >= dev->timeout) {
+       if (ktime_to_us(interval) >= dev->timeout) {
                struct ir_raw_event ev = {
                        .timeout = true,
-                       .duration = ktime_to_ns(interval)
+                       .duration = ktime_to_us(interval)
                };
 
                ir_raw_event_store(dev, &ev);
        } else {
                mod_timer(&dev->raw->edge_handle,
-                         jiffies + nsecs_to_jiffies(dev->timeout -
-                                                    ktime_to_ns(interval)));
+                         jiffies + usecs_to_jiffies(dev->timeout -
+                                                    ktime_to_us(interval)));
        }
        spin_unlock_irqrestore(&dev->raw->edge_spinlock, flags);
 
 
 
        for (i = 0; i < count; i++) {
                rawir.pulse = i % 2 ? false : true;
-               rawir.duration = txbuf[i] * 1000;
+               rawir.duration = txbuf[i];
                if (rawir.duration)
                        ir_raw_event_store_with_filter(dev, &rawir);
        }
        rc->allowed_protocols   = RC_PROTO_BIT_ALL_IR_DECODER;
        rc->allowed_wakeup_protocols = RC_PROTO_BIT_ALL_IR_ENCODER;
        rc->encode_wakeup       = true;
-       rc->timeout             = 100 * 1000 * 1000; /* 100 ms */
+       rc->timeout             = MS_TO_US(100); /* 100 ms */
        rc->min_timeout         = 1;
        rc->max_timeout         = UINT_MAX;
-       rc->rx_resolution       = 1000;
-       rc->tx_resolution       = 1000;
+       rc->rx_resolution       = 1;
+       rc->tx_resolution       = 1;
        rc->s_tx_mask           = loop_set_tx_mask;
        rc->s_tx_carrier        = loop_set_tx_carrier;
        rc->s_tx_duty_cycle     = loop_set_tx_duty_cycle;
 
 {
        struct ir_raw_event rawir = {};
        struct device *dev;
-       unsigned int i, sig_size, single_len, offset, val;
+       unsigned int i, sig_size, offset, val;
        u32 mod_freq;
 
        dev = rr3->dev;
        for (i = 0; i < sig_size; i++) {
                offset = rr3->irdata.sigdata[i];
                val = get_unaligned_be16(&rr3->irdata.lens[offset]);
-               single_len = redrat3_len_to_us(val);
 
                /* we should always get pulse/space/pulse/space samples */
                if (i % 2)
                else
                        rawir.pulse = true;
 
-               rawir.duration = US_TO_NS(single_len);
+               rawir.duration = redrat3_len_to_us(val);
                /* cap the value to IR_MAX_DURATION */
                rawir.duration = (rawir.duration > IR_MAX_DURATION) ?
                                 IR_MAX_DURATION : rawir.duration;
        return timeout;
 }
 
-static int redrat3_set_timeout(struct rc_dev *rc_dev, unsigned int timeoutns)
+static int redrat3_set_timeout(struct rc_dev *rc_dev, unsigned int timeoutus)
 {
        struct redrat3_dev *rr3 = rc_dev->priv;
        struct usb_device *udev = rr3->udev;
        if (!timeout)
                return -ENOMEM;
 
-       *timeout = cpu_to_be32(redrat3_us_to_len(timeoutns / 1000));
+       *timeout = cpu_to_be32(redrat3_us_to_len(timeoutus));
        ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), RR3_SET_IR_PARAM,
                     USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
                     RR3_IR_IO_SIG_TIMEOUT, 0, timeout, sizeof(*timeout),
        rc->dev.parent = dev;
        rc->priv = rr3;
        rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
-       rc->min_timeout = MS_TO_NS(RR3_RX_MIN_TIMEOUT);
-       rc->max_timeout = MS_TO_NS(RR3_RX_MAX_TIMEOUT);
-       rc->timeout = US_TO_NS(redrat3_get_timeout(rr3));
+       rc->min_timeout = MS_TO_US(RR3_RX_MIN_TIMEOUT);
+       rc->max_timeout = MS_TO_US(RR3_RX_MAX_TIMEOUT);
+       rc->timeout = redrat3_get_timeout(rr3);
        rc->s_timeout = redrat3_set_timeout;
        rc->tx_ir = redrat3_transmit_ir;
        rc->s_tx_carrier = redrat3_set_tx_carrier;
        rc->s_carrier_report = redrat3_wideband_receiver;
        rc->driver_name = DRIVER_NAME;
-       rc->rx_resolution = US_TO_NS(2);
+       rc->rx_resolution = 2;
        rc->map_name = RC_MAP_HAUPPAUGE;
 
        ret = rc_register_device(rc);
 
 
        if (ptr > 0 && is_pulse) {
                pulse += l;
-               if (pulse > 250000) {
+               if (pulse > 250) {
                        ev.duration = space;
                        ev.pulse = false;
                        ir_raw_event_store_with_filter(serial_ir.rcdev, &ev);
        }
        if (!is_pulse) {
                if (ptr == 0) {
-                       if (l > 20000000) {
+                       if (l > 20000) {
                                space = l;
                                ptr++;
                                return;
                        }
                } else {
-                       if (l > 20000000) {
+                       if (l > 20000) {
                                space += pulse;
                                if (space > IR_MAX_DURATION)
                                        space = IR_MAX_DURATION;
                                        sense = sense ? 0 : 1;
                                }
                        } else {
-                               data = ktime_to_ns(delkt);
+                               data = ktime_to_us(delkt);
                        }
                        frbwrite(data, !(dcd ^ sense));
                        serial_ir.lastkt = kt;
        rcdev->min_timeout = 1;
        rcdev->timeout = IR_DEFAULT_TIMEOUT;
        rcdev->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
-       rcdev->rx_resolution = 250000;
+       rcdev->rx_resolution = 250;
 
        serial_ir.rcdev = rcdev;
 
 
        } else {
                val += TIME_CONST / 2;
        }
-       ev.duration = US_TO_NS(val);
+       ev.duration = val;
 
        ir_raw_event_store_with_filter(rcdev, &ev);
 }
 
                                mark /= dev->sample_div;
                        }
 
-                       ev.duration = US_TO_NS(mark);
+                       ev.duration = mark;
                        ev.pulse = true;
                        ir_raw_event_store(dev->rdev, &ev);
 
                        if (!last_symbol) {
-                               ev.duration = US_TO_NS(symbol);
+                               ev.duration = symbol;
                                ev.pulse = false;
                                ir_raw_event_store(dev->rdev, &ev);
                        } else  {
        rdev->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
        /* rx sampling rate is 10Mhz */
        rdev->rx_resolution = 100;
-       rdev->timeout = US_TO_NS(MAX_SYMB_TIME);
+       rdev->timeout = MAX_SYMB_TIME;
        rdev->priv = rc_dev;
        rdev->open = st_rc_open;
        rdev->close = st_rc_close;
 
                } else {
                        rawir.duration = delta;
                        rawir.duration -= sz->sum;
-                       rawir.duration = US_TO_NS(rawir.duration);
                        rawir.duration = (rawir.duration > IR_MAX_DURATION) ?
                                         IR_MAX_DURATION : rawir.duration;
                }
        rawir.duration = ((int) value) * SZ_RESOLUTION;
        rawir.duration += SZ_RESOLUTION / 2;
        sz->sum += rawir.duration;
-       rawir.duration = US_TO_NS(rawir.duration);
        rawir.duration = (rawir.duration > IR_MAX_DURATION) ?
                         IR_MAX_DURATION : rawir.duration;
        sz_push(sz, rawir);
        rawir.duration = ((int) value) * SZ_RESOLUTION;
        rawir.duration += SZ_RESOLUTION / 2;
        sz->sum += rawir.duration;
-       rawir.duration = US_TO_NS(rawir.duration);
        sz_push(sz, rawir);
 }
 
        sz->decoder_state = PulseSpace;
        /* FIXME: don't yet have a way to set this */
        sz->timeout_enabled = true;
-       sz->rdev->timeout = ((US_TO_NS(SZ_TIMEOUT * SZ_RESOLUTION) &
-                               IR_MAX_DURATION) | 0x03000000);
+       sz->rdev->timeout = SZ_TIMEOUT * SZ_RESOLUTION;
        #if 0
        /* not yet supported, depends on patches from maxim */
        /* see also: LIRC_GET_REC_RESOLUTION and LIRC_SET_REC_TIMEOUT */
-       sz->min_timeout = US_TO_NS(SZ_TIMEOUT * SZ_RESOLUTION);
-       sz->max_timeout = US_TO_NS(SZ_TIMEOUT * SZ_RESOLUTION);
+       sz->min_timeout = SZ_TIMEOUT * SZ_RESOLUTION;
+       sz->max_timeout = SZ_TIMEOUT * SZ_RESOLUTION;
        #endif
 
        sz->signal_start = ktime_get_real();
 
        ir->rc->dev.parent = dev;
        ir->rc->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
        /* Frequency after IR internal divider with sample period in ns */
-       ir->rc->rx_resolution = (1000000000ul / (b_clk_freq / 64));
-       ir->rc->timeout = MS_TO_NS(SUNXI_IR_TIMEOUT);
+       ir->rc->rx_resolution = (USEC_PER_SEC / (b_clk_freq / 64));
+       ir->rc->timeout = MS_TO_US(SUNXI_IR_TIMEOUT);
        ir->rc->driver_name = SUNXI_IR_DEV;
 
        ret = rc_register_device(ir->rc);
 
  * messages per second (!), whether IR is idle or not.
  */
 #define NUM_URBS       4
-#define NS_PER_BYTE    62500
-#define NS_PER_BIT     (NS_PER_BYTE/8)
+#define US_PER_BYTE    62
+#define US_PER_BIT     (US_PER_BYTE / 8)
 
 struct ttusbir {
        struct rc_dev *rc;
                switch (v) {
                case 0xfe:
                        rawir.pulse = false;
-                       rawir.duration = NS_PER_BYTE;
+                       rawir.duration = US_PER_BYTE;
                        if (ir_raw_event_store_with_filter(tt->rc, &rawir))
                                event = true;
                        break;
                case 0:
                        rawir.pulse = true;
-                       rawir.duration = NS_PER_BYTE;
+                       rawir.duration = US_PER_BYTE;
                        if (ir_raw_event_store_with_filter(tt->rc, &rawir))
                                event = true;
                        break;
                                rawir.pulse = false;
                        }
 
-                       rawir.duration = NS_PER_BIT * (8 - b);
+                       rawir.duration = US_PER_BIT * (8 - b);
                        if (ir_raw_event_store_with_filter(tt->rc, &rawir))
                                event = true;
 
                        rawir.pulse = !rawir.pulse;
-                       rawir.duration = NS_PER_BIT * b;
+                       rawir.duration = US_PER_BIT * b;
                        if (ir_raw_event_store_with_filter(tt->rc, &rawir))
                                event = true;
                        break;
        rc->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
 
        /*
-        * The precision is NS_PER_BIT, but since every 8th bit can be
-        * overwritten with garbage the accuracy is at best 2 * NS_PER_BIT.
+        * The precision is US_PER_BIT, but since every 8th bit can be
+        * overwritten with garbage the accuracy is at best 2 * US_PER_BIT.
         */
-       rc->rx_resolution = NS_PER_BIT;
+       rc->rx_resolution = 2 * US_PER_BIT;
 
        ret = rc_register_device(rc);
        if (ret) {
 
 {
        u8 irdata;
        struct ir_raw_event rawir = {};
-       unsigned duration;
 
        /* Since RXHDLEV is set, at least 8 bytes are in the FIFO */
        while (inb(data->sbase + WBCIR_REG_SP3_LSR) & WBCIR_RX_AVAIL) {
                if (data->rxstate == WBCIR_RXSTATE_ERROR)
                        continue;
 
-               duration = ((irdata & 0x7F) + 1) *
+               rawir.duration = ((irdata & 0x7F) + 1) *
                        (data->carrier_report_enabled ? 2 : 10);
                rawir.pulse = irdata & 0x80 ? false : true;
-               rawir.duration = US_TO_NS(duration);
 
                if (rawir.pulse)
-                       data->pulse_duration += duration;
+                       data->pulse_duration += rawir.duration;
 
                ir_raw_event_store_with_filter(data->dev, &rawir);
        }
 
        /* Set a higher sampling resolution if carrier reports are enabled */
        wbcir_select_bank(data, WBCIR_BANK_2);
-       data->dev->rx_resolution = US_TO_NS(enable ? 2 : 10);
+       data->dev->rx_resolution = enable ? 2 : 10;
        outb(enable ? 0x03 : 0x0f, data->sbase + WBCIR_REG_SP3_BGDL);
        outb(0x00, data->sbase + WBCIR_REG_SP3_BGDH);
 
        data->dev->min_timeout = 1;
        data->dev->timeout = IR_DEFAULT_TIMEOUT;
        data->dev->max_timeout = 10 * IR_DEFAULT_TIMEOUT;
-       data->dev->rx_resolution = US_TO_NS(2);
+       data->dev->rx_resolution = 2;
        data->dev->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER;
        data->dev->allowed_wakeup_protocols = RC_PROTO_BIT_NEC |
                RC_PROTO_BIT_NECX | RC_PROTO_BIT_NEC32 | RC_PROTO_BIT_RC5 |
 
        rdev->device_name = xbox_remote->rc_name;
        rdev->input_phys = xbox_remote->rc_phys;
 
-       rdev->timeout = MS_TO_NS(10);
+       rdev->timeout = MS_TO_US(10);
 
        usb_to_input_id(xbox_remote->udev, &rdev->input_id);
        rdev->dev.parent = &xbox_remote->interface->dev;
 
 
 /* Remote Controller time units */
 
-#define AU8522_UNIT            200000 /* ns */
-#define NEC_START_SPACE                (4500000 / AU8522_UNIT)
-#define NEC_START_PULSE                (562500 * 16)
+#define AU8522_UNIT            200 /* us */
+#define NEC_START_SPACE                (4500 / AU8522_UNIT)
+#define NEC_START_PULSE                (563 * 16)
 #define RC5_START_SPACE                (4 * AU8522_UNIT)
-#define RC5_START_PULSE                888888
+#define RC5_START_PULSE                889
 
 static int au0828_get_key_au8522(struct au0828_rc *ir)
 {
 
        /* pass data to Kernel IR decoder */
        for (i = 0; i < len; i++) {
                ev.pulse = buf[i] >> 7;
-               ev.duration = 50800 * (buf[i] & 0x7f);
+               ev.duration = 51 * (buf[i] & 0x7f);
                ir_raw_event_store_with_filter(d->rc_dev, &ev);
        }
 
        rc->query = rtl2832u_rc_query;
        rc->interval = 200;
        /* we program idle len to 0xc0, set timeout to one less */
-       rc->timeout = 0xbf * 50800;
+       rc->timeout = 0xbf * 51;
 
        return 0;
 }
 
        for (i = 1; i < ARRAY_SIZE(state->buf); i++) {
                if (buf[i] == 0xff) {
                        ev.pulse = 0;
-                       ev.duration = 888888*2;
+                       ev.duration = 889 * 2;
                        ir_raw_event_store(d->rc_dev, &ev);
                        break;
                }
 
                ev.pulse = !ev.pulse;
                ev.duration = (buf[i] * FIRMWARE_CLOCK_DIVISOR *
-                              FIRMWARE_CLOCK_TICK) / 1000;
+                              FIRMWARE_CLOCK_TICK) / (1000 * 1000);
                ir_raw_event_store(d->rc_dev, &ev);
        }
 
 
  * @timeout: optional time after which device stops sending data
  * @min_timeout: minimum timeout supported by device
  * @max_timeout: maximum timeout supported by device
- * @rx_resolution : resolution (in ns) of input sampler
- * @tx_resolution: resolution (in ns) of output sampler
+ * @rx_resolution : resolution (in us) of input sampler
+ * @tx_resolution: resolution (in us) of output sampler
  * @lirc_dev: lirc device
  * @lirc_cdev: lirc char cdev
  * @gap_start: time when gap starts
  * @s_wakeup_filter: set the wakeup scancode filter. If the mask is zero
  *     then wakeup should be disabled. wakeup_protocol will be set to
  *     a valid protocol if mask is nonzero.
- * @s_timeout: set hardware timeout in ns
+ * @s_timeout: set hardware timeout in us
  */
 struct rc_dev {
        struct device                   dev;
        unsigned                carrier_report:1;
 };
 
-#define IR_DEFAULT_TIMEOUT     MS_TO_NS(125)
-#define IR_MAX_DURATION         500000000      /* 500 ms */
 #define US_TO_NS(usec)         ((usec) * 1000)
 #define MS_TO_US(msec)         ((msec) * 1000)
-#define MS_TO_NS(msec)         ((msec) * 1000 * 1000)
+#define IR_MAX_DURATION                MS_TO_US(500)
+#define IR_DEFAULT_TIMEOUT     MS_TO_US(125)
 
 void ir_raw_event_handle(struct rc_dev *dev);
 int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev);