uboot/include/asm-avr32/io.h
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2006 Atmel Corporation
   3 *
   4 * See file CREDITS for list of people who contributed to this
   5 * project.
   6 *
   7 * This program is free software; you can redistribute it and/or
   8 * modify it under the terms of the GNU General Public License as
   9 * published by the Free Software Foundation; either version 2 of
  10 * the License, or (at your option) any later version.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 *
  17 * You should have received a copy of the GNU General Public License
  18 * along with this program; if not, write to the Free Software
  19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  20 * MA 02111-1307 USA
  21 */
  22#ifndef __ASM_AVR32_IO_H
  23#define __ASM_AVR32_IO_H
  24
  25#include <asm/types.h>
  26
  27#ifdef __KERNEL__
  28
  29/*
  30 * Generic IO read/write.  These perform native-endian accesses.  Note
  31 * that some architectures will want to re-define __raw_{read,write}w.
  32 */
  33extern void __raw_writesb(unsigned int addr, const void *data, int bytelen);
  34extern void __raw_writesw(unsigned int addr, const void *data, int wordlen);
  35extern void __raw_writesl(unsigned int addr, const void *data, int longlen);
  36
  37extern void __raw_readsb(unsigned int addr, void *data, int bytelen);
  38extern void __raw_readsw(unsigned int addr, void *data, int wordlen);
  39extern void __raw_readsl(unsigned int addr, void *data, int longlen);
  40
  41#define __raw_writeb(v,a)       (*(volatile unsigned char  *)(a) = (v))
  42#define __raw_writew(v,a)       (*(volatile unsigned short *)(a) = (v))
  43#define __raw_writel(v,a)       (*(volatile unsigned int   *)(a) = (v))
  44
  45#define __raw_readb(a)          (*(volatile unsigned char  *)(a))
  46#define __raw_readw(a)          (*(volatile unsigned short *)(a))
  47#define __raw_readl(a)          (*(volatile unsigned int   *)(a))
  48
  49/* As long as I/O is only performed in P4 (or possibly P3), we're safe */
  50#define writeb(v,a)             __raw_writeb(v,a)
  51#define writew(v,a)             __raw_writew(v,a)
  52#define writel(v,a)             __raw_writel(v,a)
  53
  54#define readb(a)                __raw_readb(a)
  55#define readw(a)                __raw_readw(a)
  56#define readl(a)                __raw_readl(a)
  57
  58/*
  59 * Bad read/write accesses...
  60 */
  61extern void __readwrite_bug(const char *fn);
  62
  63#define IO_SPACE_LIMIT  0xffffffff
  64
  65/*
  66 * All I/O is memory mapped, so these macros doesn't make very much sense
  67 */
  68#define outb(v,p)               __raw_writeb(v, p)
  69#define outw(v,p)               __raw_writew(cpu_to_le16(v),p)
  70#define outl(v,p)               __raw_writel(cpu_to_le32(v),p)
  71
  72#define inb(p)  ({ unsigned int __v = __raw_readb(p); __v; })
  73#define inw(p)  ({ unsigned int __v = __le16_to_cpu(__raw_readw(p)); __v; })
  74#define inl(p)  ({ unsigned int __v = __le32_to_cpu(__raw_readl(p)); __v; })
  75
  76#include <asm/arch/addrspace.h>
  77/* Provides virt_to_phys, phys_to_virt, cached, uncached, map_physmem */
  78
  79#endif /* __KERNEL__ */
  80
  81static inline void sync(void)
  82{
  83}
  84
  85/*
  86 * Take down a mapping set up by map_physmem().
  87 */
  88static inline void unmap_physmem(void *vaddr, unsigned long len)
  89{
  90
  91}
  92
  93#endif /* __ASM_AVR32_IO_H */
  94