static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate) { if (port->mapbase == (u_int)&Ser1UTCR0) { if (state) { clear_cs3_bit(RS232_ON); clear_cs3_bit(DECT_POWER_ON); }else { set_cs3_bit(RS232_ON); set_cs3_bit(DECT_POWER_ON); } } }
static void __init simpad_map_io(void) { sa1100_map_io(); iotable_init(simpad_io_desc, ARRAY_SIZE(simpad_io_desc)); set_cs3_bit (EN1 | EN0 | LED2_ON | DISPLAY_ON | RS232_ON | ENABLE_5V | RESET_SIMCARD | DECT_POWER_ON); sa1100_register_uart_fns(&simpad_port_fns); sa1100_register_uart(0, 3); /* serial interface */ sa1100_register_uart(1, 1); /* DECT */ // Reassign UART 1 pins GAFR |= GPIO_UART_TXD | GPIO_UART_RXD; GPDR |= GPIO_UART_TXD | GPIO_LDD13 | GPIO_LDD15; GPDR &= ~GPIO_UART_RXD; PPAR |= PPAR_UPR; /* * Set up registers for sleep mode. */ PWER = PWER_GPIO0| PWER_RTC; PGSR = 0x818; PCFR = 0; PSDR = 0; }
static void __init simpad_map_io(void) { sa1100_map_io(); iotable_init(simpad_io_desc, ARRAY_SIZE(simpad_io_desc)); set_cs3_bit (EN1 | EN0 | LED2_ON | DISPLAY_ON | RS232_ON | ENABLE_5V | RESET_SIMCARD | DECT_POWER_ON); sa1100_register_uart_fns(&simpad_port_fns); sa1100_register_uart(0, 3); sa1100_register_uart(1, 1); GAFR |= GPIO_UART_TXD | GPIO_UART_RXD; GPDR |= GPIO_UART_TXD | GPIO_LDD13 | GPIO_LDD15; GPDR &= ~GPIO_UART_RXD; PPAR |= PPAR_UPR; PWER = PWER_GPIO0| PWER_RTC; PGSR = 0x818; PCFR = 0; PSDR = 0; sa11x0_set_flash_data(&simpad_flash_data, simpad_flash_resources, ARRAY_SIZE(simpad_flash_resources)); sa11x0_set_mcp_data(&simpad_mcp_data); }
static void simpad_uart_pm(struct uart_port *port, u_int state, u_int oldstate) { if (port->mapbase == (u_int)&Ser1UTCR0) { if (state) clear_cs3_bit(RS232_ON); else set_cs3_bit(RS232_ON); } }
static int simpad_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, const socket_state_t *state) { unsigned long flags; local_irq_save(flags); /* Murphy: see table of MIC2562a-1 */ switch (state->Vcc) { case 0: clear_cs3_bit(VCC_3V_EN|VCC_5V_EN|EN0|EN1); break; case 33: clear_cs3_bit(VCC_3V_EN|EN1); set_cs3_bit(VCC_5V_EN|EN0); break; case 50: clear_cs3_bit(VCC_5V_EN|EN1); set_cs3_bit(VCC_3V_EN|EN0); break; default: printk(KERN_ERR "%s(): unrecognized Vcc %u\n", __func__, state->Vcc); clear_cs3_bit(VCC_3V_EN|VCC_5V_EN|EN0|EN1); local_irq_restore(flags); return -1; } local_irq_restore(flags); return 0; }
void simpad_leds_event(led_event_t evt) { switch (evt) { case led_start: hw_led_state = LED_GREEN; led_state = LED_STATE_ENABLED; break; case led_stop: led_state &= ~LED_STATE_ENABLED; break; case led_claim: led_state |= LED_STATE_CLAIMED; hw_led_state = LED_GREEN; break; case led_release: led_state &= ~LED_STATE_CLAIMED; hw_led_state = LED_GREEN; break; #ifdef CONFIG_LEDS_TIMER case led_timer: if (!(led_state & LED_STATE_CLAIMED)) hw_led_state ^= LED_GREEN; break; #endif #ifdef CONFIG_LEDS_CPU case led_idle_start: break; case led_idle_end: break; #endif case led_halted: break; case led_green_on: if (led_state & LED_STATE_CLAIMED) hw_led_state |= LED_GREEN; break; case led_green_off: if (led_state & LED_STATE_CLAIMED) hw_led_state &= ~LED_GREEN; break; case led_amber_on: break; case led_amber_off: break; case led_red_on: break; case led_red_off: break; default: break; } if (led_state & LED_STATE_ENABLED) set_cs3_bit(LED2_ON); else clear_cs3_bit(LED2_ON); }
static void simpad_pcmcia_socket_suspend(struct soc_pcmcia_socket *skt) { soc_pcmcia_disable_irqs(skt, irqs, ARRAY_SIZE(irqs)); set_cs3_bit(PCMCIA_RESET); }