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

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * linux/arch/arm/mach-sa1100/jornada720.c
  3.  */
  4. #include <linux/init.h>
  5. #include <linux/kernel.h>
  6. #include <linux/tty.h>
  7. #include <linux/delay.h>
  8. #include <asm/hardware.h>
  9. #include <asm/setup.h>
  10. #include <asm/mach/arch.h>
  11. #include <asm/mach/map.h>
  12. #include <asm/mach/serial_sa1100.h>
  13. #include "generic.h"
  14. #include "sa1111.h"
  15. #define JORTUCR_VAL 0x20000400
  16. #define JORSKCR_INIT 0x00002081 /* Turn off VCO to enable PLL, set Ready En and enable nOE assertion from DC */
  17. #define JORSKCR_RCLK 0x00002083 /* Add turning on RCLK to above */
  18. #define JORSKCR_VAL 0x0000001B /* sets the 1101 control register to on */
  19. static int __init jornada720_init(void)
  20. {
  21. GPDR |= GPIO_GPIO20;
  22. TUCR = JORTUCR_VAL; /* set the oscillator out to the SA-1101 */
  23. GPSR = GPIO_GPIO20;
  24. udelay(1);
  25. GPCR = GPIO_GPIO20;
  26. udelay(1);
  27. GPSR = GPIO_GPIO20;
  28. udelay(20);
  29. SKCR = JORSKCR_INIT; /* Turn on the PLL, enable Ready and enable nOE assertion from DC */
  30. mdelay(100);
  31. SBI_SKCR = JORSKCR_RCLK;/* turn on the RCLOCK */
  32. SBI_SMCR = 0x35; /* initialize the SMC (debug SA-1111 reset */
  33. PCCR = 0; /* initialize the S2MC (debug SA-1111 reset) */
  34. /* LDD4 is speaker, LDD3 is microphone */
  35. PPSR &= ~(PPC_LDD3 | PPC_LDD4);
  36. PPDR |= PPC_LDD3 | PPC_LDD4;
  37. /* initialize extra IRQs */
  38. set_GPIO_IRQ_edge(GPIO_GPIO1, GPIO_RISING_EDGE);
  39. sa1111_init_irq(IRQ_GPIO1); /* chained on GPIO 1 */
  40. return 0;
  41. }
  42. __initcall(jornada720_init);
  43. static void __init
  44. fixup_jornada720(struct machine_desc *desc, struct param_struct *params,
  45.  char **cmdline, struct meminfo *mi)
  46. {
  47. SET_BANK( 0, 0xc0000000, 32*1024*1024 );
  48. mi->nr_banks = 1;
  49. }
  50. static struct map_desc jornada720_io_desc[] __initdata = {
  51.  /* virtual     physical    length      domain     r  w  c  b */
  52.   { 0xe8000000, 0x00000000, 0x02000000, DOMAIN_IO, 0, 1, 0, 0 }, /* Flash bank 0 */
  53.   { 0xf0000000, 0x48000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* Epson registers */
  54.   { 0xf1000000, 0x48200000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* Epson frame buffer */
  55.   { 0xf4000000, 0x40000000, 0x00100000, DOMAIN_IO, 0, 1, 0, 0 }, /* SA-1111 */
  56.   LAST_DESC
  57. };
  58. static void __init jornada720_map_io(void)
  59. {
  60. sa1100_map_io();
  61. iotable_init(jornada720_io_desc);
  62. sa1100_register_uart(0, 3);
  63. sa1100_register_uart(1, 1);
  64. }
  65. MACHINE_START(JORNADA720, "HP Jornada 720")
  66. BOOT_MEM(0xc0000000, 0x80000000, 0xf8000000)
  67. BOOT_PARAMS(0xc0000100)
  68. FIXUP(fixup_jornada720)
  69. MAPIO(jornada720_map_io)
  70. INITIRQ(sa1100_init_irq)
  71. MACHINE_END