Lines Matching refs:softsp
182 static int power_attach_acpi(struct power_soft_state *softsp);
183 static void power_detach_acpi(struct power_soft_state *softsp);
186 static int power_setup_regs(struct power_soft_state *softsp);
187 static void power_free_regs(struct power_soft_state *softsp);
282 struct power_soft_state *softsp; in power_getinfo() local
289 if ((softsp = ddi_get_soft_state(power_state, power_inst)) in power_getinfo()
292 *result = (void *)softsp->dip; in power_getinfo()
307 struct power_soft_state *softsp; in power_attach() local
338 softsp = ddi_get_soft_state(power_state, power_inst); in power_attach()
339 softsp->dip = dip; in power_attach()
342 (void) power_attach_acpi(softsp); in power_attach()
344 if (power_setup_regs(softsp) != DDI_SUCCESS) { in power_attach()
350 &softsp->high_iblock_cookie) != DDI_SUCCESS) { in power_attach()
355 mutex_init(&softsp->power_intr_mutex, NULL, MUTEX_DRIVER, in power_attach()
356 softsp->high_iblock_cookie); in power_attach()
358 if (ddi_add_intr(dip, 0, &softsp->high_iblock_cookie, NULL, in power_attach()
359 power_high_intr, (caddr_t)softsp) != DDI_SUCCESS) { in power_attach()
362 mutex_destroy(&softsp->power_intr_mutex); in power_attach()
368 &softsp->soft_iblock_cookie) != DDI_SUCCESS) { in power_attach()
371 mutex_destroy(&softsp->power_intr_mutex); in power_attach()
376 mutex_init(&softsp->power_mutex, NULL, MUTEX_DRIVER, in power_attach()
377 (void *)softsp->soft_iblock_cookie); in power_attach()
379 if (ddi_add_softintr(dip, DDI_SOFTINT_LOW, &softsp->softintr_id, in power_attach()
380 NULL, NULL, power_soft_intr, (caddr_t)softsp) != DDI_SUCCESS) { in power_attach()
383 mutex_destroy(&softsp->power_mutex); in power_attach()
384 mutex_destroy(&softsp->power_intr_mutex); in power_attach()
398 power_detach_acpi(softsp); in power_attach()
400 power_free_regs(softsp); in power_attach()
433 struct power_soft_state *softsp = (struct power_soft_state *)arg; in power_high_intr() local
434 ddi_acc_handle_t hdl = softsp->power_rhandle; in power_high_intr()
442 if (softsp->power_regs_mapped) { in power_high_intr()
443 mutex_enter(&softsp->power_intr_mutex); in power_high_intr()
448 EPIC_WR(hdl, softsp->power_btn_reg, in power_high_intr()
451 EPIC_RD(hdl, softsp->power_btn_reg, reg); in power_high_intr()
455 EPIC_WR(hdl, softsp->power_btn_reg, in power_high_intr()
458 if (!softsp->power_btn_ioctl) { in power_high_intr()
459 mutex_exit(&softsp->power_intr_mutex); in power_high_intr()
462 softsp->power_btn_ioctl = B_FALSE; in power_high_intr()
465 reg = ddi_get8(hdl, softsp->power_btn_reg); in power_high_intr()
466 if (reg & softsp->power_btn_bit) { in power_high_intr()
467 reg &= softsp->power_btn_bit; in power_high_intr()
468 ddi_put8(hdl, softsp->power_btn_reg, reg); in power_high_intr()
469 (void) ddi_get8(hdl, softsp->power_btn_reg); in power_high_intr()
471 if (!softsp->power_btn_ioctl) { in power_high_intr()
472 mutex_exit(&softsp->power_intr_mutex); in power_high_intr()
475 softsp->power_btn_ioctl = B_FALSE; in power_high_intr()
478 mutex_exit(&softsp->power_intr_mutex); in power_high_intr()
492 mutex_enter(&softsp->power_intr_mutex); in power_high_intr()
494 mutex_exit(&softsp->power_intr_mutex); in power_high_intr()
506 mutex_enter(&softsp->power_intr_mutex); in power_high_intr()
509 mutex_exit(&softsp->power_intr_mutex); in power_high_intr()
524 if (softsp->softintr_id != NULL) in power_high_intr()
525 ddi_trigger_softintr(softsp->softintr_id); in power_high_intr()
544 struct power_soft_state *softsp = (struct power_soft_state *)arg; in power_soft_intr() local
549 mutex_enter(&softsp->power_intr_mutex); in power_soft_intr()
551 mutex_exit(&softsp->power_intr_mutex); in power_soft_intr()
567 mutex_exit(&softsp->power_intr_mutex); in power_soft_intr()
569 softsp, NSEC_TO_TICK(power_button_abort_interval) + in power_soft_intr()
593 struct power_soft_state *softsp = (struct power_soft_state *)arg; in power_timeout() local
600 mutex_enter(&softsp->power_intr_mutex); in power_timeout()
608 mutex_exit(&softsp->power_intr_mutex); in power_timeout()
631 mutex_exit(&softsp->power_intr_mutex); in power_timeout()
637 mutex_exit(&softsp->power_intr_mutex); in power_timeout()
640 (void) power_issue_shutdown((caddr_t)softsp); in power_timeout()
647 mutex_exit(&softsp->power_intr_mutex); in power_timeout()
677 struct power_soft_state *softsp = (struct power_soft_state *)arg; in power_issue_shutdown() local
679 mutex_enter(&softsp->power_mutex); in power_issue_shutdown()
680 softsp->events |= PB_BUTTON_PRESS; in power_issue_shutdown()
681 if (softsp->monitor_on != 0) { in power_issue_shutdown()
682 mutex_exit(&softsp->power_mutex); in power_issue_shutdown()
683 pollwakeup(&softsp->pollhd, POLLRDNORM); in power_issue_shutdown()
684 pollwakeup(&softsp->pollhd, POLLIN); in power_issue_shutdown()
685 power_gen_sysevent(softsp); in power_issue_shutdown()
689 if (!softsp->shutdown_pending) { in power_issue_shutdown()
692 softsp->shutdown_pending = 1; in power_issue_shutdown()
702 mutex_exit(&softsp->power_mutex); in power_issue_shutdown()
708 power_gen_sysevent(struct power_soft_state *softsp) in power_gen_sysevent() argument
725 if (softsp->gpe_attached) { in power_gen_sysevent()
739 (void) ddi_pathname(softsp->dip, pathname); in power_gen_sysevent()
750 err = ddi_log_sysevent(softsp->dip, DDI_VENDOR_SUNW, EC_PWRCTL, in power_gen_sysevent()
767 struct power_soft_state *softsp; in power_open() local
773 if ((softsp = ddi_get_soft_state(power_state, power_inst)) == in power_open()
777 mutex_enter(&softsp->power_mutex); in power_open()
779 if (!softsp->clones[clone]) in power_open()
785 mutex_exit(&softsp->power_mutex); in power_open()
790 softsp->clones[clone] = 1; in power_open()
791 mutex_exit(&softsp->power_mutex); in power_open()
803 struct power_soft_state *softsp; in power_close() local
809 if ((softsp = ddi_get_soft_state(power_state, power_inst)) == in power_close()
814 mutex_enter(&softsp->power_mutex); in power_close()
815 if (softsp->monitor_on == clone) in power_close()
816 softsp->monitor_on = 0; in power_close()
817 softsp->clones[clone] = 0; in power_close()
818 mutex_exit(&softsp->power_mutex); in power_close()
828 struct power_soft_state *softsp; in power_ioctl() local
831 if ((softsp = ddi_get_soft_state(power_state, power_inst)) == in power_ioctl()
838 mutex_enter(&softsp->power_mutex); in power_ioctl()
839 if (softsp->monitor_on) { in power_ioctl()
840 mutex_exit(&softsp->power_mutex); in power_ioctl()
843 softsp->monitor_on = clone; in power_ioctl()
844 mutex_exit(&softsp->power_mutex); in power_ioctl()
848 mutex_enter(&softsp->power_mutex); in power_ioctl()
855 if (!softsp->monitor_on) { in power_ioctl()
856 mutex_exit(&softsp->power_mutex); in power_ioctl()
863 if (softsp->monitor_on != clone) { in power_ioctl()
864 mutex_exit(&softsp->power_mutex); in power_ioctl()
867 softsp->monitor_on = 0; in power_ioctl()
868 mutex_exit(&softsp->power_mutex); in power_ioctl()
872 mutex_enter(&softsp->power_mutex); in power_ioctl()
873 if (ddi_copyout((void *)&softsp->events, (void *)arg, in power_ioctl()
875 mutex_exit(&softsp->power_mutex); in power_ioctl()
884 softsp->events = 0; in power_ioctl()
885 mutex_exit(&softsp->power_mutex); in power_ioctl()
893 (UINT32)power_acpi_fixed_event((void *)softsp); in power_ioctl()
895 if (softsp->power_regs_mapped) { in power_ioctl()
896 mutex_enter(&softsp->power_intr_mutex); in power_ioctl()
897 softsp->power_btn_ioctl = B_TRUE; in power_ioctl()
898 mutex_exit(&softsp->power_intr_mutex); in power_ioctl()
900 (void) power_high_intr((caddr_t)softsp); in power_ioctl()
914 struct power_soft_state *softsp; in power_chpoll() local
916 if ((softsp = ddi_get_soft_state(power_state, power_inst)) == NULL) in power_chpoll()
919 mutex_enter(&softsp->power_mutex); in power_chpoll()
921 if (softsp->events) in power_chpoll()
925 *phpp = &softsp->pollhd; in power_chpoll()
927 mutex_exit(&softsp->power_mutex); in power_chpoll()
935 struct power_soft_state *softsp; in power_log_message() local
937 if ((softsp = ddi_get_soft_state(power_state, power_inst)) == NULL) { in power_log_message()
942 mutex_enter(&softsp->power_mutex); in power_log_message()
943 softsp->shutdown_pending = 0; in power_log_message()
945 mutex_exit(&softsp->power_mutex); in power_log_message()
1001 power_probe_method_button(struct power_soft_state *softsp) in power_probe_method_button() argument
1006 softsp->button_obj = button_obj; /* remember obj */ in power_probe_method_button()
1009 power_acpi_notify_event, (void*)softsp) == AE_OK)) in power_probe_method_button()
1018 power_probe_fixed_button(struct power_soft_state *softsp) in power_probe_fixed_button() argument
1028 power_acpi_fixed_event, (void *)softsp) == AE_OK) in power_probe_fixed_button()
1039 power_attach_acpi(struct power_soft_state *softsp) in power_attach_acpi() argument
1045 if ((softsp->gpe_attached) || (softsp->fixed_attached)) in power_attach_acpi()
1052 softsp->fixed_attached = (power_probe_fixed_button(softsp) != 0); in power_attach_acpi()
1053 softsp->gpe_attached = (power_probe_method_button(softsp) != 0); in power_attach_acpi()
1058 if ((softsp->gpe_attached) || (softsp->fixed_attached)) in power_attach_acpi()
1068 power_detach_acpi(struct power_soft_state *softsp) in power_detach_acpi() argument
1070 if (softsp->gpe_attached) { in power_detach_acpi()
1071 if (AcpiRemoveNotifyHandler(softsp->button_obj, in power_detach_acpi()
1077 if (softsp->fixed_attached) { in power_detach_acpi()
1091 power_setup_epic_regs(dev_info_t *dip, struct power_soft_state *softsp) in power_setup_epic_regs() argument
1101 &softsp->power_rhandle) != DDI_SUCCESS) { in power_setup_epic_regs()
1105 softsp->power_btn_reg = reg_base; in power_setup_epic_regs()
1106 softsp->power_regs_mapped = B_TRUE; in power_setup_epic_regs()
1109 EPIC_WR(softsp->power_rhandle, softsp->power_btn_reg, in power_setup_epic_regs()
1113 EPIC_WR(softsp->power_rhandle, softsp->power_btn_reg, in power_setup_epic_regs()
1131 power_setup_m1535_regs(dev_info_t *dip, struct power_soft_state *softsp) in power_setup_m1535_regs() argument
1140 &softsp->power_rhandle) != DDI_SUCCESS) { in power_setup_m1535_regs()
1143 softsp->power_btn_reg = ®_base[M1535D_PWR_BTN_REG_01]; in power_setup_m1535_regs()
1144 softsp->power_btn_bit = M1535D_PWR_BTN_EVENT_FLAG; in power_setup_m1535_regs()
1145 softsp->power_regs_mapped = B_TRUE; in power_setup_m1535_regs()
1157 power_setup_mbc_regs(dev_info_t *dip, struct power_soft_state *softsp) in power_setup_mbc_regs() argument
1168 &softsp->power_rhandle) != DDI_SUCCESS) { in power_setup_mbc_regs()
1171 softsp->power_btn_reg = ®_base[FIRE_SSI_ISR]; in power_setup_mbc_regs()
1172 softsp->power_btn_bit = FIRE_SSI_SHUTDOWN_REQ; in power_setup_mbc_regs()
1173 hdl = softsp->power_rhandle; in power_setup_mbc_regs()
1177 reg = ddi_get8(hdl, softsp->power_btn_reg); in power_setup_mbc_regs()
1178 if (reg & softsp->power_btn_bit) { in power_setup_mbc_regs()
1179 reg &= softsp->power_btn_bit; in power_setup_mbc_regs()
1180 ddi_put8(hdl, softsp->power_btn_reg, reg); in power_setup_mbc_regs()
1181 (void) ddi_get8(hdl, softsp->power_btn_reg); in power_setup_mbc_regs()
1190 softsp->power_regs_mapped = B_TRUE; in power_setup_mbc_regs()
1211 power_setup_regs(struct power_soft_state *softsp) in power_setup_regs() argument
1217 softsp->power_regs_mapped = B_FALSE; in power_setup_regs()
1218 softsp->power_btn_ioctl = B_FALSE; in power_setup_regs()
1219 binding_name = ddi_binding_name(softsp->dip); in power_setup_regs()
1220 if (ddi_prop_lookup_string(DDI_DEV_T_ANY, softsp->dip, in power_setup_regs()
1224 retval = power_setup_mbc_regs(softsp->dip, softsp); in power_setup_regs()
1226 retval = power_setup_epic_regs(softsp->dip, softsp); in power_setup_regs()
1234 retval = power_setup_m1535_regs(softsp->dip, softsp); in power_setup_regs()
1247 power_free_regs(struct power_soft_state *softsp) in power_free_regs() argument
1249 if (softsp->power_regs_mapped) in power_free_regs()
1250 ddi_regs_map_free(&softsp->power_rhandle); in power_free_regs()