/* See also arch/arm/plat-omap/devices.c for first I2C on 24xx */ static void omap_init_i2c(void) { /* REVISIT: Second I2C not in use on H4? */ if (machine_is_omap_h4()) return; omap_cfg_reg(J15_24XX_I2C2_SCL); omap_cfg_reg(H19_24XX_I2C2_SDA); (void) platform_device_register(&omap_i2c_device2); }
static void omap_init_kp(void) { /* 2430 and 34xx keypad is on TWL4030 */ if (cpu_is_omap2430() || cpu_is_omap34xx()) return; if (machine_is_omap_h2() || machine_is_omap_h3()) { omap_cfg_reg(F18_1610_KBC0); omap_cfg_reg(D20_1610_KBC1); omap_cfg_reg(D19_1610_KBC2); omap_cfg_reg(E18_1610_KBC3); omap_cfg_reg(C21_1610_KBC4); omap_cfg_reg(G18_1610_KBR0); omap_cfg_reg(F19_1610_KBR1); omap_cfg_reg(H14_1610_KBR2); omap_cfg_reg(E20_1610_KBR3); omap_cfg_reg(E19_1610_KBR4); omap_cfg_reg(N19_1610_KBR5); } else if (machine_is_omap_perseus2() || machine_is_omap_fsample()) { omap_cfg_reg(E2_7XX_KBR0); omap_cfg_reg(J7_7XX_KBR1); omap_cfg_reg(E1_7XX_KBR2); omap_cfg_reg(F3_7XX_KBR3); omap_cfg_reg(D2_7XX_KBR4); omap_cfg_reg(C2_7XX_KBC0); omap_cfg_reg(D3_7XX_KBC1); omap_cfg_reg(E4_7XX_KBC2); omap_cfg_reg(F4_7XX_KBC3); omap_cfg_reg(E3_7XX_KBC4); } else if (machine_is_omap_h4()) { omap_cfg_reg(T19_24XX_KBR0); omap_cfg_reg(R19_24XX_KBR1); omap_cfg_reg(V18_24XX_KBR2); omap_cfg_reg(M21_24XX_KBR3); omap_cfg_reg(E5__24XX_KBR4); if (omap_has_menelaus()) { omap_cfg_reg(B3__24XX_KBR5); omap_cfg_reg(AA4_24XX_KBC2); omap_cfg_reg(B13_24XX_KBC6); } else { omap_cfg_reg(M18_24XX_KBR5); omap_cfg_reg(H19_24XX_KBC2); omap_cfg_reg(N19_24XX_KBC6); } omap_cfg_reg(R20_24XX_KBC0); omap_cfg_reg(M14_24XX_KBC1); omap_cfg_reg(V17_24XX_KBC3); omap_cfg_reg(P21_24XX_KBC4); omap_cfg_reg(L14_24XX_KBC5); } }
static void h2p2_dbg_leds_event(led_event_t evt) { unsigned long flags; spin_lock_irqsave(&lock, flags); if (!(led_state & LED_STATE_ENABLED) && evt != led_start) goto done; switch (evt) { case led_start: if (fpga) led_state |= LED_STATE_ENABLED; break; case led_stop: case led_halted: if (!(machine_is_omap_perseus2() || machine_is_omap_h4())) { gpio_set_value(GPIO_TIMER, 0); gpio_set_value(GPIO_IDLE, 0); } __raw_writew(~0, &fpga->leds); led_state &= ~LED_STATE_ENABLED; goto done; case led_claim: led_state |= LED_STATE_CLAIMED; hw_led_state = 0; break; case led_release: led_state &= ~LED_STATE_CLAIMED; break; #ifdef CONFIG_LEDS_TIMER case led_timer: led_state ^= LED_TIMER_ON; if (machine_is_omap_perseus2() || machine_is_omap_h4()) hw_led_state ^= H2P2_DBG_FPGA_P2_LED_TIMER; else { gpio_set_value(GPIO_TIMER, led_state & LED_TIMER_ON); goto done; } break; #endif #ifdef CONFIG_LEDS_CPU case led_idle_start: if (machine_is_omap_perseus2() || machine_is_omap_h4()) hw_led_state &= ~H2P2_DBG_FPGA_P2_LED_IDLE; else { gpio_set_value(GPIO_IDLE, 1); goto done; } break; case led_idle_end: if (machine_is_omap_perseus2() || machine_is_omap_h4()) hw_led_state |= H2P2_DBG_FPGA_P2_LED_IDLE; else { gpio_set_value(GPIO_IDLE, 0); goto done; } break; #endif case led_green_on: hw_led_state |= H2P2_DBG_FPGA_LED_GREEN; break; case led_green_off: hw_led_state &= ~H2P2_DBG_FPGA_LED_GREEN; break; case led_amber_on: hw_led_state |= H2P2_DBG_FPGA_LED_AMBER; break; case led_amber_off: hw_led_state &= ~H2P2_DBG_FPGA_LED_AMBER; break; case led_red_on: hw_led_state |= H2P2_DBG_FPGA_LED_RED; break; case led_red_off: hw_led_state &= ~H2P2_DBG_FPGA_LED_RED; break; case led_blue_on: hw_led_state |= H2P2_DBG_FPGA_LED_BLUE; break; case led_blue_off: hw_led_state &= ~H2P2_DBG_FPGA_LED_BLUE; break; default: break; } if (led_state & LED_STATE_ENABLED) __raw_writew(~hw_led_state, &fpga->leds); done: spin_unlock_irqrestore(&lock, flags); }