This driver uses 'struct timeval' which we are trying to remove since
32 bit time types will break in the year 2038. So replace it with
'ktime_t'.

Replaced do_gettimeofday() with ktime_get() because ktime_get() returns 
a 'ktime_t' while do_gettimeofday() returns a 'struct timeval'.

This patch also uses ktime_us_delta() to get the elapsed time.

Signed-off-by: Amitoj Kaur Chawla <[email protected]>
---
Changes in v2:
        -Removed the build error ktime_us_delta() was giving.

 drivers/staging/gdm72xx/gdm_sdio.c | 10 +++++-----
 drivers/staging/gdm72xx/gdm_sdio.h |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/gdm72xx/gdm_sdio.c 
b/drivers/staging/gdm72xx/gdm_sdio.c
index b0521da..247168f 100644
--- a/drivers/staging/gdm72xx/gdm_sdio.c
+++ b/drivers/staging/gdm72xx/gdm_sdio.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
+#include <linux/ktime.h>
 
 #include <linux/mmc/core.h>
 #include <linux/mmc/card.h>
@@ -303,7 +304,7 @@ static void send_sdu(struct sdio_func *func, struct tx_cxt 
*tx)
                put_tx_struct(t->tx_cxt, t);
        }
 
-       do_gettimeofday(&tx->sdu_stamp);
+       tx->sdu_stamp = ktime_get();
        spin_unlock_irqrestore(&tx->lock, flags);
 }
 
@@ -330,7 +331,7 @@ static void do_tx(struct work_struct *work)
        struct sdio_func *func = sdev->func;
        struct tx_cxt *tx = &sdev->tx;
        struct sdio_tx *t = NULL;
-       struct timeval now, *before;
+       ktime_t now, *before;
        int is_sdu = 0;
        long diff;
        unsigned long flags;
@@ -346,11 +347,10 @@ static void do_tx(struct work_struct *work)
                list_del(&t->list);
                is_sdu = 0;
        } else if (!tx->stop_sdu_tx && !list_empty(&tx->sdu_list)) {
-               do_gettimeofday(&now);
+               now = ktime_get();
                before = &tx->sdu_stamp;
 
-               diff = (now.tv_sec - before->tv_sec) * 1000000 +
-                       (now.tv_usec - before->tv_usec);
+               diff = ktime_us_delta(now, *before);
                if (diff >= 0 && diff < TX_INTERVAL) {
                        schedule_work(&sdev->ws);
                        spin_unlock_irqrestore(&tx->lock, flags);
diff --git a/drivers/staging/gdm72xx/gdm_sdio.h 
b/drivers/staging/gdm72xx/gdm_sdio.h
index 77ad9d6..aa7dad2 100644
--- a/drivers/staging/gdm72xx/gdm_sdio.h
+++ b/drivers/staging/gdm72xx/gdm_sdio.h
@@ -15,7 +15,7 @@
 #define __GDM72XX_GDM_SDIO_H__
 
 #include <linux/types.h>
-#include <linux/time.h>
+#include <linux/ktime.h>
 
 #define MAX_NR_SDU_BUF  64
 
@@ -32,7 +32,7 @@ struct tx_cxt {
        struct list_head        free_list;
        struct list_head        sdu_list;
        struct list_head        hci_list;
-       struct timeval          sdu_stamp;
+       ktime_t                 sdu_stamp;
        u8                      *sdu_buf;
        spinlock_t              lock;
        int                     can_send;
-- 
1.9.1

_______________________________________________
Y2038 mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/y2038

Reply via email to