diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2017-11-07 05:59:40 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2017-11-07 05:59:40 -0500 |
commit | 1c10bbee8cf7c8df4e5d9e8ccc9754b200f625ff (patch) | |
tree | 3fb75d197d16d63878fdb4a478e9f6a555a95f80 | |
parent | c7c2f3d9e86c2f09a514247d1623f00850125636 (diff) | |
parent | 5ea22086ed42bef8dde93f45a42a3ace486eb788 (diff) |
Merge tag 'timers-conversion-next4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux into timers/core
Pull the 4th timer conversion batch from Kees Cook
- A couple fixes for less common build configurations
- More stragglers that have either been reviewed or gone
long enough on list
-rw-r--r-- | arch/arm/mach-footbridge/dc21285.c | 2 | ||||
-rw-r--r-- | drivers/block/aoe/aoemain.c | 44 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 4 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 18 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 2 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_req.c | 4 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_req.h | 2 | ||||
-rw-r--r-- | drivers/block/drbd/drbd_worker.c | 8 | ||||
-rw-r--r-- | drivers/crypto/axis/artpec6_crypto.c | 6 | ||||
-rw-r--r-- | drivers/crypto/mv_cesa.c | 4 | ||||
-rw-r--r-- | drivers/crypto/picoxcell_crypto.c | 7 | ||||
-rw-r--r-- | drivers/ide/ide-io.c | 4 | ||||
-rw-r--r-- | drivers/ide/ide-probe.c | 2 | ||||
-rw-r--r-- | drivers/mailbox/mailbox-altera.c | 12 | ||||
-rw-r--r-- | drivers/pcmcia/omap_cf.c | 4 | ||||
-rw-r--r-- | include/linux/ide.h | 2 |
16 files changed, 47 insertions, 78 deletions
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c index 8407e4a07c77..e7b350f18f5f 100644 --- a/arch/arm/mach-footbridge/dc21285.c +++ b/arch/arm/mach-footbridge/dc21285.c | |||
@@ -141,7 +141,7 @@ static void dc21285_enable_error(struct timer_list *timer) | |||
141 | del_timer(timer); | 141 | del_timer(timer); |
142 | 142 | ||
143 | if (timer == &serr_timer) | 143 | if (timer == &serr_timer) |
144 | enable_irq(IRQ_PCI_SERR) | 144 | enable_irq(IRQ_PCI_SERR); |
145 | else if (timer == &perr_timer) | 145 | else if (timer == &perr_timer) |
146 | enable_irq(IRQ_PCI_PERR); | 146 | enable_irq(IRQ_PCI_PERR); |
147 | } | 147 | } |
diff --git a/drivers/block/aoe/aoemain.c b/drivers/block/aoe/aoemain.c index 4b987c2fefbe..251482066977 100644 --- a/drivers/block/aoe/aoemain.c +++ b/drivers/block/aoe/aoemain.c | |||
@@ -15,49 +15,19 @@ MODULE_AUTHOR("Sam Hopkins <sah@coraid.com>"); | |||
15 | MODULE_DESCRIPTION("AoE block/char driver for 2.6.2 and newer 2.6 kernels"); | 15 | MODULE_DESCRIPTION("AoE block/char driver for 2.6.2 and newer 2.6 kernels"); |
16 | MODULE_VERSION(VERSION); | 16 | MODULE_VERSION(VERSION); |
17 | 17 | ||
18 | enum { TINIT, TRUN, TKILL }; | 18 | static struct timer_list timer; |
19 | 19 | ||
20 | static void | 20 | static void discover_timer(struct timer_list *t) |
21 | discover_timer(ulong vp) | ||
22 | { | 21 | { |
23 | static struct timer_list t; | 22 | mod_timer(t, jiffies + HZ * 60); /* one minute */ |
24 | static volatile ulong die; | ||
25 | static spinlock_t lock; | ||
26 | ulong flags; | ||
27 | enum { DTIMERTICK = HZ * 60 }; /* one minute */ | ||
28 | |||
29 | switch (vp) { | ||
30 | case TINIT: | ||
31 | init_timer(&t); | ||
32 | spin_lock_init(&lock); | ||
33 | t.data = TRUN; | ||
34 | t.function = discover_timer; | ||
35 | die = 0; | ||
36 | case TRUN: | ||
37 | spin_lock_irqsave(&lock, flags); | ||
38 | if (!die) { | ||
39 | t.expires = jiffies + DTIMERTICK; | ||
40 | add_timer(&t); | ||
41 | } | ||
42 | spin_unlock_irqrestore(&lock, flags); | ||
43 | |||
44 | aoecmd_cfg(0xffff, 0xff); | ||
45 | return; | ||
46 | case TKILL: | ||
47 | spin_lock_irqsave(&lock, flags); | ||
48 | die = 1; | ||
49 | spin_unlock_irqrestore(&lock, flags); | ||
50 | 23 | ||
51 | del_timer_sync(&t); | 24 | aoecmd_cfg(0xffff, 0xff); |
52 | default: | ||
53 | return; | ||
54 | } | ||
55 | } | 25 | } |
56 | 26 | ||
57 | static void | 27 | static void |
58 | aoe_exit(void) | 28 | aoe_exit(void) |
59 | { | 29 | { |
60 | discover_timer(TKILL); | 30 | del_timer_sync(&timer); |
61 | 31 | ||
62 | aoenet_exit(); | 32 | aoenet_exit(); |
63 | unregister_blkdev(AOE_MAJOR, DEVICE_NAME); | 33 | unregister_blkdev(AOE_MAJOR, DEVICE_NAME); |
@@ -93,7 +63,9 @@ aoe_init(void) | |||
93 | goto blkreg_fail; | 63 | goto blkreg_fail; |
94 | } | 64 | } |
95 | printk(KERN_INFO "aoe: AoE v%s initialised.\n", VERSION); | 65 | printk(KERN_INFO "aoe: AoE v%s initialised.\n", VERSION); |
96 | discover_timer(TINIT); | 66 | |
67 | timer_setup(&timer, discover_timer, 0); | ||
68 | discover_timer(&timer); | ||
97 | return 0; | 69 | return 0; |
98 | blkreg_fail: | 70 | blkreg_fail: |
99 | aoecmd_exit(); | 71 | aoecmd_exit(); |
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index 7e8589ce631c..06ecee1b528e 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -1551,8 +1551,8 @@ extern int w_restart_disk_io(struct drbd_work *, int); | |||
1551 | extern int w_send_out_of_sync(struct drbd_work *, int); | 1551 | extern int w_send_out_of_sync(struct drbd_work *, int); |
1552 | extern int w_start_resync(struct drbd_work *, int); | 1552 | extern int w_start_resync(struct drbd_work *, int); |
1553 | 1553 | ||
1554 | extern void resync_timer_fn(unsigned long data); | 1554 | extern void resync_timer_fn(struct timer_list *t); |
1555 | extern void start_resync_timer_fn(unsigned long data); | 1555 | extern void start_resync_timer_fn(struct timer_list *t); |
1556 | 1556 | ||
1557 | extern void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req); | 1557 | extern void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req); |
1558 | 1558 | ||
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 8cb3791898ae..4b4697a1f963 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c | |||
@@ -64,7 +64,7 @@ | |||
64 | static DEFINE_MUTEX(drbd_main_mutex); | 64 | static DEFINE_MUTEX(drbd_main_mutex); |
65 | static int drbd_open(struct block_device *bdev, fmode_t mode); | 65 | static int drbd_open(struct block_device *bdev, fmode_t mode); |
66 | static void drbd_release(struct gendisk *gd, fmode_t mode); | 66 | static void drbd_release(struct gendisk *gd, fmode_t mode); |
67 | static void md_sync_timer_fn(unsigned long data); | 67 | static void md_sync_timer_fn(struct timer_list *t); |
68 | static int w_bitmap_io(struct drbd_work *w, int unused); | 68 | static int w_bitmap_io(struct drbd_work *w, int unused); |
69 | 69 | ||
70 | MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, " | 70 | MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, " |
@@ -2023,14 +2023,10 @@ void drbd_init_set_defaults(struct drbd_device *device) | |||
2023 | device->unplug_work.cb = w_send_write_hint; | 2023 | device->unplug_work.cb = w_send_write_hint; |
2024 | device->bm_io_work.w.cb = w_bitmap_io; | 2024 | device->bm_io_work.w.cb = w_bitmap_io; |
2025 | 2025 | ||
2026 | setup_timer(&device->resync_timer, resync_timer_fn, | 2026 | timer_setup(&device->resync_timer, resync_timer_fn, 0); |
2027 | (unsigned long)device); | 2027 | timer_setup(&device->md_sync_timer, md_sync_timer_fn, 0); |
2028 | setup_timer(&device->md_sync_timer, md_sync_timer_fn, | 2028 | timer_setup(&device->start_resync_timer, start_resync_timer_fn, 0); |
2029 | (unsigned long)device); | 2029 | timer_setup(&device->request_timer, request_timer_fn, 0); |
2030 | setup_timer(&device->start_resync_timer, start_resync_timer_fn, | ||
2031 | (unsigned long)device); | ||
2032 | setup_timer(&device->request_timer, request_timer_fn, | ||
2033 | (unsigned long)device); | ||
2034 | 2030 | ||
2035 | init_waitqueue_head(&device->misc_wait); | 2031 | init_waitqueue_head(&device->misc_wait); |
2036 | init_waitqueue_head(&device->state_wait); | 2032 | init_waitqueue_head(&device->state_wait); |
@@ -3721,9 +3717,9 @@ int drbd_md_test_flag(struct drbd_backing_dev *bdev, int flag) | |||
3721 | return (bdev->md.flags & flag) != 0; | 3717 | return (bdev->md.flags & flag) != 0; |
3722 | } | 3718 | } |
3723 | 3719 | ||
3724 | static void md_sync_timer_fn(unsigned long data) | 3720 | static void md_sync_timer_fn(struct timer_list *t) |
3725 | { | 3721 | { |
3726 | struct drbd_device *device = (struct drbd_device *) data; | 3722 | struct drbd_device *device = from_timer(device, t, md_sync_timer); |
3727 | drbd_device_post_work(device, MD_SYNC); | 3723 | drbd_device_post_work(device, MD_SYNC); |
3728 | } | 3724 | } |
3729 | 3725 | ||
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 796eaf347dc0..cb2fa63f6bc0 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c | |||
@@ -5056,7 +5056,7 @@ static int drbd_disconnected(struct drbd_peer_device *peer_device) | |||
5056 | wake_up(&device->misc_wait); | 5056 | wake_up(&device->misc_wait); |
5057 | 5057 | ||
5058 | del_timer_sync(&device->resync_timer); | 5058 | del_timer_sync(&device->resync_timer); |
5059 | resync_timer_fn((unsigned long)device); | 5059 | resync_timer_fn(&device->resync_timer); |
5060 | 5060 | ||
5061 | /* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier, | 5061 | /* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier, |
5062 | * w_make_resync_request etc. which may still be on the worker queue | 5062 | * w_make_resync_request etc. which may still be on the worker queue |
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c index de8566e55334..a500e738d929 100644 --- a/drivers/block/drbd/drbd_req.c +++ b/drivers/block/drbd/drbd_req.c | |||
@@ -1714,9 +1714,9 @@ static bool net_timeout_reached(struct drbd_request *net_req, | |||
1714 | * to expire twice (worst case) to become effective. Good enough. | 1714 | * to expire twice (worst case) to become effective. Good enough. |
1715 | */ | 1715 | */ |
1716 | 1716 | ||
1717 | void request_timer_fn(unsigned long data) | 1717 | void request_timer_fn(struct timer_list *t) |
1718 | { | 1718 | { |
1719 | struct drbd_device *device = (struct drbd_device *) data; | 1719 | struct drbd_device *device = from_timer(device, t, request_timer); |
1720 | struct drbd_connection *connection = first_peer_device(device)->connection; | 1720 | struct drbd_connection *connection = first_peer_device(device)->connection; |
1721 | struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */ | 1721 | struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */ |
1722 | struct net_conf *nc; | 1722 | struct net_conf *nc; |
diff --git a/drivers/block/drbd/drbd_req.h b/drivers/block/drbd/drbd_req.h index a2254f825601..cb97b3b30962 100644 --- a/drivers/block/drbd/drbd_req.h +++ b/drivers/block/drbd/drbd_req.h | |||
@@ -294,7 +294,7 @@ extern int __req_mod(struct drbd_request *req, enum drbd_req_event what, | |||
294 | struct bio_and_error *m); | 294 | struct bio_and_error *m); |
295 | extern void complete_master_bio(struct drbd_device *device, | 295 | extern void complete_master_bio(struct drbd_device *device, |
296 | struct bio_and_error *m); | 296 | struct bio_and_error *m); |
297 | extern void request_timer_fn(unsigned long data); | 297 | extern void request_timer_fn(struct timer_list *t); |
298 | extern void tl_restart(struct drbd_connection *connection, enum drbd_req_event what); | 298 | extern void tl_restart(struct drbd_connection *connection, enum drbd_req_event what); |
299 | extern void _tl_restart(struct drbd_connection *connection, enum drbd_req_event what); | 299 | extern void _tl_restart(struct drbd_connection *connection, enum drbd_req_event what); |
300 | extern void tl_abort_disk_io(struct drbd_device *device); | 300 | extern void tl_abort_disk_io(struct drbd_device *device); |
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c index 03471b3fce86..1476cb3439f4 100644 --- a/drivers/block/drbd/drbd_worker.c +++ b/drivers/block/drbd/drbd_worker.c | |||
@@ -457,9 +457,9 @@ int w_resync_timer(struct drbd_work *w, int cancel) | |||
457 | return 0; | 457 | return 0; |
458 | } | 458 | } |
459 | 459 | ||
460 | void resync_timer_fn(unsigned long data) | 460 | void resync_timer_fn(struct timer_list *t) |
461 | { | 461 | { |
462 | struct drbd_device *device = (struct drbd_device *) data; | 462 | struct drbd_device *device = from_timer(device, t, resync_timer); |
463 | 463 | ||
464 | drbd_queue_work_if_unqueued( | 464 | drbd_queue_work_if_unqueued( |
465 | &first_peer_device(device)->connection->sender_work, | 465 | &first_peer_device(device)->connection->sender_work, |
@@ -1705,9 +1705,9 @@ void drbd_rs_controller_reset(struct drbd_device *device) | |||
1705 | rcu_read_unlock(); | 1705 | rcu_read_unlock(); |
1706 | } | 1706 | } |
1707 | 1707 | ||
1708 | void start_resync_timer_fn(unsigned long data) | 1708 | void start_resync_timer_fn(struct timer_list *t) |
1709 | { | 1709 | { |
1710 | struct drbd_device *device = (struct drbd_device *) data; | 1710 | struct drbd_device *device = from_timer(device, t, start_resync_timer); |
1711 | drbd_device_post_work(device, RS_START); | 1711 | drbd_device_post_work(device, RS_START); |
1712 | } | 1712 | } |
1713 | 1713 | ||
diff --git a/drivers/crypto/axis/artpec6_crypto.c b/drivers/crypto/axis/artpec6_crypto.c index d9fbbf01062b..6b515c2f2c14 100644 --- a/drivers/crypto/axis/artpec6_crypto.c +++ b/drivers/crypto/axis/artpec6_crypto.c | |||
@@ -2074,9 +2074,9 @@ static void artpec6_crypto_process_queue(struct artpec6_crypto *ac) | |||
2074 | del_timer(&ac->timer); | 2074 | del_timer(&ac->timer); |
2075 | } | 2075 | } |
2076 | 2076 | ||
2077 | static void artpec6_crypto_timeout(unsigned long data) | 2077 | static void artpec6_crypto_timeout(struct timer_list *t) |
2078 | { | 2078 | { |
2079 | struct artpec6_crypto *ac = (struct artpec6_crypto *) data; | 2079 | struct artpec6_crypto *ac = from_timer(ac, t, timer); |
2080 | 2080 | ||
2081 | dev_info_ratelimited(artpec6_crypto_dev, "timeout\n"); | 2081 | dev_info_ratelimited(artpec6_crypto_dev, "timeout\n"); |
2082 | 2082 | ||
@@ -3063,7 +3063,7 @@ static int artpec6_crypto_probe(struct platform_device *pdev) | |||
3063 | spin_lock_init(&ac->queue_lock); | 3063 | spin_lock_init(&ac->queue_lock); |
3064 | INIT_LIST_HEAD(&ac->queue); | 3064 | INIT_LIST_HEAD(&ac->queue); |
3065 | INIT_LIST_HEAD(&ac->pending); | 3065 | INIT_LIST_HEAD(&ac->pending); |
3066 | setup_timer(&ac->timer, artpec6_crypto_timeout, (unsigned long) ac); | 3066 | timer_setup(&ac->timer, artpec6_crypto_timeout, 0); |
3067 | 3067 | ||
3068 | ac->base = base; | 3068 | ac->base = base; |
3069 | 3069 | ||
diff --git a/drivers/crypto/mv_cesa.c b/drivers/crypto/mv_cesa.c index bf25f415eea6..0eb2706f23c8 100644 --- a/drivers/crypto/mv_cesa.c +++ b/drivers/crypto/mv_cesa.c | |||
@@ -149,7 +149,7 @@ struct mv_req_hash_ctx { | |||
149 | int count_add; | 149 | int count_add; |
150 | }; | 150 | }; |
151 | 151 | ||
152 | static void mv_completion_timer_callback(unsigned long unused) | 152 | static void mv_completion_timer_callback(struct timer_list *unused) |
153 | { | 153 | { |
154 | int active = readl(cpg->reg + SEC_ACCEL_CMD) & SEC_CMD_EN_SEC_ACCL0; | 154 | int active = readl(cpg->reg + SEC_ACCEL_CMD) & SEC_CMD_EN_SEC_ACCL0; |
155 | 155 | ||
@@ -167,7 +167,7 @@ static void mv_completion_timer_callback(unsigned long unused) | |||
167 | 167 | ||
168 | static void mv_setup_timer(void) | 168 | static void mv_setup_timer(void) |
169 | { | 169 | { |
170 | setup_timer(&cpg->completion_timer, &mv_completion_timer_callback, 0); | 170 | timer_setup(&cpg->completion_timer, mv_completion_timer_callback, 0); |
171 | mod_timer(&cpg->completion_timer, | 171 | mod_timer(&cpg->completion_timer, |
172 | jiffies + msecs_to_jiffies(MV_CESA_EXPIRE)); | 172 | jiffies + msecs_to_jiffies(MV_CESA_EXPIRE)); |
173 | } | 173 | } |
diff --git a/drivers/crypto/picoxcell_crypto.c b/drivers/crypto/picoxcell_crypto.c index b6f14844702e..5a6dc53b2b9d 100644 --- a/drivers/crypto/picoxcell_crypto.c +++ b/drivers/crypto/picoxcell_crypto.c | |||
@@ -1125,9 +1125,9 @@ static irqreturn_t spacc_spacc_irq(int irq, void *dev) | |||
1125 | return IRQ_HANDLED; | 1125 | return IRQ_HANDLED; |
1126 | } | 1126 | } |
1127 | 1127 | ||
1128 | static void spacc_packet_timeout(unsigned long data) | 1128 | static void spacc_packet_timeout(struct timer_list *t) |
1129 | { | 1129 | { |
1130 | struct spacc_engine *engine = (struct spacc_engine *)data; | 1130 | struct spacc_engine *engine = from_timer(engine, t, packet_timeout); |
1131 | 1131 | ||
1132 | spacc_process_done(engine); | 1132 | spacc_process_done(engine); |
1133 | } | 1133 | } |
@@ -1714,8 +1714,7 @@ static int spacc_probe(struct platform_device *pdev) | |||
1714 | writel(SPA_IRQ_EN_STAT_EN | SPA_IRQ_EN_GLBL_EN, | 1714 | writel(SPA_IRQ_EN_STAT_EN | SPA_IRQ_EN_GLBL_EN, |
1715 | engine->regs + SPA_IRQ_EN_REG_OFFSET); | 1715 | engine->regs + SPA_IRQ_EN_REG_OFFSET); |
1716 | 1716 | ||
1717 | setup_timer(&engine->packet_timeout, spacc_packet_timeout, | 1717 | timer_setup(&engine->packet_timeout, spacc_packet_timeout, 0); |
1718 | (unsigned long)engine); | ||
1719 | 1718 | ||
1720 | INIT_LIST_HEAD(&engine->pending); | 1719 | INIT_LIST_HEAD(&engine->pending); |
1721 | INIT_LIST_HEAD(&engine->completed); | 1720 | INIT_LIST_HEAD(&engine->completed); |
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 3a234701d92c..6f25da56a169 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -611,9 +611,9 @@ static int drive_is_ready(ide_drive_t *drive) | |||
611 | * logic that wants cleaning up. | 611 | * logic that wants cleaning up. |
612 | */ | 612 | */ |
613 | 613 | ||
614 | void ide_timer_expiry (unsigned long data) | 614 | void ide_timer_expiry (struct timer_list *t) |
615 | { | 615 | { |
616 | ide_hwif_t *hwif = (ide_hwif_t *)data; | 616 | ide_hwif_t *hwif = from_timer(hwif, t, timer); |
617 | ide_drive_t *uninitialized_var(drive); | 617 | ide_drive_t *uninitialized_var(drive); |
618 | ide_handler_t *handler; | 618 | ide_handler_t *handler; |
619 | unsigned long flags; | 619 | unsigned long flags; |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 01b2adfd8226..27a2488c7468 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -1184,7 +1184,7 @@ static void ide_init_port_data(ide_hwif_t *hwif, unsigned int index) | |||
1184 | 1184 | ||
1185 | spin_lock_init(&hwif->lock); | 1185 | spin_lock_init(&hwif->lock); |
1186 | 1186 | ||
1187 | setup_timer(&hwif->timer, &ide_timer_expiry, (unsigned long)hwif); | 1187 | timer_setup(&hwif->timer, ide_timer_expiry, 0); |
1188 | 1188 | ||
1189 | init_completion(&hwif->gendev_rel_comp); | 1189 | init_completion(&hwif->gendev_rel_comp); |
1190 | 1190 | ||
diff --git a/drivers/mailbox/mailbox-altera.c b/drivers/mailbox/mailbox-altera.c index bb682c926b0a..bcb29df9549e 100644 --- a/drivers/mailbox/mailbox-altera.c +++ b/drivers/mailbox/mailbox-altera.c | |||
@@ -57,6 +57,7 @@ struct altera_mbox { | |||
57 | 57 | ||
58 | /* If the controller supports only RX polling mode */ | 58 | /* If the controller supports only RX polling mode */ |
59 | struct timer_list rxpoll_timer; | 59 | struct timer_list rxpoll_timer; |
60 | struct mbox_chan *chan; | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | static struct altera_mbox *mbox_chan_to_altera_mbox(struct mbox_chan *chan) | 63 | static struct altera_mbox *mbox_chan_to_altera_mbox(struct mbox_chan *chan) |
@@ -138,12 +139,11 @@ static void altera_mbox_rx_data(struct mbox_chan *chan) | |||
138 | } | 139 | } |
139 | } | 140 | } |
140 | 141 | ||
141 | static void altera_mbox_poll_rx(unsigned long data) | 142 | static void altera_mbox_poll_rx(struct timer_list *t) |
142 | { | 143 | { |
143 | struct mbox_chan *chan = (struct mbox_chan *)data; | 144 | struct altera_mbox *mbox = from_timer(mbox, t, rxpoll_timer); |
144 | struct altera_mbox *mbox = mbox_chan_to_altera_mbox(chan); | ||
145 | 145 | ||
146 | altera_mbox_rx_data(chan); | 146 | altera_mbox_rx_data(mbox->chan); |
147 | 147 | ||
148 | mod_timer(&mbox->rxpoll_timer, | 148 | mod_timer(&mbox->rxpoll_timer, |
149 | jiffies + msecs_to_jiffies(MBOX_POLLING_MS)); | 149 | jiffies + msecs_to_jiffies(MBOX_POLLING_MS)); |
@@ -206,8 +206,8 @@ static int altera_mbox_startup_receiver(struct mbox_chan *chan) | |||
206 | 206 | ||
207 | polling: | 207 | polling: |
208 | /* Setup polling timer */ | 208 | /* Setup polling timer */ |
209 | setup_timer(&mbox->rxpoll_timer, altera_mbox_poll_rx, | 209 | mbox->chan = chan; |
210 | (unsigned long)chan); | 210 | timer_setup(&mbox->rxpoll_timer, altera_mbox_poll_rx, 0); |
211 | mod_timer(&mbox->rxpoll_timer, | 211 | mod_timer(&mbox->rxpoll_timer, |
212 | jiffies + msecs_to_jiffies(MBOX_POLLING_MS)); | 212 | jiffies + msecs_to_jiffies(MBOX_POLLING_MS)); |
213 | 213 | ||
diff --git a/drivers/pcmcia/omap_cf.c b/drivers/pcmcia/omap_cf.c index 8216ceb51b18..c2a17a79f0b2 100644 --- a/drivers/pcmcia/omap_cf.c +++ b/drivers/pcmcia/omap_cf.c | |||
@@ -102,7 +102,9 @@ static void omap_cf_timer(struct timer_list *t) | |||
102 | */ | 102 | */ |
103 | static irqreturn_t omap_cf_irq(int irq, void *_cf) | 103 | static irqreturn_t omap_cf_irq(int irq, void *_cf) |
104 | { | 104 | { |
105 | omap_cf_timer(&_cf->timer); | 105 | struct omap_cf_socket *cf = (struct omap_cf_socket *)_cf; |
106 | |||
107 | omap_cf_timer(&cf->timer); | ||
106 | return IRQ_HANDLED; | 108 | return IRQ_HANDLED; |
107 | } | 109 | } |
108 | 110 | ||
diff --git a/include/linux/ide.h b/include/linux/ide.h index dc152e4b7f73..cc412175d036 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -1211,7 +1211,7 @@ extern int ide_wait_not_busy(ide_hwif_t *hwif, unsigned long timeout); | |||
1211 | 1211 | ||
1212 | extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout); | 1212 | extern void ide_stall_queue(ide_drive_t *drive, unsigned long timeout); |
1213 | 1213 | ||
1214 | extern void ide_timer_expiry(unsigned long); | 1214 | extern void ide_timer_expiry(struct timer_list *t); |
1215 | extern irqreturn_t ide_intr(int irq, void *dev_id); | 1215 | extern irqreturn_t ide_intr(int irq, void *dev_id); |
1216 | extern void do_ide_request(struct request_queue *); | 1216 | extern void do_ide_request(struct request_queue *); |
1217 | extern void ide_requeue_and_plug(ide_drive_t *drive, struct request *rq); | 1217 | extern void ide_requeue_and_plug(ide_drive_t *drive, struct request *rq); |