27 #include <linux/i2c.h>
34 #include <asm/suspend.h>
40 #include <mach/regs-uart.h>
58 static unsigned long zeus_irq_enabled_mask;
59 static const int zeus_isa_irqs[] = { 3, 4, 5, 6, 7, 10, 11, 12, };
60 static const int zeus_isa_irq_map[] = {
76 static inline int zeus_irq_to_bitmask(
unsigned int irq)
78 return zeus_isa_irq_map[irq - PXA_ISA_IRQ(0)];
81 static inline int zeus_bit_to_irq(
int bit)
83 return zeus_isa_irqs[
bit] + PXA_ISA_IRQ(0);
86 static void zeus_ack_irq(
struct irq_data *
d)
91 static void zeus_mask_irq(
struct irq_data *d)
93 zeus_irq_enabled_mask &= ~(zeus_irq_to_bitmask(d->
irq));
96 static void zeus_unmask_irq(
struct irq_data *d)
98 zeus_irq_enabled_mask |= zeus_irq_to_bitmask(d->
irq);
101 static inline unsigned long zeus_irq_pending(
void)
106 static void zeus_irq_handler(
unsigned int irq,
struct irq_desc *
desc)
108 unsigned long pending;
110 pending = zeus_irq_pending();
117 irq = zeus_bit_to_irq(
__ffs(pending));
120 pending = zeus_irq_pending();
124 static struct irq_chip zeus_irq_chip = {
126 .irq_ack = zeus_ack_irq,
127 .irq_mask = zeus_mask_irq,
128 .irq_unmask = zeus_unmask_irq,
131 static void __init zeus_init_irq(
void)
148 for (level = 0; level <
ARRAY_SIZE(zeus_isa_irqs); level++) {
149 isa_irq = zeus_bit_to_irq(level);
150 irq_set_chip_and_handler(isa_irq, &zeus_irq_chip,
165 static struct resource zeus_mtd_resources[] = {
188 .name =
"physmap-flash",
191 .platform_data = &zeus_flash_data[0],
193 .resource = &zeus_mtd_resources[0],
199 static struct resource zeus_serial_resources[] = {
236 .mapbase = 0x10000000,
245 .mapbase = 0x10800000,
254 .mapbase = 0x11000000,
263 .mapbase = 0x11800000,
273 .membase = (
void *)&
FFUART,
276 .uartclk = 921600 * 16,
282 .membase = (
void *)&
BTUART,
285 .uartclk = 921600 * 16,
291 .membase = (
void *)&
STUART,
294 .uartclk = 921600 * 16,
303 .name =
"serial8250",
306 .platform_data = serial_platform_data,
308 .num_resources =
ARRAY_SIZE(zeus_serial_resources),
309 .resource = zeus_serial_resources,
313 static struct resource zeus_dm9k0_resource[] = {
331 static struct resource zeus_dm9k1_resource[] = {
356 .num_resources =
ARRAY_SIZE(zeus_dm9k0_resource),
357 .resource = zeus_dm9k0_resource,
359 .platform_data = &zeus_dm9k_platdata,
366 .num_resources =
ARRAY_SIZE(zeus_dm9k1_resource),
367 .resource = zeus_dm9k1_resource,
369 .platform_data = &zeus_dm9k_platdata,
374 static struct resource zeus_sram_resource = {
381 .name =
"pxa2xx-8bit-sram",
384 .resource = &zeus_sram_resource,
394 static int zeus_mcp2515_setup(
struct spi_device *sdev)
411 static int zeus_mcp2515_transceiver_enable(
int enable)
418 .oscillator_frequency = 16*1000*1000,
419 .board_specific_setup = zeus_mcp2515_setup,
420 .power_enable = zeus_mcp2515_transceiver_enable,
425 .modalias =
"mcp2515",
426 .platform_data = &zeus_mcp2515_pdata,
428 .max_speed_hz = 1*1000*1000,
436 static struct gpio_led zeus_leds[] = {
438 .name =
"zeus:yellow:1",
439 .default_trigger =
"heartbeat",
444 .name =
"zeus:yellow:2",
445 .default_trigger =
"default-on",
450 .name =
"zeus:yellow:3",
451 .default_trigger =
"default-on",
466 .platform_data = &zeus_leds_info,
470 static void zeus_cf_reset(
int state)
486 .reset = zeus_cf_reset,
490 .name =
"zeus-pcmcia",
493 .platform_data = &zeus_pcmcia_info,
497 static struct resource zeus_max6369_resource = {
504 .name =
"max6369_wdt",
506 .resource = &zeus_max6369_resource,
512 &zeus_mtd_devices[0],
531 static int zeus_ohci_init(
struct device *
dev)
537 dev_err(dev,
"Can't request USB2_PWREN\n");
543 dev_err(dev,
"Can't enable USB2_PWREN\n");
553 static void zeus_ohci_exit(
struct device *dev)
565 .init = zeus_ohci_init,
566 .exit = zeus_ohci_exit,
578 static void zeus_backlight_power(
int on)
583 static int zeus_setup_fb_gpios(
void)
631 .modes = zeus_fb_mode_info,
634 .pxafb_lcd_power = zeus_lcd_power,
635 .pxafb_backlight_power = zeus_backlight_power,
647 .detect_delay_ms = 250,
650 .gpio_card_ro_invert = 1,
657 static void zeus_udc_command(
int cmd)
661 pr_info(
"zeus: disconnecting USB client\n");
666 pr_info(
"zeus: connecting USB client\n");
673 .udc_command = zeus_udc_command,
683 #define zeus_power_off NULL
686 #ifdef CONFIG_APM_EMULATION
695 static inline void zeus_setup_apm(
void)
700 static inline void zeus_setup_apm(
void)
711 for (i = 0; i < 8; i++) {
712 int pcb_bit = gpio + i + 8;
715 dev_err(&client->
dev,
"Can't request pcb info %d\n", i);
720 dev_err(&client->
dev,
"Can't read pcb info %d\n", i);
730 dev_info(&client->
dev,
"Zeus PCB version %d issue %d\n",
731 pcb_info >> 4, pcb_info & 0xf);
740 .setup = zeus_get_pcb_info,
748 .platform_data = &zeus_pca953x_pdata[0],
752 .platform_data = &zeus_pca953x_pdata[1],
756 .platform_data = &zeus_pca953x_pdata[2],
764 static mfp_cfg_t zeus_pin_config[] __initdata = {
823 #define DM9K_MSC_VALUE 0xe4c9
825 static void __init zeus_init(
void)
848 if (zeus_setup_fb_gpios())
849 pr_err(
"Failed to setup fb gpios\n");
862 static struct map_desc zeus_io_desc[] __initdata = {
884 .length = 0x00800000,
889 static void __init zeus_map_io(
void)
908 .atag_offset = 0x100,
909 .map_io = zeus_map_io,
911 .init_irq = zeus_init_irq,
914 .init_machine = zeus_init,