aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/firmware_class.c
diff options
context:
space:
mode:
authorMing Lei <ming.lei@canonical.com>2012-09-08 05:32:30 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-10 19:40:30 -0400
commitcfe016b14e1ee106e906ddfe77d598a2b288d7d6 (patch)
treebd5de67d97a66269066df9509cea691e99a34605 /drivers/base/firmware_class.c
parentef4158c5634e3819f93499d598ca617c29307ffd (diff)
firmware loader: fix compile warning when CONFIG_PM=n
This patch replaces the previous macro of CONFIG_PM with CONFIG_PM_SLEEP becasue firmware cache is only used in system sleep situations. Also this patch fixes the below compile warning when CONFIG_PM=n: drivers/base/firmware_class.c:1147: warning: 'device_cache_fw_images' defined but not used drivers/base/firmware_class.c:1212: warning: 'device_uncache_fw_images_delay' defined but not used Reported-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ming Lei <ming.lei@canonical.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/firmware_class.c')
-rw-r--r--drivers/base/firmware_class.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 95f6851b3010..6e210802c37b 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -96,7 +96,9 @@ struct firmware_cache {
96 /* firmware_buf instance will be added into the below list */ 96 /* firmware_buf instance will be added into the below list */
97 spinlock_t lock; 97 spinlock_t lock;
98 struct list_head head; 98 struct list_head head;
99 int state;
99 100
101#ifdef CONFIG_PM_SLEEP
100 /* 102 /*
101 * Names of firmware images which have been cached successfully 103 * Names of firmware images which have been cached successfully
102 * will be added into the below list so that device uncache 104 * will be added into the below list so that device uncache
@@ -106,13 +108,12 @@ struct firmware_cache {
106 spinlock_t name_lock; 108 spinlock_t name_lock;
107 struct list_head fw_names; 109 struct list_head fw_names;
108 110
109 int state;
110
111 wait_queue_head_t wait_queue; 111 wait_queue_head_t wait_queue;
112 int cnt; 112 int cnt;
113 struct delayed_work work; 113 struct delayed_work work;
114 114
115 struct notifier_block pm_notify; 115 struct notifier_block pm_notify;
116#endif
116}; 117};
117 118
118struct firmware_buf { 119struct firmware_buf {
@@ -622,6 +623,7 @@ static void fw_set_page_data(struct firmware_buf *buf, struct firmware *fw)
622 (unsigned int)buf->size); 623 (unsigned int)buf->size);
623} 624}
624 625
626#ifdef CONFIG_PM_SLEEP
625static void fw_name_devm_release(struct device *dev, void *res) 627static void fw_name_devm_release(struct device *dev, void *res)
626{ 628{
627 struct fw_name_devm *fwn = res; 629 struct fw_name_devm *fwn = res;
@@ -670,6 +672,12 @@ static int fw_add_devm_name(struct device *dev, const char *name)
670 672
671 return 0; 673 return 0;
672} 674}
675#else
676static int fw_add_devm_name(struct device *dev, const char *name)
677{
678 return 0;
679}
680#endif
673 681
674static void _request_firmware_cleanup(const struct firmware **firmware_p) 682static void _request_firmware_cleanup(const struct firmware **firmware_p)
675{ 683{
@@ -1046,6 +1054,7 @@ int uncache_firmware(const char *fw_name)
1046 return -EINVAL; 1054 return -EINVAL;
1047} 1055}
1048 1056
1057#ifdef CONFIG_PM_SLEEP
1049static struct fw_cache_entry *alloc_fw_cache_entry(const char *name) 1058static struct fw_cache_entry *alloc_fw_cache_entry(const char *name)
1050{ 1059{
1051 struct fw_cache_entry *fce; 1060 struct fw_cache_entry *fce;
@@ -1258,7 +1267,6 @@ static void device_uncache_fw_images_delay(unsigned long delay)
1258 msecs_to_jiffies(delay)); 1267 msecs_to_jiffies(delay));
1259} 1268}
1260 1269
1261#ifdef CONFIG_PM
1262static int fw_pm_notify(struct notifier_block *notify_block, 1270static int fw_pm_notify(struct notifier_block *notify_block,
1263 unsigned long mode, void *unused) 1271 unsigned long mode, void *unused)
1264{ 1272{
@@ -1285,13 +1293,6 @@ static int fw_pm_notify(struct notifier_block *notify_block,
1285 1293
1286 return 0; 1294 return 0;
1287} 1295}
1288#else
1289static int fw_pm_notify(struct notifier_block *notify_block,
1290 unsigned long mode, void *unused)
1291{
1292 return 0;
1293}
1294#endif
1295 1296
1296/* stop caching firmware once syscore_suspend is reached */ 1297/* stop caching firmware once syscore_suspend is reached */
1297static int fw_suspend(void) 1298static int fw_suspend(void)
@@ -1303,16 +1304,23 @@ static int fw_suspend(void)
1303static struct syscore_ops fw_syscore_ops = { 1304static struct syscore_ops fw_syscore_ops = {
1304 .suspend = fw_suspend, 1305 .suspend = fw_suspend,
1305}; 1306};
1307#else
1308static int fw_cache_piggyback_on_request(const char *name)
1309{
1310 return 0;
1311}
1312#endif
1306 1313
1307static void __init fw_cache_init(void) 1314static void __init fw_cache_init(void)
1308{ 1315{
1309 spin_lock_init(&fw_cache.lock); 1316 spin_lock_init(&fw_cache.lock);
1310 INIT_LIST_HEAD(&fw_cache.head); 1317 INIT_LIST_HEAD(&fw_cache.head);
1318 fw_cache.state = FW_LOADER_NO_CACHE;
1311 1319
1320#ifdef CONFIG_PM_SLEEP
1312 spin_lock_init(&fw_cache.name_lock); 1321 spin_lock_init(&fw_cache.name_lock);
1313 INIT_LIST_HEAD(&fw_cache.fw_names); 1322 INIT_LIST_HEAD(&fw_cache.fw_names);
1314 fw_cache.cnt = 0; 1323 fw_cache.cnt = 0;
1315 fw_cache.state = FW_LOADER_NO_CACHE;
1316 1324
1317 init_waitqueue_head(&fw_cache.wait_queue); 1325 init_waitqueue_head(&fw_cache.wait_queue);
1318 INIT_DELAYED_WORK(&fw_cache.work, 1326 INIT_DELAYED_WORK(&fw_cache.work,
@@ -1322,6 +1330,7 @@ static void __init fw_cache_init(void)
1322 register_pm_notifier(&fw_cache.pm_notify); 1330 register_pm_notifier(&fw_cache.pm_notify);
1323 1331
1324 register_syscore_ops(&fw_syscore_ops); 1332 register_syscore_ops(&fw_syscore_ops);
1333#endif
1325} 1334}
1326 1335
1327static int __init firmware_class_init(void) 1336static int __init firmware_class_init(void)
@@ -1332,8 +1341,10 @@ static int __init firmware_class_init(void)
1332 1341
1333static void __exit firmware_class_exit(void) 1342static void __exit firmware_class_exit(void)
1334{ 1343{
1344#ifdef CONFIG_PM_SLEEP
1335 unregister_syscore_ops(&fw_syscore_ops); 1345 unregister_syscore_ops(&fw_syscore_ops);
1336 unregister_pm_notifier(&fw_cache.pm_notify); 1346 unregister_pm_notifier(&fw_cache.pm_notify);
1347#endif
1337 class_unregister(&firmware_class); 1348 class_unregister(&firmware_class);
1338} 1349}
1339 1350