• Home
  • Raw
  • Download

Lines Matching +full:cros +full:- +full:ec +full:- +full:regulator

2  * ChromeOS EC multi-function device
15 * The ChromeOS EC multi function device is used to mux all the requests
16 * to the EC device for its multiple features: keyboard controller,
17 * battery charging and regulator control, firmware update.
43 .name = "cros-ec-dev",
49 .name = "cros-ec-dev",
67 if (wake_event && device_may_wakeup(ec_dev->dev)) in ec_irq_thread()
68 pm_wakeup_event(ec_dev->dev, 0); in ec_irq_thread()
71 blocking_notifier_call_chain(&ec_dev->event_notifier, in ec_irq_thread()
96 struct device *dev = ec_dev->dev; in cros_ec_register()
99 BLOCKING_INIT_NOTIFIER_HEAD(&ec_dev->event_notifier); in cros_ec_register()
101 ec_dev->max_request = sizeof(struct ec_params_hello); in cros_ec_register()
102 ec_dev->max_response = sizeof(struct ec_response_get_protocol_info); in cros_ec_register()
103 ec_dev->max_passthru = 0; in cros_ec_register()
105 ec_dev->din = devm_kzalloc(dev, ec_dev->din_size, GFP_KERNEL); in cros_ec_register()
106 if (!ec_dev->din) in cros_ec_register()
107 return -ENOMEM; in cros_ec_register()
109 ec_dev->dout = devm_kzalloc(dev, ec_dev->dout_size, GFP_KERNEL); in cros_ec_register()
110 if (!ec_dev->dout) in cros_ec_register()
111 return -ENOMEM; in cros_ec_register()
113 mutex_init(&ec_dev->lock); in cros_ec_register()
117 dev_err(dev, "Cannot identify the EC: error %d\n", err); in cros_ec_register()
121 if (ec_dev->irq) { in cros_ec_register()
122 err = devm_request_threaded_irq(dev, ec_dev->irq, NULL, in cros_ec_register()
124 "chromeos-ec", ec_dev); in cros_ec_register()
127 ec_dev->irq, err); in cros_ec_register()
132 err = mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO, &ec_cell, 1, in cros_ec_register()
133 NULL, ec_dev->irq, NULL); in cros_ec_register()
141 if (ec_dev->max_passthru) { in cros_ec_register()
145 * - behind an EC, we have a pd in cros_ec_register()
146 * - only one device added. in cros_ec_register()
147 * - the EC is responsive at init time (it is not true for a in cros_ec_register()
150 err = mfd_add_devices(ec_dev->dev, PLATFORM_DEVID_AUTO, in cros_ec_register()
151 &ec_pd_cell, 1, NULL, ec_dev->irq, NULL); in cros_ec_register()
160 if (IS_ENABLED(CONFIG_OF) && dev->of_node) { in cros_ec_register()
164 dev_err(dev, "Failed to register sub-devices\n"); in cros_ec_register()
170 * Clear sleep event - this will fail harmlessly on platforms that in cros_ec_register()
175 dev_dbg(ec_dev->dev, "Error %d clearing sleep event to ec", in cros_ec_register()
178 dev_info(dev, "Chrome EC device registered\n"); in cros_ec_register()
186 mfd_remove_devices(ec_dev->dev); in cros_ec_remove()
195 struct device *dev = ec_dev->dev; in cros_ec_suspend()
205 dev_dbg(ec_dev->dev, "Error %d sending suspend event to ec", in cros_ec_suspend()
209 ec_dev->wake_enabled = !enable_irq_wake(ec_dev->irq); in cros_ec_suspend()
211 disable_irq(ec_dev->irq); in cros_ec_suspend()
212 ec_dev->was_wake_device = ec_dev->wake_enabled; in cros_ec_suspend()
213 ec_dev->suspended = true; in cros_ec_suspend()
222 blocking_notifier_call_chain(&ec_dev->event_notifier, in cros_ec_report_events_during_suspend()
231 ec_dev->suspended = false; in cros_ec_resume()
232 enable_irq(ec_dev->irq); in cros_ec_resume()
240 dev_dbg(ec_dev->dev, "Error %d sending resume event to ec", in cros_ec_resume()
243 if (ec_dev->wake_enabled) { in cros_ec_resume()
244 disable_irq_wake(ec_dev->irq); in cros_ec_resume()
245 ec_dev->wake_enabled = 0; in cros_ec_resume()
261 MODULE_DESCRIPTION("ChromeOS EC core driver");