Lines Matching refs:ec
19 #include <linux/olpc-ec.h>
80 struct olpc_ec_priv *ec = container_of(w, struct olpc_ec_priv, worker);
85 spin_lock_irqsave(&ec->cmd_q_lock, flags);
86 if (!list_empty(&ec->cmd_q)) {
87 desc = list_first_entry(&ec->cmd_q, struct ec_cmd_desc, node);
90 spin_unlock_irqrestore(&ec->cmd_q_lock, flags);
97 mutex_lock(&ec->cmd_lock);
100 mutex_unlock(&ec->cmd_lock);
106 schedule_work(&ec->worker);
114 struct olpc_ec_priv *ec)
120 spin_lock_irqsave(&ec->cmd_q_lock, flags);
121 list_add_tail(&desc->node, &ec->cmd_q);
122 spin_unlock_irqrestore(&ec->cmd_q_lock, flags);
124 schedule_work(&ec->worker);
129 struct olpc_ec_priv *ec = ec_priv;
139 if (!ec)
143 if (WARN_ON(ec->suspended))
156 queue_ec_descriptor(&desc, ec);
168 struct olpc_ec_priv *ec = ec_priv;
170 if (WARN_ON(!ec))
173 ec->ec_wakeup_mask |= value;
179 struct olpc_ec_priv *ec = ec_priv;
181 if (WARN_ON(!ec))
184 ec->ec_wakeup_mask &= ~value;
190 struct olpc_ec_priv *ec = ec_priv;
192 if (WARN_ON(!ec))
196 if (ec->version >= 0x5f) {
223 struct olpc_ec_priv *ec = ec_priv;
226 if (WARN_ON(!ec))
230 if (ec->version >= 0x5f) {
282 pr_debug("olpc-ec: bad ec cmd: cmd:response-count [arg1 [arg2 ...]]\n");
292 pr_debug("olpc-ec: debugfs cmd 0x%02x with %d args %5ph, want %d returns\n",
299 pr_debug("olpc-ec: response %8ph (%d bytes expected)\n",
335 dbgfs_dir = debugfs_create_dir("olpc-ec", NULL);
353 static int olpc_ec_set_dcon_power(struct olpc_ec_priv *ec, bool state)
358 if (ec->dcon_enabled == state)
365 ec->dcon_enabled = state;
371 struct olpc_ec_priv *ec = rdev_get_drvdata(rdev);
373 return olpc_ec_set_dcon_power(ec, true);
378 struct olpc_ec_priv *ec = rdev_get_drvdata(rdev);
380 return olpc_ec_set_dcon_power(ec, false);
385 struct olpc_ec_priv *ec = rdev_get_drvdata(rdev);
387 return ec->dcon_enabled ? 1 : 0;
406 struct olpc_ec_priv *ec;
413 ec = kzalloc(sizeof(*ec), GFP_KERNEL);
414 if (!ec)
417 ec->drv = ec_driver;
418 INIT_WORK(&ec->worker, olpc_ec_worker);
419 mutex_init(&ec->cmd_lock);
421 INIT_LIST_HEAD(&ec->cmd_q);
422 spin_lock_init(&ec->cmd_q_lock);
424 ec_priv = ec;
425 platform_set_drvdata(pdev, ec);
428 err = olpc_ec_cmd(EC_FIRMWARE_REV, NULL, 0, &ec->version, 1);
433 config.driver_data = ec;
434 ec->dcon_enabled = true;
435 ec->dcon_rdev = devm_regulator_register(&pdev->dev, &dcon_desc,
437 if (IS_ERR(ec->dcon_rdev)) {
439 err = PTR_ERR(ec->dcon_rdev);
443 ec->dbgfs_dir = olpc_ec_setup_debugfs();
449 kfree(ec);
456 struct olpc_ec_priv *ec = platform_get_drvdata(pdev);
459 olpc_ec_mask_write(ec->ec_wakeup_mask);
464 ec->suspended = true;
472 struct olpc_ec_priv *ec = platform_get_drvdata(pdev);
474 ec->suspended = false;
486 .name = "olpc-ec",