home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / arm / mach-ep93xx / include / mach / uncompress.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.2 KB  |  95 lines

  1. /*
  2.  * arch/arm/mach-ep93xx/include/mach/uncompress.h
  3.  *
  4.  * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
  5.  *
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or (at
  9.  * your option) any later version.
  10.  */
  11.  
  12. #include <mach/ep93xx-regs.h>
  13.  
  14. static unsigned char __raw_readb(unsigned int ptr)
  15. {
  16.     return *((volatile unsigned char *)ptr);
  17. }
  18.  
  19. static unsigned int __raw_readl(unsigned int ptr)
  20. {
  21.     return *((volatile unsigned int *)ptr);
  22. }
  23.  
  24. static void __raw_writeb(unsigned char value, unsigned int ptr)
  25. {
  26.     *((volatile unsigned char *)ptr) = value;
  27. }
  28.  
  29. static void __raw_writel(unsigned int value, unsigned int ptr)
  30. {
  31.     *((volatile unsigned int *)ptr) = value;
  32. }
  33.  
  34. #if defined(CONFIG_EP93XX_EARLY_UART1)
  35. #define UART_BASE        EP93XX_UART1_PHYS_BASE
  36. #elif defined(CONFIG_EP93XX_EARLY_UART2)
  37. #define UART_BASE        EP93XX_UART2_PHYS_BASE
  38. #elif defined(CONFIG_EP93XX_EARLY_UART3)
  39. #define UART_BASE        EP93XX_UART3_PHYS_BASE
  40. #else
  41. #define UART_BASE        EP93XX_UART1_PHYS_BASE
  42. #endif
  43.  
  44. #define PHYS_UART_DATA        (UART_BASE + 0x00)
  45. #define PHYS_UART_FLAG        (UART_BASE + 0x18)
  46. #define UART_FLAG_TXFF        0x20
  47.  
  48. static inline void putc(int c)
  49. {
  50.     int i;
  51.  
  52.     for (i = 0; i < 1000; i++) {
  53.         /* Transmit fifo not full?  */
  54.         if (!(__raw_readb(PHYS_UART_FLAG) & UART_FLAG_TXFF))
  55.             break;
  56.     }
  57.  
  58.     __raw_writeb(c, PHYS_UART_DATA);
  59. }
  60.  
  61. static inline void flush(void)
  62. {
  63. }
  64.  
  65.  
  66. /*
  67.  * Some bootloaders don't turn off DMA from the ethernet MAC before
  68.  * jumping to linux, which means that we might end up with bits of RX
  69.  * status and packet data scribbled over the uncompressed kernel image.
  70.  * Work around this by resetting the ethernet MAC before we uncompress.
  71.  */
  72. #define PHYS_ETH_SELF_CTL        0x80010020
  73. #define ETH_SELF_CTL_RESET        0x00000001
  74.  
  75. static void ethernet_reset(void)
  76. {
  77.     unsigned int v;
  78.  
  79.     /* Reset the ethernet MAC.  */
  80.     v = __raw_readl(PHYS_ETH_SELF_CTL);
  81.     __raw_writel(v | ETH_SELF_CTL_RESET, PHYS_ETH_SELF_CTL);
  82.  
  83.     /* Wait for reset to finish.  */
  84.     while (__raw_readl(PHYS_ETH_SELF_CTL) & ETH_SELF_CTL_RESET)
  85.         ;
  86. }
  87.  
  88.  
  89. static void arch_decomp_setup(void)
  90. {
  91.     ethernet_reset();
  92. }
  93.  
  94. #define arch_decomp_wdog()
  95.