linux/arch/avr32/mach-at32ap/pio.h
<<
>>
Prefs
   1/*
   2 * Atmel PIO2 Port Multiplexer support
   3 *
   4 * Copyright (C) 2004-2006 Atmel Corporation
   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 version 2 as
   8 * published by the Free Software Foundation.
   9 */
  10#ifndef __ARCH_AVR32_AT32AP_PIO_H__
  11#define __ARCH_AVR32_AT32AP_PIO_H__
  12
  13/* PIO register offsets */
  14#define PIO_PER                                0x0000
  15#define PIO_PDR                                0x0004
  16#define PIO_PSR                                0x0008
  17#define PIO_OER                                0x0010
  18#define PIO_ODR                                0x0014
  19#define PIO_OSR                                0x0018
  20#define PIO_IFER                               0x0020
  21#define PIO_IFDR                               0x0024
  22#define PIO_IFSR                               0x0028
  23#define PIO_SODR                               0x0030
  24#define PIO_CODR                               0x0034
  25#define PIO_ODSR                               0x0038
  26#define PIO_PDSR                               0x003c
  27#define PIO_IER                                0x0040
  28#define PIO_IDR                                0x0044
  29#define PIO_IMR                                0x0048
  30#define PIO_ISR                                0x004c
  31#define PIO_MDER                               0x0050
  32#define PIO_MDDR                               0x0054
  33#define PIO_MDSR                               0x0058
  34#define PIO_PUDR                               0x0060
  35#define PIO_PUER                               0x0064
  36#define PIO_PUSR                               0x0068
  37#define PIO_ASR                                0x0070
  38#define PIO_BSR                                0x0074
  39#define PIO_ABSR                               0x0078
  40#define PIO_OWER                               0x00a0
  41#define PIO_OWDR                               0x00a4
  42#define PIO_OWSR                               0x00a8
  43
  44/* Bitfields in PER */
  45
  46/* Bitfields in PDR */
  47
  48/* Bitfields in PSR */
  49
  50/* Bitfields in OER */
  51
  52/* Bitfields in ODR */
  53
  54/* Bitfields in OSR */
  55
  56/* Bitfields in IFER */
  57
  58/* Bitfields in IFDR */
  59
  60/* Bitfields in IFSR */
  61
  62/* Bitfields in SODR */
  63
  64/* Bitfields in CODR */
  65
  66/* Bitfields in ODSR */
  67
  68/* Bitfields in PDSR */
  69
  70/* Bitfields in IER */
  71
  72/* Bitfields in IDR */
  73
  74/* Bitfields in IMR */
  75
  76/* Bitfields in ISR */
  77
  78/* Bitfields in MDER */
  79
  80/* Bitfields in MDDR */
  81
  82/* Bitfields in MDSR */
  83
  84/* Bitfields in PUDR */
  85
  86/* Bitfields in PUER */
  87
  88/* Bitfields in PUSR */
  89
  90/* Bitfields in ASR */
  91
  92/* Bitfields in BSR */
  93
  94/* Bitfields in ABSR */
  95#define PIO_P0_OFFSET                          0
  96#define PIO_P0_SIZE                            1
  97#define PIO_P1_OFFSET                          1
  98#define PIO_P1_SIZE                            1
  99#define PIO_P2_OFFSET                          2
 100#define PIO_P2_SIZE                            1
 101#define PIO_P3_OFFSET                          3
 102#define PIO_P3_SIZE                            1
 103#define PIO_P4_OFFSET                          4
 104#define PIO_P4_SIZE                            1
 105#define PIO_P5_OFFSET                          5
 106#define PIO_P5_SIZE                            1
 107#define PIO_P6_OFFSET                          6
 108#define PIO_P6_SIZE                            1
 109#define PIO_P7_OFFSET                          7
 110#define PIO_P7_SIZE                            1
 111#define PIO_P8_OFFSET                          8
 112#define PIO_P8_SIZE                            1
 113#define PIO_P9_OFFSET                          9
 114#define PIO_P9_SIZE                            1
 115#define PIO_P10_OFFSET                         10
 116#define PIO_P10_SIZE                           1
 117#define PIO_P11_OFFSET                         11
 118#define PIO_P11_SIZE                           1
 119#define PIO_P12_OFFSET                         12
 120#define PIO_P12_SIZE                           1
 121#define PIO_P13_OFFSET                         13
 122#define PIO_P13_SIZE                           1
 123#define PIO_P14_OFFSET                         14
 124#define PIO_P14_SIZE                           1
 125#define PIO_P15_OFFSET                         15
 126#define PIO_P15_SIZE                           1
 127#define PIO_P16_OFFSET                         16
 128#define PIO_P16_SIZE                           1
 129#define PIO_P17_OFFSET                         17
 130#define PIO_P17_SIZE                           1
 131#define PIO_P18_OFFSET                         18
 132#define PIO_P18_SIZE                           1
 133#define PIO_P19_OFFSET                         19
 134#define PIO_P19_SIZE                           1
 135#define PIO_P20_OFFSET                         20
 136#define PIO_P20_SIZE                           1
 137#define PIO_P21_OFFSET                         21
 138#define PIO_P21_SIZE                           1
 139#define PIO_P22_OFFSET                         22
 140#define PIO_P22_SIZE                           1
 141#define PIO_P23_OFFSET                         23
 142#define PIO_P23_SIZE                           1
 143#define PIO_P24_OFFSET                         24
 144#define PIO_P24_SIZE                           1
 145#define PIO_P25_OFFSET                         25
 146#define PIO_P25_SIZE                           1
 147#define PIO_P26_OFFSET                         26
 148#define PIO_P26_SIZE                           1
 149#define PIO_P27_OFFSET                         27
 150#define PIO_P27_SIZE                           1
 151#define PIO_P28_OFFSET                         28
 152#define PIO_P28_SIZE                           1
 153#define PIO_P29_OFFSET                         29
 154#define PIO_P29_SIZE                           1
 155#define PIO_P30_OFFSET                         30
 156#define PIO_P30_SIZE                           1
 157#define PIO_P31_OFFSET                         31
 158#define PIO_P31_SIZE                           1
 159
 160/* Bitfields in OWER */
 161
 162/* Bitfields in OWDR */
 163
 164/* Bitfields in OWSR */
 165
 166/* Bit manipulation macros */
 167#define PIO_BIT(name)                          (1 << PIO_##name##_OFFSET)
 168#define PIO_BF(name,value)                     (((value) & ((1 << PIO_##name##_SIZE) - 1)) << PIO_##name##_OFFSET)
 169#define PIO_BFEXT(name,value)                  (((value) >> PIO_##name##_OFFSET) & ((1 << PIO_##name##_SIZE) - 1))
 170#define PIO_BFINS(name,value,old)              (((old) & ~(((1 << PIO_##name##_SIZE) - 1) << PIO_##name##_OFFSET)) | PIO_BF(name,value))
 171
 172/* Register access macros */
 173#define pio_readl(port,reg)                                     \
 174        __raw_readl((port)->regs + PIO_##reg)
 175#define pio_writel(port,reg,value)                              \
 176        __raw_writel((value), (port)->regs + PIO_##reg)
 177
 178void at32_init_pio(struct platform_device *pdev);
 179
 180#endif /* __ARCH_AVR32_AT32AP_PIO_H__ */
 181