Lines Matching refs:ec

170 static int acpi_ec_query(struct acpi_ec *ec, u8 *data);
171 static void advance_transaction(struct acpi_ec *ec);
224 #define ec_dbg_ref(ec, fmt, ...) \ argument
225 ec_dbg_raw("%lu: " fmt, ec->reference_count, ## __VA_ARGS__)
231 static bool acpi_ec_started(struct acpi_ec *ec) in acpi_ec_started() argument
233 return test_bit(EC_FLAGS_STARTED, &ec->flags) && in acpi_ec_started()
234 !test_bit(EC_FLAGS_STOPPED, &ec->flags); in acpi_ec_started()
237 static bool acpi_ec_flushed(struct acpi_ec *ec) in acpi_ec_flushed() argument
239 return ec->reference_count == 1; in acpi_ec_flushed()
246 static inline u8 acpi_ec_read_status(struct acpi_ec *ec) in acpi_ec_read_status() argument
248 u8 x = inb(ec->command_addr); in acpi_ec_read_status()
261 static inline u8 acpi_ec_read_data(struct acpi_ec *ec) in acpi_ec_read_data() argument
263 u8 x = inb(ec->data_addr); in acpi_ec_read_data()
265 ec->timestamp = jiffies; in acpi_ec_read_data()
270 static inline void acpi_ec_write_cmd(struct acpi_ec *ec, u8 command) in acpi_ec_write_cmd() argument
273 outb(command, ec->command_addr); in acpi_ec_write_cmd()
274 ec->timestamp = jiffies; in acpi_ec_write_cmd()
277 static inline void acpi_ec_write_data(struct acpi_ec *ec, u8 data) in acpi_ec_write_data() argument
280 outb(data, ec->data_addr); in acpi_ec_write_data()
281 ec->timestamp = jiffies; in acpi_ec_write_data()
309 static inline bool acpi_ec_is_gpe_raised(struct acpi_ec *ec) in acpi_ec_is_gpe_raised() argument
313 (void)acpi_get_gpe_status(NULL, ec->gpe, &gpe_status); in acpi_ec_is_gpe_raised()
317 static inline void acpi_ec_enable_gpe(struct acpi_ec *ec, bool open) in acpi_ec_enable_gpe() argument
320 acpi_enable_gpe(NULL, ec->gpe); in acpi_ec_enable_gpe()
322 BUG_ON(ec->reference_count < 1); in acpi_ec_enable_gpe()
323 acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_ENABLE); in acpi_ec_enable_gpe()
325 if (acpi_ec_is_gpe_raised(ec)) { in acpi_ec_enable_gpe()
332 advance_transaction(ec); in acpi_ec_enable_gpe()
336 static inline void acpi_ec_disable_gpe(struct acpi_ec *ec, bool close) in acpi_ec_disable_gpe() argument
339 acpi_disable_gpe(NULL, ec->gpe); in acpi_ec_disable_gpe()
341 BUG_ON(ec->reference_count < 1); in acpi_ec_disable_gpe()
342 acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_DISABLE); in acpi_ec_disable_gpe()
346 static inline void acpi_ec_clear_gpe(struct acpi_ec *ec) in acpi_ec_clear_gpe() argument
358 if (!acpi_ec_is_gpe_raised(ec)) in acpi_ec_clear_gpe()
360 acpi_clear_gpe(NULL, ec->gpe); in acpi_ec_clear_gpe()
367 static void acpi_ec_submit_request(struct acpi_ec *ec) in acpi_ec_submit_request() argument
369 ec->reference_count++; in acpi_ec_submit_request()
370 if (ec->reference_count == 1) in acpi_ec_submit_request()
371 acpi_ec_enable_gpe(ec, true); in acpi_ec_submit_request()
374 static void acpi_ec_complete_request(struct acpi_ec *ec) in acpi_ec_complete_request() argument
378 ec->reference_count--; in acpi_ec_complete_request()
379 if (ec->reference_count == 0) in acpi_ec_complete_request()
380 acpi_ec_disable_gpe(ec, true); in acpi_ec_complete_request()
381 flushed = acpi_ec_flushed(ec); in acpi_ec_complete_request()
383 wake_up(&ec->wait); in acpi_ec_complete_request()
386 static void acpi_ec_set_storm(struct acpi_ec *ec, u8 flag) in acpi_ec_set_storm() argument
388 if (!test_bit(flag, &ec->flags)) { in acpi_ec_set_storm()
389 acpi_ec_disable_gpe(ec, false); in acpi_ec_set_storm()
391 set_bit(flag, &ec->flags); in acpi_ec_set_storm()
395 static void acpi_ec_clear_storm(struct acpi_ec *ec, u8 flag) in acpi_ec_clear_storm() argument
397 if (test_bit(flag, &ec->flags)) { in acpi_ec_clear_storm()
398 clear_bit(flag, &ec->flags); in acpi_ec_clear_storm()
399 acpi_ec_enable_gpe(ec, false); in acpi_ec_clear_storm()
415 static bool acpi_ec_submit_flushable_request(struct acpi_ec *ec) in acpi_ec_submit_flushable_request() argument
417 if (!acpi_ec_started(ec)) in acpi_ec_submit_flushable_request()
419 acpi_ec_submit_request(ec); in acpi_ec_submit_flushable_request()
423 static void acpi_ec_submit_query(struct acpi_ec *ec) in acpi_ec_submit_query() argument
425 if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) { in acpi_ec_submit_query()
428 ec->nr_pending_queries++; in acpi_ec_submit_query()
429 schedule_work(&ec->work); in acpi_ec_submit_query()
433 static void acpi_ec_complete_query(struct acpi_ec *ec) in acpi_ec_complete_query() argument
435 if (test_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) { in acpi_ec_complete_query()
436 clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); in acpi_ec_complete_query()
442 static bool acpi_ec_guard_event(struct acpi_ec *ec) in acpi_ec_guard_event() argument
447 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_guard_event()
464 !test_bit(EC_FLAGS_QUERY_PENDING, &ec->flags) || in acpi_ec_guard_event()
465 (ec->curr && ec->curr->command == ACPI_EC_COMMAND_QUERY)) in acpi_ec_guard_event()
467 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_guard_event()
471 static int ec_transaction_polled(struct acpi_ec *ec) in ec_transaction_polled() argument
476 spin_lock_irqsave(&ec->lock, flags); in ec_transaction_polled()
477 if (ec->curr && (ec->curr->flags & ACPI_EC_COMMAND_POLL)) in ec_transaction_polled()
479 spin_unlock_irqrestore(&ec->lock, flags); in ec_transaction_polled()
483 static int ec_transaction_completed(struct acpi_ec *ec) in ec_transaction_completed() argument
488 spin_lock_irqsave(&ec->lock, flags); in ec_transaction_completed()
489 if (ec->curr && (ec->curr->flags & ACPI_EC_COMMAND_COMPLETE)) in ec_transaction_completed()
491 spin_unlock_irqrestore(&ec->lock, flags); in ec_transaction_completed()
495 static inline void ec_transaction_transition(struct acpi_ec *ec, unsigned long flag) in ec_transaction_transition() argument
497 ec->curr->flags |= flag; in ec_transaction_transition()
498 if (ec->curr->command == ACPI_EC_COMMAND_QUERY) { in ec_transaction_transition()
501 acpi_ec_complete_query(ec); in ec_transaction_transition()
504 acpi_ec_complete_query(ec); in ec_transaction_transition()
507 set_bit(EC_FLAGS_QUERY_GUARDING, &ec->flags); in ec_transaction_transition()
511 static void advance_transaction(struct acpi_ec *ec) in advance_transaction() argument
524 acpi_ec_clear_gpe(ec); in advance_transaction()
525 status = acpi_ec_read_status(ec); in advance_transaction()
526 t = ec->curr; in advance_transaction()
533 (!ec->nr_pending_queries || in advance_transaction()
534 test_bit(EC_FLAGS_QUERY_GUARDING, &ec->flags))) { in advance_transaction()
535 clear_bit(EC_FLAGS_QUERY_GUARDING, &ec->flags); in advance_transaction()
536 acpi_ec_complete_query(ec); in advance_transaction()
544 acpi_ec_write_data(ec, t->wdata[t->wi++]); in advance_transaction()
549 t->rdata[t->ri++] = acpi_ec_read_data(ec); in advance_transaction()
551 ec_transaction_transition(ec, ACPI_EC_COMMAND_COMPLETE); in advance_transaction()
561 ec_transaction_transition(ec, ACPI_EC_COMMAND_COMPLETE); in advance_transaction()
569 ec_transaction_transition(ec, ACPI_EC_COMMAND_POLL); in advance_transaction()
571 ec_transaction_transition(ec, ACPI_EC_COMMAND_COMPLETE); in advance_transaction()
576 acpi_ec_write_cmd(ec, t->command); in advance_transaction()
577 ec_transaction_transition(ec, ACPI_EC_COMMAND_POLL); in advance_transaction()
593 acpi_ec_set_storm(ec, EC_FLAGS_COMMAND_STORM); in advance_transaction()
598 acpi_ec_submit_query(ec); in advance_transaction()
600 wake_up(&ec->wait); in advance_transaction()
603 static void start_transaction(struct acpi_ec *ec) in start_transaction() argument
605 ec->curr->irq_count = ec->curr->wi = ec->curr->ri = 0; in start_transaction()
606 ec->curr->flags = 0; in start_transaction()
609 static int ec_guard(struct acpi_ec *ec) in ec_guard() argument
612 unsigned long timeout = ec->timestamp + guard; in ec_guard()
618 if (ec_transaction_completed(ec)) in ec_guard()
632 if (!ec_transaction_polled(ec) && in ec_guard()
633 !acpi_ec_guard_event(ec)) in ec_guard()
635 if (wait_event_timeout(ec->wait, in ec_guard()
636 ec_transaction_completed(ec), in ec_guard()
644 static int ec_poll(struct acpi_ec *ec) in ec_poll() argument
653 if (!ec_guard(ec)) in ec_poll()
655 spin_lock_irqsave(&ec->lock, flags); in ec_poll()
656 advance_transaction(ec); in ec_poll()
657 spin_unlock_irqrestore(&ec->lock, flags); in ec_poll()
660 spin_lock_irqsave(&ec->lock, flags); in ec_poll()
661 start_transaction(ec); in ec_poll()
662 spin_unlock_irqrestore(&ec->lock, flags); in ec_poll()
667 static int acpi_ec_transaction_unlocked(struct acpi_ec *ec, in acpi_ec_transaction_unlocked() argument
674 spin_lock_irqsave(&ec->lock, tmp); in acpi_ec_transaction_unlocked()
676 if (!acpi_ec_submit_flushable_request(ec)) { in acpi_ec_transaction_unlocked()
680 ec_dbg_ref(ec, "Increase command"); in acpi_ec_transaction_unlocked()
682 ec->curr = t; in acpi_ec_transaction_unlocked()
684 start_transaction(ec); in acpi_ec_transaction_unlocked()
685 spin_unlock_irqrestore(&ec->lock, tmp); in acpi_ec_transaction_unlocked()
687 ret = ec_poll(ec); in acpi_ec_transaction_unlocked()
689 spin_lock_irqsave(&ec->lock, tmp); in acpi_ec_transaction_unlocked()
691 acpi_ec_clear_storm(ec, EC_FLAGS_COMMAND_STORM); in acpi_ec_transaction_unlocked()
693 ec->curr = NULL; in acpi_ec_transaction_unlocked()
695 acpi_ec_complete_request(ec); in acpi_ec_transaction_unlocked()
696 ec_dbg_ref(ec, "Decrease command"); in acpi_ec_transaction_unlocked()
698 spin_unlock_irqrestore(&ec->lock, tmp); in acpi_ec_transaction_unlocked()
702 static int acpi_ec_transaction(struct acpi_ec *ec, struct transaction *t) in acpi_ec_transaction() argument
707 if (!ec || (!t) || (t->wlen && !t->wdata) || (t->rlen && !t->rdata)) in acpi_ec_transaction()
712 mutex_lock(&ec->mutex); in acpi_ec_transaction()
713 if (ec->global_lock) { in acpi_ec_transaction()
721 status = acpi_ec_transaction_unlocked(ec, t); in acpi_ec_transaction()
723 if (ec->global_lock) in acpi_ec_transaction()
726 mutex_unlock(&ec->mutex); in acpi_ec_transaction()
730 static int acpi_ec_burst_enable(struct acpi_ec *ec) in acpi_ec_burst_enable() argument
737 return acpi_ec_transaction(ec, &t); in acpi_ec_burst_enable()
740 static int acpi_ec_burst_disable(struct acpi_ec *ec) in acpi_ec_burst_disable() argument
746 return (acpi_ec_read_status(ec) & ACPI_EC_FLAG_BURST) ? in acpi_ec_burst_disable()
747 acpi_ec_transaction(ec, &t) : 0; in acpi_ec_burst_disable()
750 static int acpi_ec_read(struct acpi_ec *ec, u8 address, u8 *data) in acpi_ec_read() argument
758 result = acpi_ec_transaction(ec, &t); in acpi_ec_read()
763 static int acpi_ec_write(struct acpi_ec *ec, u8 address, u8 data) in acpi_ec_write() argument
770 return acpi_ec_transaction(ec, &t); in acpi_ec_write()
832 static void acpi_ec_clear(struct acpi_ec *ec) in acpi_ec_clear() argument
838 status = acpi_ec_query(ec, &value); in acpi_ec_clear()
849 static void acpi_ec_start(struct acpi_ec *ec, bool resuming) in acpi_ec_start() argument
853 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_start()
854 if (!test_and_set_bit(EC_FLAGS_STARTED, &ec->flags)) { in acpi_ec_start()
858 acpi_ec_submit_request(ec); in acpi_ec_start()
859 ec_dbg_ref(ec, "Increase driver"); in acpi_ec_start()
863 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_start()
866 static bool acpi_ec_stopped(struct acpi_ec *ec) in acpi_ec_stopped() argument
871 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_stopped()
872 flushed = acpi_ec_flushed(ec); in acpi_ec_stopped()
873 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_stopped()
877 static void acpi_ec_stop(struct acpi_ec *ec, bool suspending) in acpi_ec_stop() argument
881 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_stop()
882 if (acpi_ec_started(ec)) { in acpi_ec_stop()
884 set_bit(EC_FLAGS_STOPPED, &ec->flags); in acpi_ec_stop()
885 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_stop()
886 wait_event(ec->wait, acpi_ec_stopped(ec)); in acpi_ec_stop()
887 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_stop()
890 acpi_ec_complete_request(ec); in acpi_ec_stop()
891 ec_dbg_ref(ec, "Decrease driver"); in acpi_ec_stop()
893 clear_bit(EC_FLAGS_STARTED, &ec->flags); in acpi_ec_stop()
894 clear_bit(EC_FLAGS_STOPPED, &ec->flags); in acpi_ec_stop()
897 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_stop()
902 struct acpi_ec *ec = first_ec; in acpi_ec_block_transactions() local
904 if (!ec) in acpi_ec_block_transactions()
907 mutex_lock(&ec->mutex); in acpi_ec_block_transactions()
909 acpi_ec_stop(ec, true); in acpi_ec_block_transactions()
910 mutex_unlock(&ec->mutex); in acpi_ec_block_transactions()
915 struct acpi_ec *ec = first_ec; in acpi_ec_unblock_transactions() local
917 if (!ec) in acpi_ec_unblock_transactions()
921 acpi_ec_start(ec, true); in acpi_ec_unblock_transactions()
924 acpi_ec_clear(ec); in acpi_ec_unblock_transactions()
949 acpi_ec_get_query_handler_by_value(struct acpi_ec *ec, u8 value) in acpi_ec_get_query_handler_by_value() argument
954 mutex_lock(&ec->mutex); in acpi_ec_get_query_handler_by_value()
955 list_for_each_entry(handler, &ec->list, node) { in acpi_ec_get_query_handler_by_value()
961 mutex_unlock(&ec->mutex); in acpi_ec_get_query_handler_by_value()
978 int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit, in acpi_ec_add_query_handler() argument
992 mutex_lock(&ec->mutex); in acpi_ec_add_query_handler()
994 list_add(&handler->node, &ec->list); in acpi_ec_add_query_handler()
995 mutex_unlock(&ec->mutex); in acpi_ec_add_query_handler()
1000 static void acpi_ec_remove_query_handlers(struct acpi_ec *ec, in acpi_ec_remove_query_handlers() argument
1006 mutex_lock(&ec->mutex); in acpi_ec_remove_query_handlers()
1007 list_for_each_entry_safe(handler, tmp, &ec->list, node) { in acpi_ec_remove_query_handlers()
1013 mutex_unlock(&ec->mutex); in acpi_ec_remove_query_handlers()
1018 void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit) in acpi_ec_remove_query_handler() argument
1020 acpi_ec_remove_query_handlers(ec, false, query_bit); in acpi_ec_remove_query_handler()
1063 static int acpi_ec_query(struct acpi_ec *ec, u8 *data) in acpi_ec_query() argument
1078 result = acpi_ec_transaction(ec, &q->transaction); in acpi_ec_query()
1084 q->handler = acpi_ec_get_query_handler_by_value(ec, value); in acpi_ec_query()
1113 static void acpi_ec_check_event(struct acpi_ec *ec) in acpi_ec_check_event() argument
1118 if (ec_guard(ec)) { in acpi_ec_check_event()
1119 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_check_event()
1124 if (!ec->curr) in acpi_ec_check_event()
1125 advance_transaction(ec); in acpi_ec_check_event()
1126 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_check_event()
1134 struct acpi_ec *ec = container_of(work, struct acpi_ec, work); in acpi_ec_event_handler() local
1138 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_event_handler()
1139 while (ec->nr_pending_queries) { in acpi_ec_event_handler()
1140 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_event_handler()
1141 (void)acpi_ec_query(ec, NULL); in acpi_ec_event_handler()
1142 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_event_handler()
1143 ec->nr_pending_queries--; in acpi_ec_event_handler()
1150 if (!ec->nr_pending_queries) { in acpi_ec_event_handler()
1153 acpi_ec_complete_query(ec); in acpi_ec_event_handler()
1156 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_event_handler()
1160 acpi_ec_check_event(ec); in acpi_ec_event_handler()
1167 struct acpi_ec *ec = data; in acpi_ec_gpe_handler() local
1169 spin_lock_irqsave(&ec->lock, flags); in acpi_ec_gpe_handler()
1170 advance_transaction(ec); in acpi_ec_gpe_handler()
1171 spin_unlock_irqrestore(&ec->lock, flags); in acpi_ec_gpe_handler()
1184 struct acpi_ec *ec = handler_context; in acpi_ec_space_handler() local
1195 acpi_ec_burst_enable(ec); in acpi_ec_space_handler()
1199 acpi_ec_read(ec, address, value) : in acpi_ec_space_handler()
1200 acpi_ec_write(ec, address, *value); in acpi_ec_space_handler()
1203 acpi_ec_burst_disable(ec); in acpi_ec_space_handler()
1226 struct acpi_ec *ec = kzalloc(sizeof(struct acpi_ec), GFP_KERNEL); in make_acpi_ec() local
1228 if (!ec) in make_acpi_ec()
1230 ec->flags = 1 << EC_FLAGS_QUERY_PENDING; in make_acpi_ec()
1231 mutex_init(&ec->mutex); in make_acpi_ec()
1232 init_waitqueue_head(&ec->wait); in make_acpi_ec()
1233 INIT_LIST_HEAD(&ec->list); in make_acpi_ec()
1234 spin_lock_init(&ec->lock); in make_acpi_ec()
1235 INIT_WORK(&ec->work, acpi_ec_event_handler); in make_acpi_ec()
1236 ec->timestamp = jiffies; in make_acpi_ec()
1237 return ec; in make_acpi_ec()
1246 struct acpi_ec *ec = context; in acpi_ec_register_query_methods() local
1253 acpi_ec_add_query_handler(ec, value, handle, NULL, NULL); in acpi_ec_register_query_methods()
1262 struct acpi_ec *ec = context; in ec_parse_device() local
1265 ec->command_addr = ec->data_addr = 0; in ec_parse_device()
1268 ec_parse_io_ports, ec); in ec_parse_device()
1277 ec->gpe = tmp; in ec_parse_device()
1281 ec->global_lock = tmp; in ec_parse_device()
1282 ec->handle = handle; in ec_parse_device()
1286 static int ec_install_handlers(struct acpi_ec *ec) in ec_install_handlers() argument
1290 if (test_bit(EC_FLAGS_HANDLERS_INSTALLED, &ec->flags)) in ec_install_handlers()
1292 status = acpi_install_gpe_raw_handler(NULL, ec->gpe, in ec_install_handlers()
1294 &acpi_ec_gpe_handler, ec); in ec_install_handlers()
1298 acpi_ec_start(ec, false); in ec_install_handlers()
1299 status = acpi_install_address_space_handler(ec->handle, in ec_install_handlers()
1302 NULL, ec); in ec_install_handlers()
1313 acpi_ec_stop(ec, false); in ec_install_handlers()
1314 acpi_remove_gpe_handler(NULL, ec->gpe, in ec_install_handlers()
1320 set_bit(EC_FLAGS_HANDLERS_INSTALLED, &ec->flags); in ec_install_handlers()
1324 static void ec_remove_handlers(struct acpi_ec *ec) in ec_remove_handlers() argument
1326 if (!test_bit(EC_FLAGS_HANDLERS_INSTALLED, &ec->flags)) in ec_remove_handlers()
1328 acpi_ec_stop(ec, false); in ec_remove_handlers()
1329 if (ACPI_FAILURE(acpi_remove_address_space_handler(ec->handle, in ec_remove_handlers()
1332 if (ACPI_FAILURE(acpi_remove_gpe_handler(NULL, ec->gpe, in ec_remove_handlers()
1335 clear_bit(EC_FLAGS_HANDLERS_INSTALLED, &ec->flags); in ec_remove_handlers()
1340 struct acpi_ec *ec = NULL; in acpi_ec_add() local
1350 ec = boot_ec; in acpi_ec_add()
1353 ec = make_acpi_ec(); in acpi_ec_add()
1354 if (!ec) in acpi_ec_add()
1357 if (ec_parse_device(device->handle, 0, ec, NULL) != in acpi_ec_add()
1359 kfree(ec); in acpi_ec_add()
1364 acpi_walk_namespace(ACPI_TYPE_METHOD, ec->handle, 1, in acpi_ec_add()
1365 acpi_ec_register_query_methods, NULL, ec, NULL); in acpi_ec_add()
1368 first_ec = ec; in acpi_ec_add()
1369 device->driver_data = ec; in acpi_ec_add()
1371 ret = !!request_region(ec->data_addr, 1, "EC data"); in acpi_ec_add()
1372 WARN(!ret, "Could not request EC data io port 0x%lx", ec->data_addr); in acpi_ec_add()
1373 ret = !!request_region(ec->command_addr, 1, "EC cmd"); in acpi_ec_add()
1374 WARN(!ret, "Could not request EC cmd io port 0x%lx", ec->command_addr); in acpi_ec_add()
1377 ec->gpe, ec->command_addr, ec->data_addr); in acpi_ec_add()
1379 ret = ec_install_handlers(ec); in acpi_ec_add()
1382 acpi_walk_dep_device_list(ec->handle); in acpi_ec_add()
1385 clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags); in acpi_ec_add()
1389 acpi_ec_clear(ec); in acpi_ec_add()
1395 struct acpi_ec *ec; in acpi_ec_remove() local
1400 ec = acpi_driver_data(device); in acpi_ec_remove()
1401 ec_remove_handlers(ec); in acpi_ec_remove()
1402 acpi_ec_remove_query_handlers(ec, true, 0); in acpi_ec_remove()
1403 release_region(ec->data_addr, 1); in acpi_ec_remove()
1404 release_region(ec->command_addr, 1); in acpi_ec_remove()
1406 if (ec == first_ec) in acpi_ec_remove()
1408 kfree(ec); in acpi_ec_remove()
1415 struct acpi_ec *ec = context; in ec_parse_io_ports() local
1425 if (ec->data_addr == 0) in ec_parse_io_ports()
1426 ec->data_addr = resource->data.io.minimum; in ec_parse_io_ports()
1427 else if (ec->command_addr == 0) in ec_parse_io_ports()
1428 ec->command_addr = resource->data.io.minimum; in ec_parse_io_ports()