gmux_data 102 drivers/platform/x86/apple-gmux.c static u8 gmux_pio_read8(struct apple_gmux_data *gmux_data, int port) gmux_data 104 drivers/platform/x86/apple-gmux.c return inb(gmux_data->iostart + port); gmux_data 107 drivers/platform/x86/apple-gmux.c static void gmux_pio_write8(struct apple_gmux_data *gmux_data, int port, gmux_data 110 drivers/platform/x86/apple-gmux.c outb(val, gmux_data->iostart + port); gmux_data 113 drivers/platform/x86/apple-gmux.c static u32 gmux_pio_read32(struct apple_gmux_data *gmux_data, int port) gmux_data 115 drivers/platform/x86/apple-gmux.c return inl(gmux_data->iostart + port); gmux_data 118 drivers/platform/x86/apple-gmux.c static void gmux_pio_write32(struct apple_gmux_data *gmux_data, int port, gmux_data 126 drivers/platform/x86/apple-gmux.c outb(tmpval, gmux_data->iostart + port + i); gmux_data 130 drivers/platform/x86/apple-gmux.c static int gmux_index_wait_ready(struct apple_gmux_data *gmux_data) gmux_data 133 drivers/platform/x86/apple-gmux.c u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 136 drivers/platform/x86/apple-gmux.c inb(gmux_data->iostart + GMUX_PORT_READ); gmux_data 137 drivers/platform/x86/apple-gmux.c gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 145 drivers/platform/x86/apple-gmux.c static int gmux_index_wait_complete(struct apple_gmux_data *gmux_data) gmux_data 148 drivers/platform/x86/apple-gmux.c u8 gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 151 drivers/platform/x86/apple-gmux.c gwr = inb(gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 157 drivers/platform/x86/apple-gmux.c inb(gmux_data->iostart + GMUX_PORT_READ); gmux_data 162 drivers/platform/x86/apple-gmux.c static u8 gmux_index_read8(struct apple_gmux_data *gmux_data, int port) gmux_data 166 drivers/platform/x86/apple-gmux.c mutex_lock(&gmux_data->index_lock); gmux_data 167 drivers/platform/x86/apple-gmux.c gmux_index_wait_ready(gmux_data); gmux_data 168 drivers/platform/x86/apple-gmux.c outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); gmux_data 169 drivers/platform/x86/apple-gmux.c gmux_index_wait_complete(gmux_data); gmux_data 170 drivers/platform/x86/apple-gmux.c val = inb(gmux_data->iostart + GMUX_PORT_VALUE); gmux_data 171 drivers/platform/x86/apple-gmux.c mutex_unlock(&gmux_data->index_lock); gmux_data 176 drivers/platform/x86/apple-gmux.c static void gmux_index_write8(struct apple_gmux_data *gmux_data, int port, gmux_data 179 drivers/platform/x86/apple-gmux.c mutex_lock(&gmux_data->index_lock); gmux_data 180 drivers/platform/x86/apple-gmux.c outb(val, gmux_data->iostart + GMUX_PORT_VALUE); gmux_data 181 drivers/platform/x86/apple-gmux.c gmux_index_wait_ready(gmux_data); gmux_data 182 drivers/platform/x86/apple-gmux.c outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 183 drivers/platform/x86/apple-gmux.c gmux_index_wait_complete(gmux_data); gmux_data 184 drivers/platform/x86/apple-gmux.c mutex_unlock(&gmux_data->index_lock); gmux_data 187 drivers/platform/x86/apple-gmux.c static u32 gmux_index_read32(struct apple_gmux_data *gmux_data, int port) gmux_data 191 drivers/platform/x86/apple-gmux.c mutex_lock(&gmux_data->index_lock); gmux_data 192 drivers/platform/x86/apple-gmux.c gmux_index_wait_ready(gmux_data); gmux_data 193 drivers/platform/x86/apple-gmux.c outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); gmux_data 194 drivers/platform/x86/apple-gmux.c gmux_index_wait_complete(gmux_data); gmux_data 195 drivers/platform/x86/apple-gmux.c val = inl(gmux_data->iostart + GMUX_PORT_VALUE); gmux_data 196 drivers/platform/x86/apple-gmux.c mutex_unlock(&gmux_data->index_lock); gmux_data 201 drivers/platform/x86/apple-gmux.c static void gmux_index_write32(struct apple_gmux_data *gmux_data, int port, gmux_data 207 drivers/platform/x86/apple-gmux.c mutex_lock(&gmux_data->index_lock); gmux_data 211 drivers/platform/x86/apple-gmux.c outb(tmpval, gmux_data->iostart + GMUX_PORT_VALUE + i); gmux_data 214 drivers/platform/x86/apple-gmux.c gmux_index_wait_ready(gmux_data); gmux_data 215 drivers/platform/x86/apple-gmux.c outb(port & 0xff, gmux_data->iostart + GMUX_PORT_WRITE); gmux_data 216 drivers/platform/x86/apple-gmux.c gmux_index_wait_complete(gmux_data); gmux_data 217 drivers/platform/x86/apple-gmux.c mutex_unlock(&gmux_data->index_lock); gmux_data 220 drivers/platform/x86/apple-gmux.c static u8 gmux_read8(struct apple_gmux_data *gmux_data, int port) gmux_data 222 drivers/platform/x86/apple-gmux.c if (gmux_data->indexed) gmux_data 223 drivers/platform/x86/apple-gmux.c return gmux_index_read8(gmux_data, port); gmux_data 225 drivers/platform/x86/apple-gmux.c return gmux_pio_read8(gmux_data, port); gmux_data 228 drivers/platform/x86/apple-gmux.c static void gmux_write8(struct apple_gmux_data *gmux_data, int port, u8 val) gmux_data 230 drivers/platform/x86/apple-gmux.c if (gmux_data->indexed) gmux_data 231 drivers/platform/x86/apple-gmux.c gmux_index_write8(gmux_data, port, val); gmux_data 233 drivers/platform/x86/apple-gmux.c gmux_pio_write8(gmux_data, port, val); gmux_data 236 drivers/platform/x86/apple-gmux.c static u32 gmux_read32(struct apple_gmux_data *gmux_data, int port) gmux_data 238 drivers/platform/x86/apple-gmux.c if (gmux_data->indexed) gmux_data 239 drivers/platform/x86/apple-gmux.c return gmux_index_read32(gmux_data, port); gmux_data 241 drivers/platform/x86/apple-gmux.c return gmux_pio_read32(gmux_data, port); gmux_data 244 drivers/platform/x86/apple-gmux.c static void gmux_write32(struct apple_gmux_data *gmux_data, int port, gmux_data 247 drivers/platform/x86/apple-gmux.c if (gmux_data->indexed) gmux_data 248 drivers/platform/x86/apple-gmux.c gmux_index_write32(gmux_data, port, val); gmux_data 250 drivers/platform/x86/apple-gmux.c gmux_pio_write32(gmux_data, port, val); gmux_data 253 drivers/platform/x86/apple-gmux.c static bool gmux_is_indexed(struct apple_gmux_data *gmux_data) gmux_data 257 drivers/platform/x86/apple-gmux.c outb(0xaa, gmux_data->iostart + 0xcc); gmux_data 258 drivers/platform/x86/apple-gmux.c outb(0x55, gmux_data->iostart + 0xcd); gmux_data 259 drivers/platform/x86/apple-gmux.c outb(0x00, gmux_data->iostart + 0xce); gmux_data 261 drivers/platform/x86/apple-gmux.c val = inb(gmux_data->iostart + 0xcc) | gmux_data 262 drivers/platform/x86/apple-gmux.c (inb(gmux_data->iostart + 0xcd) << 8); gmux_data 286 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = bl_get_data(bd); gmux_data 287 drivers/platform/x86/apple-gmux.c return gmux_read32(gmux_data, GMUX_PORT_BRIGHTNESS) & gmux_data 293 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = bl_get_data(bd); gmux_data 299 drivers/platform/x86/apple-gmux.c gmux_write32(gmux_data, GMUX_PORT_BRIGHTNESS, brightness); gmux_data 386 drivers/platform/x86/apple-gmux.c static void gmux_read_switch_state(struct apple_gmux_data *gmux_data) gmux_data 388 drivers/platform/x86/apple-gmux.c if (gmux_read8(gmux_data, GMUX_PORT_SWITCH_DDC) == 1) gmux_data 389 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_ddc = VGA_SWITCHEROO_IGD; gmux_data 391 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_ddc = VGA_SWITCHEROO_DIS; gmux_data 393 drivers/platform/x86/apple-gmux.c if (gmux_read8(gmux_data, GMUX_PORT_SWITCH_DISPLAY) == 2) gmux_data 394 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_display = VGA_SWITCHEROO_IGD; gmux_data 396 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_display = VGA_SWITCHEROO_DIS; gmux_data 398 drivers/platform/x86/apple-gmux.c if (gmux_read8(gmux_data, GMUX_PORT_SWITCH_EXTERNAL) == 2) gmux_data 399 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_external = VGA_SWITCHEROO_IGD; gmux_data 401 drivers/platform/x86/apple-gmux.c gmux_data->switch_state_external = VGA_SWITCHEROO_DIS; gmux_data 404 drivers/platform/x86/apple-gmux.c static void gmux_write_switch_state(struct apple_gmux_data *gmux_data) gmux_data 406 drivers/platform/x86/apple-gmux.c if (gmux_data->switch_state_ddc == VGA_SWITCHEROO_IGD) gmux_data 407 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_DDC, 1); gmux_data 409 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_DDC, 2); gmux_data 411 drivers/platform/x86/apple-gmux.c if (gmux_data->switch_state_display == VGA_SWITCHEROO_IGD) gmux_data 412 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_DISPLAY, 2); gmux_data 414 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_DISPLAY, 3); gmux_data 416 drivers/platform/x86/apple-gmux.c if (gmux_data->switch_state_external == VGA_SWITCHEROO_IGD) gmux_data 417 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 2); gmux_data 419 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 3); gmux_data 461 drivers/platform/x86/apple-gmux.c static int gmux_set_discrete_state(struct apple_gmux_data *gmux_data, gmux_data 464 drivers/platform/x86/apple-gmux.c reinit_completion(&gmux_data->powerchange_done); gmux_data 467 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); gmux_data 468 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 3); gmux_data 471 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 1); gmux_data 472 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_DISCRETE_POWER, 0); gmux_data 476 drivers/platform/x86/apple-gmux.c gmux_data->power_state = state; gmux_data 478 drivers/platform/x86/apple-gmux.c if (gmux_data->gpe >= 0 && gmux_data 479 drivers/platform/x86/apple-gmux.c !wait_for_completion_interruptible_timeout(&gmux_data->powerchange_done, gmux_data 533 drivers/platform/x86/apple-gmux.c static inline void gmux_disable_interrupts(struct apple_gmux_data *gmux_data) gmux_data 535 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, gmux_data 539 drivers/platform/x86/apple-gmux.c static inline void gmux_enable_interrupts(struct apple_gmux_data *gmux_data) gmux_data 541 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_ENABLE, gmux_data 545 drivers/platform/x86/apple-gmux.c static inline u8 gmux_interrupt_get_status(struct apple_gmux_data *gmux_data) gmux_data 547 drivers/platform/x86/apple-gmux.c return gmux_read8(gmux_data, GMUX_PORT_INTERRUPT_STATUS); gmux_data 550 drivers/platform/x86/apple-gmux.c static void gmux_clear_interrupts(struct apple_gmux_data *gmux_data) gmux_data 555 drivers/platform/x86/apple-gmux.c status = gmux_interrupt_get_status(gmux_data); gmux_data 556 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_INTERRUPT_STATUS, status); gmux_data 563 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); gmux_data 565 drivers/platform/x86/apple-gmux.c status = gmux_interrupt_get_status(gmux_data); gmux_data 566 drivers/platform/x86/apple-gmux.c gmux_disable_interrupts(gmux_data); gmux_data 569 drivers/platform/x86/apple-gmux.c gmux_clear_interrupts(gmux_data); gmux_data 570 drivers/platform/x86/apple-gmux.c gmux_enable_interrupts(gmux_data); gmux_data 573 drivers/platform/x86/apple-gmux.c complete(&gmux_data->powerchange_done); gmux_data 579 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); gmux_data 581 drivers/platform/x86/apple-gmux.c gmux_disable_interrupts(gmux_data); gmux_data 588 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); gmux_data 590 drivers/platform/x86/apple-gmux.c gmux_enable_interrupts(gmux_data); gmux_data 591 drivers/platform/x86/apple-gmux.c gmux_write_switch_state(gmux_data); gmux_data 592 drivers/platform/x86/apple-gmux.c if (gmux_data->power_state == VGA_SWITCHEROO_OFF) gmux_data 593 drivers/platform/x86/apple-gmux.c gmux_set_discrete_state(gmux_data, gmux_data->power_state); gmux_data 604 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data; gmux_data 616 drivers/platform/x86/apple-gmux.c gmux_data = kzalloc(sizeof(*gmux_data), GFP_KERNEL); gmux_data 617 drivers/platform/x86/apple-gmux.c if (!gmux_data) gmux_data 619 drivers/platform/x86/apple-gmux.c pnp_set_drvdata(pnp, gmux_data); gmux_data 627 drivers/platform/x86/apple-gmux.c gmux_data->iostart = res->start; gmux_data 628 drivers/platform/x86/apple-gmux.c gmux_data->iolen = res->end - res->start; gmux_data 630 drivers/platform/x86/apple-gmux.c if (gmux_data->iolen < GMUX_MIN_IO_LEN) { gmux_data 632 drivers/platform/x86/apple-gmux.c gmux_data->iolen, GMUX_MIN_IO_LEN); gmux_data 636 drivers/platform/x86/apple-gmux.c if (!request_region(gmux_data->iostart, gmux_data->iolen, gmux_data 648 drivers/platform/x86/apple-gmux.c ver_major = gmux_read8(gmux_data, GMUX_PORT_VERSION_MAJOR); gmux_data 649 drivers/platform/x86/apple-gmux.c ver_minor = gmux_read8(gmux_data, GMUX_PORT_VERSION_MINOR); gmux_data 650 drivers/platform/x86/apple-gmux.c ver_release = gmux_read8(gmux_data, GMUX_PORT_VERSION_RELEASE); gmux_data 652 drivers/platform/x86/apple-gmux.c if (gmux_is_indexed(gmux_data)) { gmux_data 654 drivers/platform/x86/apple-gmux.c mutex_init(&gmux_data->index_lock); gmux_data 655 drivers/platform/x86/apple-gmux.c gmux_data->indexed = true; gmux_data 656 drivers/platform/x86/apple-gmux.c version = gmux_read32(gmux_data, gmux_data 668 drivers/platform/x86/apple-gmux.c ver_release, (gmux_data->indexed ? "indexed" : "classic")); gmux_data 672 drivers/platform/x86/apple-gmux.c props.max_brightness = gmux_read32(gmux_data, GMUX_PORT_MAX_BRIGHTNESS); gmux_data 684 drivers/platform/x86/apple-gmux.c gmux_data, &gmux_bl_ops, &props); gmux_data 690 drivers/platform/x86/apple-gmux.c gmux_data->bdev = bdev; gmux_data 703 drivers/platform/x86/apple-gmux.c gmux_data->power_state = VGA_SWITCHEROO_ON; gmux_data 705 drivers/platform/x86/apple-gmux.c gmux_data->dhandle = ACPI_HANDLE(&pnp->dev); gmux_data 706 drivers/platform/x86/apple-gmux.c if (!gmux_data->dhandle) { gmux_data 713 drivers/platform/x86/apple-gmux.c status = acpi_evaluate_integer(gmux_data->dhandle, "GMGP", NULL, &gpe); gmux_data 715 drivers/platform/x86/apple-gmux.c gmux_data->gpe = (int)gpe; gmux_data 717 drivers/platform/x86/apple-gmux.c status = acpi_install_notify_handler(gmux_data->dhandle, gmux_data 727 drivers/platform/x86/apple-gmux.c status = acpi_enable_gpe(NULL, gmux_data->gpe); gmux_data 735 drivers/platform/x86/apple-gmux.c gmux_data->gpe = -1; gmux_data 742 drivers/platform/x86/apple-gmux.c gmux_data->external_switchable = gmux_data 744 drivers/platform/x86/apple-gmux.c if (!gmux_data->external_switchable) gmux_data 745 drivers/platform/x86/apple-gmux.c gmux_write8(gmux_data, GMUX_PORT_SWITCH_EXTERNAL, 3); gmux_data 747 drivers/platform/x86/apple-gmux.c apple_gmux_data = gmux_data; gmux_data 748 drivers/platform/x86/apple-gmux.c init_completion(&gmux_data->powerchange_done); gmux_data 749 drivers/platform/x86/apple-gmux.c gmux_enable_interrupts(gmux_data); gmux_data 750 drivers/platform/x86/apple-gmux.c gmux_read_switch_state(gmux_data); gmux_data 759 drivers/platform/x86/apple-gmux.c if (gmux_data->indexed) gmux_data 773 drivers/platform/x86/apple-gmux.c gmux_disable_interrupts(gmux_data); gmux_data 775 drivers/platform/x86/apple-gmux.c if (gmux_data->gpe >= 0) gmux_data 776 drivers/platform/x86/apple-gmux.c acpi_disable_gpe(NULL, gmux_data->gpe); gmux_data 778 drivers/platform/x86/apple-gmux.c if (gmux_data->gpe >= 0) gmux_data 779 drivers/platform/x86/apple-gmux.c acpi_remove_notify_handler(gmux_data->dhandle, gmux_data 785 drivers/platform/x86/apple-gmux.c release_region(gmux_data->iostart, gmux_data->iolen); gmux_data 787 drivers/platform/x86/apple-gmux.c kfree(gmux_data); gmux_data 793 drivers/platform/x86/apple-gmux.c struct apple_gmux_data *gmux_data = pnp_get_drvdata(pnp); gmux_data 796 drivers/platform/x86/apple-gmux.c gmux_disable_interrupts(gmux_data); gmux_data 797 drivers/platform/x86/apple-gmux.c if (gmux_data->gpe >= 0) { gmux_data 798 drivers/platform/x86/apple-gmux.c acpi_disable_gpe(NULL, gmux_data->gpe); gmux_data 799 drivers/platform/x86/apple-gmux.c acpi_remove_notify_handler(gmux_data->dhandle, gmux_data 804 drivers/platform/x86/apple-gmux.c backlight_device_unregister(gmux_data->bdev); gmux_data 806 drivers/platform/x86/apple-gmux.c release_region(gmux_data->iostart, gmux_data->iolen); gmux_data 808 drivers/platform/x86/apple-gmux.c kfree(gmux_data);