vfs: do bulk POLL* -> EPOLL* replacement
[linux-2.6-block.git] / drivers / media / platform / vivid / vivid-radio-rx.c
index 71f3ebb7aecf22b52e872dbce054b17b23b66838..f834f7df8cf9f53d268043be18dc95f1a762c099 100644 (file)
@@ -38,9 +38,9 @@ ssize_t vivid_radio_rx_read(struct file *file, char __user *buf,
                         size_t size, loff_t *offset)
 {
        struct vivid_dev *dev = video_drvdata(file);
-       struct timespec ts;
        struct v4l2_rds_data *data = dev->rds_gen.data;
        bool use_alternates;
+       ktime_t timestamp;
        unsigned blk;
        int perc;
        int i;
@@ -64,17 +64,16 @@ ssize_t vivid_radio_rx_read(struct file *file, char __user *buf,
        }
 
 retry:
-       ktime_get_ts(&ts);
-       use_alternates = ts.tv_sec % 10 >= 5;
+       timestamp = ktime_sub(ktime_get(), dev->radio_rds_init_time);
+       blk = ktime_divns(timestamp, VIVID_RDS_NSEC_PER_BLK);
+       use_alternates = (blk % VIVID_RDS_GEN_BLOCKS) & 1;
+
        if (dev->radio_rx_rds_last_block == 0 ||
            dev->radio_rx_rds_use_alternates != use_alternates) {
                dev->radio_rx_rds_use_alternates = use_alternates;
                /* Re-init the RDS generator */
                vivid_radio_rds_init(dev);
        }
-       ts = timespec_sub(ts, dev->radio_rds_init_ts);
-       blk = ts.tv_sec * 100 + ts.tv_nsec / 10000000;
-       blk = (blk * VIVID_RDS_GEN_BLOCKS) / 500;
        if (blk >= dev->radio_rx_rds_last_block + VIVID_RDS_GEN_BLOCKS)
                dev->radio_rx_rds_last_block = blk - VIVID_RDS_GEN_BLOCKS + 1;
 
@@ -143,7 +142,7 @@ retry:
 
 __poll_t vivid_radio_rx_poll(struct file *file, struct poll_table_struct *wait)
 {
-       return POLLIN | POLLRDNORM | v4l2_ctrl_poll(file, wait);
+       return EPOLLIN | EPOLLRDNORM | v4l2_ctrl_poll(file, wait);
 }
 
 int vivid_radio_rx_enum_freq_bands(struct file *file, void *fh, struct v4l2_frequency_band *band)