idp.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  linux/arch/arm/mach-pxa/idp.c
  3.  *  
  4.  *  This program is free software; you can redistribute it and/or modify
  5.  *  it under the terms of the GNU General Public License version 2 as
  6.  *  published by the Free Software Foundation.
  7.  *
  8.  *  Copyright (c) 2001 Cliff Brake, Accelent Systems Inc.
  9.  * 
  10.  *  2001-09-13: Cliff Brake <cbrake@accelent.com>
  11.  *              Initial code
  12.  */
  13. #include <linux/init.h>
  14. #include <linux/major.h>
  15. #include <linux/fs.h>
  16. #include <linux/interrupt.h>
  17. #include <linux/sched.h>
  18. #include <asm/types.h>
  19. #include <asm/setup.h>
  20. #include <asm/memory.h>
  21. #include <asm/mach-types.h>
  22. #include <asm/hardware.h>
  23. #include <asm/irq.h>
  24. #include <asm/mach/arch.h>
  25. #include <asm/mach/map.h>
  26. #include <asm/mach/irq.h>
  27. #include <asm/arch/irq.h>
  28. #include "generic.h"
  29. #define PXA_IDP_REV02
  30. #ifndef PXA_IDP_REV02
  31. /* shadow registers for write only registers */
  32. unsigned int idp_cpld_led_control_shadow = 0x1;
  33. unsigned int idp_cpld_periph_pwr_shadow = 0xd;
  34. unsigned int ipd_cpld_cir_shadow = 0;
  35. unsigned int idp_cpld_kb_col_high_shadow = 0;
  36. unsigned int idp_cpld_kb_col_low_shadow = 0;
  37. unsigned int idp_cpld_pccard_en_shadow = 0xC3;
  38. unsigned int idp_cpld_gpioh_dir_shadow = 0;
  39. unsigned int idp_cpld_gpioh_value_shadow = 0;
  40. unsigned int idp_cpld_gpiol_dir_shadow = 0;
  41. unsigned int idp_cpld_gpiol_value_shadow = 0;
  42. /*
  43.  * enable all LCD signals -- they should still be on
  44.  * write protect flash
  45.  * enable all serial port transceivers
  46.  */
  47. unsigned int idp_control_port_shadow = ((0x7 << 21) |  /* LCD power */
  48. (0x1 << 19) | /* disable flash write enable */
  49. (0x7 << 9)); /* enable serial port transeivers */
  50. #endif
  51. static int __init idp_init(void)
  52. {
  53. printk("idp_init()n");
  54. return 0;
  55. }
  56. __initcall(idp_init);
  57. static void __init idp_init_irq(void)
  58. {
  59. pxa_init_irq();
  60. }
  61. static void __init
  62. fixup_idp(struct machine_desc *desc, struct param_struct *params,
  63. char **cmdline, struct meminfo *mi)
  64. {
  65. #ifdef PXA_IDP_REV02
  66. SET_BANK (0, 0xa0000000, 64*1024*1024);
  67. #else
  68. SET_BANK (0, 0xa0000000, 32*1024*1024);
  69. #endif
  70. mi->nr_banks      = 1;
  71. #if 0
  72. setup_ramdisk (1, 0, 0, 8192);
  73. setup_initrd (__phys_to_virt(0xa1000000), 4*1024*1024);
  74. ROOT_DEV = MKDEV(RAMDISK_MAJOR,0);
  75. #endif
  76. }
  77. static struct map_desc idp_io_desc[] __initdata = {
  78.  /* virtual     physical    length      domain     r  w  c  b */
  79. #ifndef PXA_IDP_REV02
  80.   { IDP_CTRL_PORT_BASE,
  81.     IDP_CTRL_PORT_PHYS,
  82.     IDP_CTRL_PORT_SIZE,
  83.     DOMAIN_IO,
  84.     0, 1, 0, 0 },
  85. #endif
  86.   { IDP_IDE_BASE,
  87.     IDP_IDE_PHYS,
  88.     IDP_IDE_SIZE,
  89.     DOMAIN_IO,
  90.     0, 1, 0, 0 },
  91.   { IDP_ETH_BASE,
  92.     IDP_ETH_PHYS,
  93.     IDP_ETH_SIZE,
  94.     DOMAIN_IO,
  95.     0, 1, 0, 0 },
  96.   { IDP_COREVOLT_BASE,
  97.     IDP_COREVOLT_PHYS,
  98.     IDP_COREVOLT_SIZE,
  99.     DOMAIN_IO,
  100.     0, 1, 0, 0 },
  101.   { IDP_CPLD_BASE,
  102.     IDP_CPLD_PHYS,
  103.     IDP_CPLD_SIZE,
  104.     DOMAIN_IO,
  105.     0, 1, 0, 0 },
  106.   LAST_DESC
  107. };
  108. static void __init idp_map_io(void)
  109. {
  110. pxa_map_io();
  111. iotable_init(idp_io_desc);
  112. set_GPIO_IRQ_edge(IRQ_TO_GPIO_2_80(TOUCH_PANEL_IRQ), TOUCH_PANEL_IRQ_EDGE);
  113. }
  114. MACHINE_START(PXA_IDP, "Accelent Xscale IDP")
  115. MAINTAINER("Accelent Systems Inc.")
  116. BOOT_MEM(0xa0000000, 0x40000000, 0xfc000000)
  117. FIXUP(fixup_idp)
  118. MAPIO(idp_map_io)
  119. INITIRQ(idp_init_irq)
  120. MACHINE_END