From: Stephen Rothwell Date: Thu, 9 Apr 2015 07:10:26 +0000 (+1000) Subject: Merge remote-tracking branch 'char-misc/char-misc-next' X-Git-Tag: KARO-TXA5-2015-06-26~36 X-Git-Url: https://git.karo-electronics.de/?p=karo-tx-linux.git;a=commitdiff_plain;h=6183abccd0eac293a20fc0d951d3f11a1ba45f00 Merge remote-tracking branch 'char-misc/char-misc-next' --- 6183abccd0eac293a20fc0d951d3f11a1ba45f00 diff --cc kernel/time/clockevents.c index 25d942d1da27,888ecc114ddc..11dc22a6983b --- a/kernel/time/clockevents.c +++ b/kernel/time/clockevents.c @@@ -440,39 -371,8 +440,39 @@@ int clockevents_unbind_device(struct cl mutex_unlock(&clockevents_mutex); return ret; } - EXPORT_SYMBOL_GPL(clockevents_unbind); + EXPORT_SYMBOL_GPL(clockevents_unbind_device); +/* Sanity check of state transition callbacks */ +static int clockevents_sanity_check(struct clock_event_device *dev) +{ + /* Legacy set_mode() callback */ + if (dev->set_mode) { + /* We shouldn't be supporting new modes now */ + WARN_ON(dev->set_state_periodic || dev->set_state_oneshot || + dev->set_state_shutdown || dev->tick_resume); + + BUG_ON(dev->mode != CLOCK_EVT_MODE_UNUSED); + return 0; + } + + if (dev->features & CLOCK_EVT_FEAT_DUMMY) + return 0; + + /* New state-specific callbacks */ + if (!dev->set_state_shutdown) + return -EINVAL; + + if ((dev->features & CLOCK_EVT_FEAT_PERIODIC) && + !dev->set_state_periodic) + return -EINVAL; + + if ((dev->features & CLOCK_EVT_FEAT_ONESHOT) && + !dev->set_state_oneshot) + return -EINVAL; + + return 0; +} + /** * clockevents_register_device - register a clock event device * @dev: device to register