root/arch/arm/mach-omap1/io.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. omap1_map_common_io
  2. omap7xx_map_io
  3. omap15xx_map_io
  4. omap16xx_map_io
  5. omap1_init_early
  6. omap1_init_late
  7. omap_readb
  8. omap_readw
  9. omap_readl
  10. omap_writeb
  11. omap_writew
  12. omap_writel

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * linux/arch/arm/mach-omap1/io.c
   4  *
   5  * OMAP1 I/O mapping code
   6  */
   7 
   8 #include <linux/module.h>
   9 #include <linux/kernel.h>
  10 #include <linux/init.h>
  11 #include <linux/io.h>
  12 
  13 #include <asm/tlb.h>
  14 #include <asm/mach/map.h>
  15 
  16 #include <mach/mux.h>
  17 #include <mach/tc.h>
  18 #include <linux/omap-dma.h>
  19 
  20 #include "iomap.h"
  21 #include "common.h"
  22 #include "clock.h"
  23 
  24 /*
  25  * The machine specific code may provide the extra mapping besides the
  26  * default mapping provided here.
  27  */
  28 static struct map_desc omap_io_desc[] __initdata = {
  29         {
  30                 .virtual        = OMAP1_IO_VIRT,
  31                 .pfn            = __phys_to_pfn(OMAP1_IO_PHYS),
  32                 .length         = OMAP1_IO_SIZE,
  33                 .type           = MT_DEVICE
  34         }
  35 };
  36 
  37 #if defined (CONFIG_ARCH_OMAP730) || defined (CONFIG_ARCH_OMAP850)
  38 static struct map_desc omap7xx_io_desc[] __initdata = {
  39         {
  40                 .virtual        = OMAP7XX_DSP_BASE,
  41                 .pfn            = __phys_to_pfn(OMAP7XX_DSP_START),
  42                 .length         = OMAP7XX_DSP_SIZE,
  43                 .type           = MT_DEVICE
  44         }, {
  45                 .virtual        = OMAP7XX_DSPREG_BASE,
  46                 .pfn            = __phys_to_pfn(OMAP7XX_DSPREG_START),
  47                 .length         = OMAP7XX_DSPREG_SIZE,
  48                 .type           = MT_DEVICE
  49         }
  50 };
  51 #endif
  52 
  53 #ifdef CONFIG_ARCH_OMAP15XX
  54 static struct map_desc omap1510_io_desc[] __initdata = {
  55         {
  56                 .virtual        = OMAP1510_DSP_BASE,
  57                 .pfn            = __phys_to_pfn(OMAP1510_DSP_START),
  58                 .length         = OMAP1510_DSP_SIZE,
  59                 .type           = MT_DEVICE
  60         }, {
  61                 .virtual        = OMAP1510_DSPREG_BASE,
  62                 .pfn            = __phys_to_pfn(OMAP1510_DSPREG_START),
  63                 .length         = OMAP1510_DSPREG_SIZE,
  64                 .type           = MT_DEVICE
  65         }
  66 };
  67 #endif
  68 
  69 #if defined(CONFIG_ARCH_OMAP16XX)
  70 static struct map_desc omap16xx_io_desc[] __initdata = {
  71         {
  72                 .virtual        = OMAP16XX_DSP_BASE,
  73                 .pfn            = __phys_to_pfn(OMAP16XX_DSP_START),
  74                 .length         = OMAP16XX_DSP_SIZE,
  75                 .type           = MT_DEVICE
  76         }, {
  77                 .virtual        = OMAP16XX_DSPREG_BASE,
  78                 .pfn            = __phys_to_pfn(OMAP16XX_DSPREG_START),
  79                 .length         = OMAP16XX_DSPREG_SIZE,
  80                 .type           = MT_DEVICE
  81         }
  82 };
  83 #endif
  84 
  85 /*
  86  * Maps common IO regions for omap1
  87  */
  88 static void __init omap1_map_common_io(void)
  89 {
  90         iotable_init(omap_io_desc, ARRAY_SIZE(omap_io_desc));
  91 }
  92 
  93 #if defined (CONFIG_ARCH_OMAP730) || defined (CONFIG_ARCH_OMAP850)
  94 void __init omap7xx_map_io(void)
  95 {
  96         omap1_map_common_io();
  97         iotable_init(omap7xx_io_desc, ARRAY_SIZE(omap7xx_io_desc));
  98 }
  99 #endif
 100 
 101 #ifdef CONFIG_ARCH_OMAP15XX
 102 void __init omap15xx_map_io(void)
 103 {
 104         omap1_map_common_io();
 105         iotable_init(omap1510_io_desc, ARRAY_SIZE(omap1510_io_desc));
 106 }
 107 #endif
 108 
 109 #if defined(CONFIG_ARCH_OMAP16XX)
 110 void __init omap16xx_map_io(void)
 111 {
 112         omap1_map_common_io();
 113         iotable_init(omap16xx_io_desc, ARRAY_SIZE(omap16xx_io_desc));
 114 }
 115 #endif
 116 
 117 /*
 118  * Common low-level hardware init for omap1.
 119  */
 120 void __init omap1_init_early(void)
 121 {
 122         omap_check_revision();
 123 
 124         /* REVISIT: Refer to OMAP5910 Errata, Advisory SYS_1: "Timeout Abort
 125          * on a Posted Write in the TIPB Bridge".
 126          */
 127         omap_writew(0x0, MPU_PUBLIC_TIPB_CNTL);
 128         omap_writew(0x0, MPU_PRIVATE_TIPB_CNTL);
 129 
 130         /* Must init clocks early to assure that timer interrupt works
 131          */
 132         omap1_clk_init();
 133         omap1_mux_init();
 134 }
 135 
 136 void __init omap1_init_late(void)
 137 {
 138         omap_serial_wakeup_init();
 139 }
 140 
 141 /*
 142  * NOTE: Please use ioremap + __raw_read/write where possible instead of these
 143  */
 144 
 145 u8 omap_readb(u32 pa)
 146 {
 147         return __raw_readb(OMAP1_IO_ADDRESS(pa));
 148 }
 149 EXPORT_SYMBOL(omap_readb);
 150 
 151 u16 omap_readw(u32 pa)
 152 {
 153         return __raw_readw(OMAP1_IO_ADDRESS(pa));
 154 }
 155 EXPORT_SYMBOL(omap_readw);
 156 
 157 u32 omap_readl(u32 pa)
 158 {
 159         return __raw_readl(OMAP1_IO_ADDRESS(pa));
 160 }
 161 EXPORT_SYMBOL(omap_readl);
 162 
 163 void omap_writeb(u8 v, u32 pa)
 164 {
 165         __raw_writeb(v, OMAP1_IO_ADDRESS(pa));
 166 }
 167 EXPORT_SYMBOL(omap_writeb);
 168 
 169 void omap_writew(u16 v, u32 pa)
 170 {
 171         __raw_writew(v, OMAP1_IO_ADDRESS(pa));
 172 }
 173 EXPORT_SYMBOL(omap_writew);
 174 
 175 void omap_writel(u32 v, u32 pa)
 176 {
 177         __raw_writel(v, OMAP1_IO_ADDRESS(pa));
 178 }
 179 EXPORT_SYMBOL(omap_writel);

/* [<][>][^][v][top][bottom][index][help] */