~ubuntu-branches/ubuntu/trusty/linux-armadaxp/trusty

« back to all changes in this revision

Viewing changes to drivers/staging/westbridge/astoria/arch/arm/plat-omap/include/mach/westbridge/westbridge-omap3-pnand-hal/cyasmemmap.h

  • Committer: Package Import Robot
  • Author(s): Michael Casadevall, Bryan Wu, Dann Frazier, Michael Casadeall
  • Date: 2012-03-10 15:00:54 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20120310150054-flugb39zon8vvgwe
Tags: 3.2.0-1600.1
[ Bryan Wu ]
* UBUNTU: import debian/debian.env and debian.armadaxp

[ Dann Frazier ]
* ARM: Armada XP: remove trailing '/' in dirnames in mvRules.mk

[ Michael Casadeall ]
* tools: add some tools for Marvell Armada XP processor
* kernel: timer tick hacking from Marvell
* kernel: Sheeva Errata: add delay on Sheeva when powering down
* net: add Marvell NFP netfilter
* net: socket and skb modifications made by Marvell
* miscdevice: add minor IDs for some Marvell Armada drivers
* fs: introduce memory pool for splice()
* video: EDID detection updates from Marvell Armada XP patchset
* video: backlight: add Marvell Dove LCD backlight driver
* video: display: add THS8200 display driver
* video: framebuffer: add Marvell Dove and Armada XP processor onchip LCD controller driver
* usbtest: add Interrupt transfer testing by Marvell Armada XP code
* usb: ehci: add support for Marvell EHCI controler
* tty/serial: 8250: add support for Marvell Armada XP processor and DeviceTree work
* rtc: add support for Marvell Armada XP onchip RTC controller
* net: pppoe: add Marvell ethernet NFP hook in PPPoE networking driver
* mtd: nand: add support for Marvell Armada XP Nand Flash Controller
* mtd: maps: add Marvell Armada XP specific map driver
* mmc: add support for Marvell Armada XP MMC/SD host controller
* i2c: add support for Marvell Armada XP onchip i2c bus controller
* hwmon: add Kconfig option for Armada XP onchip thermal sensor driver
* dmaengine: add Net DMA support for splice and update Marvell XOR DMA engine driver
* ata: add support for Marvell Armada XP SATA controller and update some quirks
* ARM: add Marvell Armada XP machine to mach-types
* ARM: oprofile: add support for Marvell PJ4B core
* ARM: mm: more ARMv6 switches for Marvell Armada XP
* ARM: remove static declaration to allow compilation
* ARM: alignment access fault trick
* ARM: mm: skip some fault fixing when run on NONE SMP ARMv6 mode during early abort event
* ARM: mm: add Marvell Sheeva CPU Architecture for PJ4B
* ARM: introduce optimized copy operation for Marvell Armada XP
* ARM: SAUCE: hardware breakpoint trick for Marvell Armada XP
* ARM: big endian and little endian tricks for Marvell Armada XP
* ARM: SAUCE: Add Marvell Armada XP build rules to arch/arm/kernel/Makefile
* ARM: vfp: add special handling for Marvell Armada XP
* ARM: add support for Marvell U-Boot
* ARM: add mv_controller_num for ARM PCI drivers
* ARM: add support for local PMUs, general SMP tweaks and cache flushing
* ARM: add Marvell device identifies in glue-proc.h
* ARM: add IPC driver support for Marvell platforms
* ARM: add DMA mapping for Marvell platforms
* ARM: add Sheeva errata and PJ4B code for booting
* ARM: update Kconfig and Makefile to include Marvell Armada XP platforms
* ARM: Armada XP: import LSP from Marvell for Armada XP 3.2 kernel enablement

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 OMAP3430 ZOOM MDK astoria interface defs(cyasmemmap.h)
3
 
## ===========================
4
 
## Copyright (C) 2010  Cypress Semiconductor
5
 
##
6
 
## This program is free software; you can redistribute it and/or
7
 
## modify it under the terms of the GNU General Public License
8
 
## as published by the Free Software Foundation; either version 2
9
 
## of the License, or (at your option) any later version.
10
 
##
11
 
## This program is distributed in the hope that it will be useful,
12
 
## but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
## GNU General Public License for more details.
15
 
##
16
 
## You should have received a copy of the GNU General Public License
17
 
## along with this program; if not, write to the Free Software
18
 
## Foundation, Inc., 51 Franklin Street, Fifth Floor
19
 
## Boston, MA  02110-1301, USA.
20
 
## ===========================
21
 
*/
22
 
/* include does not seem to work
23
 
 * moving for patch submission
24
 
#include <mach/gpmc.h>
25
 
#include <mach/mux.h>
26
 
*/
27
 
#include <linux/../../arch/arm/plat-omap/include/plat/gpmc.h>
28
 
#include <linux/../../arch/arm/plat-omap/include/plat/mux.h>
29
 
 
30
 
#ifndef _INCLUDED_CYASMEMMAP_H_
31
 
#define _INCLUDED_CYASMEMMAP_H_
32
 
 
33
 
/* defines copied from OMAP kernel branch */
34
 
 
35
 
#define OMAP2_PULL_UP           (1 << 4)
36
 
#define OMAP2_PULL_ENA          (1 << 3)
37
 
#define OMAP34XX_MUX_MODE0      0
38
 
#define OMAP34XX_MUX_MODE4      4
39
 
#define OMAP3_INPUT_EN          (1 << 8)
40
 
#define OMAP34XX_PIN_INPUT_PULLUP       (OMAP2_PULL_ENA | OMAP3_INPUT_EN \
41
 
                                                | OMAP2_PULL_UP)
42
 
 
43
 
/*
44
 
 * for OMAP3430 <-> astoria :   ADmux mode, 8 bit data path
45
 
 * WB Signal-   OMAP3430 signal     COMMENTS
46
 
 *  --------------------------- --------------------
47
 
 * CS_L  -GPMC_nCS4_GPIO_53     ZOOM I SOM board
48
 
 *                                                              signal: up_nCS_A_EXT
49
 
 * AD[7:0]-upD[7:0]                     buffered on the
50
 
 *                                                              transposer board
51
 
 *                                                      GPMC_ADDR
52
 
 *                                                      [A8:A1]->upD[7:0]
53
 
 * INT# -GPMC_nWP_GPIO_62
54
 
 * DACK -N/C                             not connected
55
 
 * WAKEUP-GPIO_167
56
 
 * RESET-GPIO_126
57
 
 * R/B  -GPMC_WAIT2_GPIO_64
58
 
 * -------------------------------------------
59
 
 * The address range for nCS1B is 0x06000000 - 0x07FF FFFF.
60
 
*/
61
 
 
62
 
/*
63
 
 *OMAP_ZOOM LEDS
64
 
 */
65
 
#define LED_0 156
66
 
#define LED_1 128
67
 
#define LED_2 64
68
 
#define LED_3 60
69
 
 
70
 
#define HIGH 1
71
 
#define LOW  1
72
 
 
73
 
/*
74
 
 *omap GPIO number
75
 
 */
76
 
#define AST_WAKEUP       167
77
 
#define AST_RESET        126
78
 
#define AST__rn_b        64
79
 
 
80
 
/*
81
 
 * NOTE THIS PIN IS USED AS WP for OMAP NAND
82
 
 */
83
 
#define AST_INT  62
84
 
 
85
 
/*
86
 
 * as an I/O, it is actually controlled by GPMC
87
 
 */
88
 
#define AST_CS  55
89
 
 
90
 
 
91
 
/*
92
 
 *GPMC prefetch engine
93
 
 */
94
 
 
95
 
/* register and its bit fields */
96
 
#define GPMC_PREFETCH_CONFIG1 0x01E0
97
 
 
98
 
        /*32 bytes for 16 bit pnand mode*/
99
 
        #define PFE_THRESHOLD 31
100
 
 
101
 
        /*
102
 
         * bit fields
103
 
         * PF_ACCESSMODE  - 0 - read mode, 1 - write mode
104
 
         * PF_DMAMODE - 0 - default only intr line signal will be generated
105
 
         * PF_SYNCHROMODE - default 0 - engin will start access as soon as
106
 
         *                                      ctrl re STARTENGINE is set
107
 
         * PF_WAITPINSEL - FOR synchro mode  selects WAIT pin whch edge
108
 
         *                                      will be monitored
109
 
         * PF_EN_ENGINE - 1- ENABLES ENGINE, but it needs to be started after
110
 
         *                                      that C ctrl reg bit 0
111
 
         * PF_FIFO_THRESHOLD - FIFO threshold in number of BUS(8 or 16) words
112
 
         * PF_WEIGHTED_PRIO  - NUM of cycles granted to PFE if RND_ROBIN
113
 
         *                                      prioritization is enabled
114
 
         * PF_ROUND_ROBIN  - if enabled, gives priority to other CS, but
115
 
         *                                      reserves NUM of cycles for PFE's turn
116
 
         * PF_ENGIN_CS_SEL  - GPMC CS assotiated with PFE function
117
 
         */
118
 
        #define PF_ACCESSMODE  (0 << 0)
119
 
        #define PF_DMAMODE       (0 << 2)
120
 
        #define PF_SYNCHROMODE (0 << 3)
121
 
        #define PF_WAITPINSEL  (0x0 << 4)
122
 
        #define PF_EN_ENGINE   (1 << 7)
123
 
        #define PF_FIFO_THRESHOLD (PFE_THRESHOLD << 8)
124
 
        #define PF_WEIGHTED_PRIO (0x0 << 16)
125
 
        #define PF_ROUND_ROBIN   (0 << 23)
126
 
        #define PF_ENGIN_CS_SEL (AST_GPMC_CS << 24)
127
 
        #define PF_EN_OPTIM_ACC (0 << 27)
128
 
        #define PF_CYCLEOPTIM   (0x0 << 28)
129
 
 
130
 
#define GPMC_PREFETCH_CONFIG1_VAL (PF_ACCESSMODE | \
131
 
                                PF_DMAMODE | PF_SYNCHROMODE | \
132
 
                                PF_WAITPINSEL | PF_EN_ENGINE | \
133
 
                                PF_FIFO_THRESHOLD | PF_FIFO_THRESHOLD | \
134
 
                                PF_WEIGHTED_PRIO | PF_ROUND_ROBIN | \
135
 
                                PF_ENGIN_CS_SEL | PF_EN_OPTIM_ACC | \
136
 
                                PF_CYCLEOPTIM)
137
 
 
138
 
/* register and its bit fields */
139
 
#define GPMC_PREFETCH_CONFIG2 0x01E4
140
 
        /*
141
 
         * bit fields
142
 
         * 14 bit field NOTE this counts is also
143
 
         * is in number of BUS(8 or 16) words
144
 
         */
145
 
        #define PF_TRANSFERCOUNT (0x000)
146
 
 
147
 
 
148
 
/* register and its bit fields */
149
 
#define GPMC_PREFETCH_CONTROL 0x01EC
150
 
        /*
151
 
         * bit fields , ONLY BIT 0 is implemented
152
 
         * PFWE engin must be programmed with this bit = 0
153
 
         */
154
 
        #define PFPW_STARTENGINE (1 << 0)
155
 
 
156
 
/* register and its bit fields */
157
 
#define GPMC_PREFETCH_STATUS  0x01F0
158
 
 
159
 
        /* */
160
 
        #define PFE_FIFO_THRESHOLD (1 << 16)
161
 
 
162
 
/*
163
 
 * GPMC posted write/prefetch engine end
164
 
 */
165
 
 
166
 
 
167
 
/*
168
 
 * chip select number on GPMC ( 0..7 )
169
 
 */
170
 
#define AST_GPMC_CS 4
171
 
 
172
 
/*
173
 
 * not connected
174
 
 */
175
 
#define AST_DACK        00
176
 
 
177
 
 
178
 
/*
179
 
 * Physical address above the NAND flash
180
 
 * we use CS For mapping in OMAP3430 RAM space use 0x0600 0000
181
 
 */
182
 
#define CYAS_DEV_BASE_ADDR  (0x20000000)
183
 
 
184
 
#define CYAS_DEV_MAX_ADDR   (0xFF)
185
 
#define CYAS_DEV_ADDR_RANGE (CYAS_DEV_MAX_ADDR << 1)
186
 
 
187
 
#ifdef p_s_r_a_m_INTERFACE
188
 
 /* in CRAM or PSRAM mode OMAP A1..An wires-> Astoria, there is no A0 line */
189
 
 #define CYAS_DEV_CALC_ADDR(cyas_addr) (cyas_addr << 1)
190
 
 #define CYAS_DEV_CALC_EP_ADDR(ep) (ep << 1)
191
 
#else
192
 
 /*
193
 
  * For pNAND interface it depends on NAND emulation mode
194
 
  * SBD/LBD etc we use NON-LNA_LBD  mode, so it goes like this:
195
 
  * forlbd   <CMD><CA0,CA1,RA0,RA1,RA2> <CMD>,
196
 
  * where CA1 address must have bits 2,3 = "11"
197
 
  * ep is mapped into RA1 bits {4:0}
198
 
  */
199
 
 #define CYAS_DEV_CALC_ADDR(cyas_addr) (cyas_addr | 0x0c00)
200
 
 #define CYAS_DEV_CALC_EP_ADDR(ep) ep
201
 
#endif
202
 
 
203
 
/*
204
 
 *OMAP3430 i/o access macros
205
 
 */
206
 
#define IORD32(addr) (*(volatile u32  *)(addr))
207
 
#define IOWR32(addr, val) (*(volatile u32 *)(addr) = val)
208
 
 
209
 
#define IORD16(addr) (*(volatile u16  *)(addr))
210
 
#define IOWR16(addr, val) (*(volatile u16 *)(addr) = val)
211
 
 
212
 
#define IORD8(addr) (*(volatile u8  *)(addr))
213
 
#define IOWR8(addr, val) (*(volatile u8 *)(addr) = val)
214
 
 
215
 
/*
216
 
 * local defines for accessing to OMAP GPIO ***
217
 
 */
218
 
#define CTLPADCONF_BASE_ADDR 0x48002000
219
 
#define CTLPADCONF_SIZE 0x1000
220
 
 
221
 
#define GPIO1_BASE_ADDR 0x48310000
222
 
#define GPIO2_BASE_ADDR 0x49050000
223
 
#define GPIO3_BASE_ADDR 0x49052000
224
 
#define GPIO4_BASE_ADDR 0x49054000
225
 
#define GPIO5_BASE_ADDR 0x49056000
226
 
#define GPIO6_BASE_ADDR 0x49058000
227
 
#define GPIO_SPACE_SIZE 0x1000
228
 
 
229
 
 
230
 
/*
231
 
 * OMAP3430 GPMC timing for pNAND interface
232
 
 */
233
 
#define GPMC_BASE 0x6E000000
234
 
#define GPMC_REGION_SIZE 0x1000
235
 
#define GPMC_CONFIG_REG (0x50)
236
 
 
237
 
/*
238
 
 * bit 0 in the GPMC_CONFIG_REG
239
 
 */
240
 
#define NAND_FORCE_POSTED_WRITE_B 1
241
 
 
242
 
/*
243
 
 * WAIT2STATUS, must be (1 << 10)
244
 
 */
245
 
#define AS_WAIT_PIN_MASK (1 << 10)
246
 
 
247
 
 
248
 
/*
249
 
 * GPMC_CONFIG(reg number [1..7] [for chip sel CS[0..7])
250
 
 */
251
 
#define GPMC_CFG_REG(N, CS) ((0x60 + (4*(N-1))) + (0x30*CS))
252
 
 
253
 
/*
254
 
 *gpmc nand registers for CS4
255
 
 */
256
 
#define AST_GPMC_NAND_CMD               (0x7c + (0x30*AST_GPMC_CS))
257
 
#define AST_GPMC_NAND_ADDR              (0x80 + (0x30*AST_GPMC_CS))
258
 
#define AST_GPMC_NAND_DATA              (0x84 + (0x30*AST_GPMC_CS))
259
 
 
260
 
#define GPMC_STAT_REG           (0x54)
261
 
#define GPMC_ERR_TYPE      (0x48)
262
 
 
263
 
/*
264
 
 * we get "gpmc_base" from kernel
265
 
 */
266
 
#define GPMC_VMA(offset) (gpmc_base + offset)
267
 
 
268
 
/*
269
 
 * GPMC CS space VMA start address
270
 
 */
271
 
#define GPMC_CS_VMA(offset) (gpmc_data_vma + offset)
272
 
 
273
 
/*
274
 
 * PAD_CFG mux space VMA
275
 
 */
276
 
#define PADCFG_VMA(offset) (iomux_vma + offset)
277
 
 
278
 
/*
279
 
 * CONFIG1: by default, sngle access, async r/w RD_MULTIPLE[30]
280
 
 * WR_MULTIPLE[28]; GPMC_FCL_DIV[1:0]
281
 
 */
282
 
#define GPMC_FCLK_DIV ((0) << 0)
283
 
 
284
 
/*
285
 
 * ADDITIONAL DIVIDER FOR ALL TIMING PARAMS
286
 
 */
287
 
#define TIME_GRAN_SCALE ((0) << 4)
288
 
 
289
 
/*
290
 
 * for use by gpmc_set_timings api, measured in ns, not clocks
291
 
 */
292
 
#define WB_GPMC_BUSCYC_t  (7 * 6)
293
 
#define WB_GPMC_CS_t_o_n        (0)
294
 
#define WB_GPMC_ADV_t_o_n   (0)
295
 
#define WB_GPMC_OE_t_o_n        (0)
296
 
#define WB_GPMC_OE_t_o_f_f   (5 * 6)
297
 
#define WB_GPMC_WE_t_o_n        (1 * 6)
298
 
#define WB_GPMC_WE_t_o_f_f   (5 * 6)
299
 
#define WB_GPMC_RDS_ADJ   (2 * 6)
300
 
#define WB_GPMC_RD_t_a_c_c   (WB_GPMC_OE_t_o_f_f + WB_GPMC_RDS_ADJ)
301
 
#define WB_GPMC_WR_t_a_c_c  (WB_GPMC_BUSCYC_t)
302
 
 
303
 
#define DIR_OUT 0
304
 
#define DIR_INP 1
305
 
#define DRV_HI  1
306
 
#define DRV_LO  0
307
 
 
308
 
/*
309
 
 * GPMC_CONFIG7[cs] register bit fields
310
 
 * AS_CS_MASK - 3 bit mask for  A26,A25,A24,
311
 
 * AS_CS_BADDR - 6 BIT VALUE  A29 ...A24
312
 
 * CSVALID_B - CSVALID bit on GPMC_CONFIG7[cs] register
313
 
 */
314
 
#define AS_CS_MASK      (0X7 << 8)
315
 
#define AS_CS_BADDR      0x02
316
 
#define CSVALID_B (1 << 6)
317
 
 
318
 
/*
319
 
 * DEFINE OMAP34XX GPIO OFFSETS (should have been defined in kernel /arch
320
 
 * these are offsets from the BASE_ADDRESS of the GPIO BLOCK
321
 
 */
322
 
#define GPIO_REVISION           0x000
323
 
#define GPIO_SYSCONFIG          0x010
324
 
#define GPIO_SYSSTATUS1         0x014
325
 
#define GPIO_IRQSTATUS1         0x018
326
 
#define GPIO_IRQENABLE1         0x01C
327
 
#define GPIO_IRQSTATUS2         0x028
328
 
#define GPIO_CTRL               0x030
329
 
#define GPIO_OE                 0x034
330
 
#define GPIO_DATA_IN            0x038
331
 
#define GPIO_DATA_OUT           0x03C
332
 
#define GPIO_LEVELDETECT0          0x040
333
 
#define GPIO_LEVELDETECT1          0x044
334
 
#define GPIO_RISINGDETECT          0x048
335
 
#define GPIO_FALLINGDETECT        0x04c
336
 
#define GPIO_CLEAR_DATAOUT      0x090
337
 
#define GPIO_SET_DATAOUT        0x094
338
 
 
339
 
typedef struct  {
340
 
        char    *name;
341
 
        u32             phy_addr;
342
 
        u32             virt_addr;
343
 
        u32             size;
344
 
} io2vma_tab_t;
345
 
 
346
 
/*
347
 
 * GPIO phy to translation VMA table
348
 
 */
349
 
static  io2vma_tab_t gpio_vma_tab[6] = {
350
 
                {"GPIO1_BASE_ADDR", GPIO1_BASE_ADDR , 0 , GPIO_SPACE_SIZE},
351
 
                {"GPIO2_BASE_ADDR", GPIO2_BASE_ADDR , 0 , GPIO_SPACE_SIZE},
352
 
                {"GPIO3_BASE_ADDR", GPIO3_BASE_ADDR , 0 , GPIO_SPACE_SIZE},
353
 
                {"GPIO4_BASE_ADDR", GPIO4_BASE_ADDR , 0 , GPIO_SPACE_SIZE},
354
 
                {"GPIO5_BASE_ADDR", GPIO5_BASE_ADDR , 0 , GPIO_SPACE_SIZE},
355
 
                {"GPIO6_BASE_ADDR", GPIO6_BASE_ADDR , 0 , GPIO_SPACE_SIZE}
356
 
};
357
 
/*
358
 
 * name - USER signal name assigned to the pin ( for printks)
359
 
 * mux_func -  enum index NAME for the pad_cfg function
360
 
 * pin_num - pin_number if mux_func is GPIO, if not a GPIO it is -1
361
 
 * mux_ptr - pointer to the corresponding pad_cfg_reg
362
 
 *                      (used for pad release )
363
 
 * mux_save - preserve here original PAD_CNF value for this
364
 
 *                      pin (used for pad release)
365
 
 * dir - if GPIO: 0 - OUT , 1 - IN
366
 
 * dir_save - save original pin direction
367
 
 * drv - initial drive level "0" or "1"
368
 
 * drv_save - save original pin drive level
369
 
 * valid - 1 if successfuly configured
370
 
*/
371
 
typedef struct  {
372
 
        char *name;
373
 
        u32 mux_func;
374
 
        int pin_num;
375
 
        u16 *mux_ptr;
376
 
        u16 mux_save;
377
 
        u8 dir;
378
 
        u8 dir_save;
379
 
        u8 drv;
380
 
        u8 drv_save;
381
 
        u8 valid;
382
 
} user_pad_cfg_t;
383
 
 
384
 
/*
385
 
 * need to ensure that enums are in sync with the
386
 
 * omap_mux_pin_cfg table, these enums designate
387
 
 * functions that OMAP pads can be configured to
388
 
 */
389
 
enum {
390
 
        B23_OMAP3430_GPIO_167,
391
 
        D23_OMAP3430_GPIO_126,
392
 
        H1_OMAP3430_GPIO_62,
393
 
        H1_OMAP3430_GPMC_n_w_p,
394
 
        T8_OMAP3430_GPMC_n_c_s4,
395
 
        T8_OMAP3430_GPIO_55,
396
 
        R25_OMAP3430_GPIO_156,
397
 
        R27_OMAP3430_GPIO_128,
398
 
        K8_OMAP3430_GPIO_64,
399
 
        K8_GPMC_WAIT2,
400
 
        G3_OMAP3430_GPIO_60,
401
 
        G3_OMAP3430_n_b_e0_CLE,
402
 
        C6_GPMC_WAIT3,
403
 
        J1_OMAP3430_GPIO_61,
404
 
        C6_OMAP3430_GPIO_65,
405
 
 
406
 
        END_OF_TABLE
407
 
};
408
 
 
409
 
/*
410
 
 * number of GPIOS we plan to grab
411
 
 */
412
 
#define GPIO_SLOTS 8
413
 
 
414
 
/*
415
 
 *  user_pads_init() reads(and saves) from/to this table
416
 
 *  used in conjunction with omap_3430_mux_t table in .h file
417
 
 *  because the way it's done in the kernel code
418
 
 *  TODO: implement restore of the the original cfg and i/o regs
419
 
 */
420
 
 
421
 
static user_pad_cfg_t user_pad_cfg[] = {
422
 
                 /*
423
 
                 * name,pad_func,pin_num, mux_ptr, mux_sav, dir,
424
 
                 *    dir_sav, drv, drv_save, valid
425
 
                 */
426
 
                {"AST_WAKEUP", B23_OMAP3430_GPIO_167, 167, NULL, 0,
427
 
                                DIR_OUT, 0, DRV_HI, 0, 0},
428
 
                {"AST_RESET", D23_OMAP3430_GPIO_126, 126, NULL, 0,
429
 
                                DIR_OUT, 0, DRV_HI, 0, 0},
430
 
                {"AST__rn_b", K8_GPMC_WAIT2, 64, NULL, 0,
431
 
                                DIR_INP, 0,     0, 0, 0},
432
 
                {"AST_INTR", H1_OMAP3430_GPIO_62, 62, NULL, 0,
433
 
                                DIR_INP, 0,     DRV_HI, 0, 0},
434
 
                {"AST_CS", T8_OMAP3430_GPMC_n_c_s4, 55, NULL, 0,
435
 
                                DIR_OUT, 0,     DRV_HI, 0, 0},
436
 
                {"LED_0", R25_OMAP3430_GPIO_156, 156, NULL, 0,
437
 
                                DIR_OUT, 0,     DRV_LO, 0, 0},
438
 
                {"LED_1", R27_OMAP3430_GPIO_128, 128, NULL, 0,
439
 
                                DIR_OUT, 0,     DRV_LO, 0, 0},
440
 
                {"AST_CLE", G3_OMAP3430_n_b_e0_CLE , 60, NULL, 0,
441
 
                                DIR_OUT, 0,     DRV_LO, 0, 0},
442
 
                /*
443
 
                 * Z terminator, must always be present
444
 
                 * for sanity check, don't remove
445
 
                 */
446
 
                {NULL}
447
 
};
448
 
 
449
 
#define GPIO_BANK(pin) (pin >> 5)
450
 
#define REG_WIDTH 32
451
 
#define GPIO_REG_VMA(pin_num, offset) \
452
 
        (gpio_vma_tab[GPIO_BANK(pin_num)].virt_addr + offset)
453
 
 
454
 
/*
455
 
 * OMAP GPIO_REG 32 BIT MASK for a bit or
456
 
 * flag in gpio_No[0..191]  apply it to a 32 bit
457
 
 * location to set clear or check on a corresponding
458
 
 * gpio bit or flag
459
 
 */
460
 
#define GPIO_REG_MASK(pin_num) (1 << \
461
 
                (pin_num - (GPIO_BANK(pin_num) * REG_WIDTH)))
462
 
 
463
 
/*
464
 
 * OMAP GPIO registers bitwise access macros
465
 
 */
466
 
 
467
 
#define OMAP_GPIO_BIT(pin_num, reg) \
468
 
        ((*((u32 *)GPIO_REG_VMA(pin_num, reg)) \
469
 
        & GPIO_REG_MASK(pin_num)) ? 1 : 0)
470
 
 
471
 
#define RD_OMAP_GPIO_BIT(pin_num, v) OMAP_GPIO_BIT(pin_num, reg)
472
 
 
473
 
/*
474
 
 *these are superfast set/clr bitbang macro, 48ns cyc tyme
475
 
 */
476
 
#define OMAP_SET_GPIO(pin_num) \
477
 
        (*(u32 *)GPIO_REG_VMA(pin_num, GPIO_SET_DATAOUT) \
478
 
        = GPIO_REG_MASK(pin_num))
479
 
#define OMAP_CLR_GPIO(pin_num) \
480
 
        (*(u32 *)GPIO_REG_VMA(pin_num, GPIO_CLEAR_DATAOUT) \
481
 
        = GPIO_REG_MASK(pin_num))
482
 
 
483
 
#define WR_OMAP_GPIO_BIT(pin_num, v) \
484
 
        (v ? (*(u32 *)GPIO_REG_VMA(pin_num, \
485
 
        GPIO_SET_DATAOUT) = GPIO_REG_MASK(pin_num)) \
486
 
        : (*(u32 *)GPIO_REG_VMA(pin_num, \
487
 
        GPIO_CLEAR_DATAOUT) = GPIO_REG_MASK(pin_num)))
488
 
 
489
 
/*
490
 
 * Note this pin cfg mimicks similar implementation
491
 
 * in linux kernel, which unfortunately doesn't allow
492
 
 * us to dynamically insert new custom GPIO mux
493
 
 * configurations all REG definitions used in this
494
 
 * applications. to add a new pad_cfg function, insert
495
 
 * a new ENUM and new pin_cfg entry in omap_mux_pin_cfg[]
496
 
 * table below
497
 
 *
498
 
 * offset - note this is a word offset since the
499
 
 *              SCM regs are 16 bit packed in one 32 bit word
500
 
 * mux_val - just enough to describe pins used
501
 
 */
502
 
typedef struct  {
503
 
        char    *name;
504
 
        u16             offset;
505
 
        u16      mux_val;
506
 
} omap_3430_mux_t;
507
 
 
508
 
/*
509
 
 * "OUTIN" is configuration when DATA reg drives the
510
 
 * pin but the level at the pin can be sensed
511
 
 */
512
 
#define PAD_AS_OUTIN (OMAP34XX_MUX_MODE4 | \
513
 
                OMAP34XX_PIN_OUTPUT | OMAP34XX_PIN_INPUT)
514
 
 
515
 
omap_3430_mux_t omap_mux_pin_cfg[] = {
516
 
        /*
517
 
         * B23_OMAP3430_GPIO_167 - GPIO func to PAD 167 WB wakeup
518
 
         * D23_OMAP3430_GPIO_126 - drive GPIO_126 ( AST RESET)
519
 
         * H1_OMAP3430_GPIO_62 - need a pullup on this pin
520
 
         * H1_OMAP3430_GPMC_n_w_p -  GPMC NAND CTRL n_w_p out
521
 
         * T8_OMAP3430_GPMC_n_c_s4" - T8 is controlled b_y GPMC NAND ctrl
522
 
         * R25_OMAP3430_GPIO_156 - OMAPZOOM drive LED_0
523
 
         * R27_OMAP3430_GPIO_128 - OMAPZOOM drive LED_1
524
 
         * K8_OMAP3430_GPIO_64 - OMAPZOOM drive LED_2
525
 
         * K8_GPMC_WAIT2 - GPMC WAIT2 function on PAD K8
526
 
         * G3_OMAP3430_GPIO_60 - OMAPZOOM drive LED_3
527
 
         * G3_OMAP3430_n_b_e0_CLE -GPMC NAND ctrl CLE signal
528
 
        */
529
 
 
530
 
        {"B23_OMAP3430_GPIO_167", 0x0130, (OMAP34XX_MUX_MODE4)},
531
 
        {"D23_OMAP3430_GPIO_126", 0x0132, (OMAP34XX_MUX_MODE4)},
532
 
        {"H1_OMAP3430_GPIO_62",   0x00CA, (OMAP34XX_MUX_MODE4 |
533
 
                                OMAP3_INPUT_EN | OMAP34XX_PIN_INPUT_PULLUP) },
534
 
        {"H1_OMAP3430_GPMC_n_w_p",  0x00CA, (OMAP34XX_MUX_MODE0)},
535
 
        {"T8_OMAP3430_GPMC_n_c_s4", 0x00B6, (OMAP34XX_MUX_MODE0) },
536
 
        {"T8_OMAP3430_GPIO_55",   0x00B6, (OMAP34XX_MUX_MODE4) },
537
 
        {"R25_OMAP3430_GPIO_156", 0x018C, (OMAP34XX_MUX_MODE4) },
538
 
        {"R27_OMAP3430_GPIO_128", 0x0154, (OMAP34XX_MUX_MODE4) },
539
 
        {"K8_OMAP3430_GPIO_64",   0x00d0, (OMAP34XX_MUX_MODE4) },
540
 
        {"K8_GPMC_WAIT2",                 0x00d0, (OMAP34XX_MUX_MODE0) },
541
 
        {"G3_OMAP3430_GPIO_60",   0x00C6, (OMAP34XX_MUX_MODE4 |
542
 
                                OMAP3_INPUT_EN)},
543
 
        {"G3_OMAP3430_n_b_e0_CLE",  0x00C6, (OMAP34XX_MUX_MODE0)},
544
 
        {"C6_GPMC_WAIT3", 0x00d2, (OMAP34XX_MUX_MODE0)},
545
 
        {"C6_OMAP3430_GPIO_65", 0x00d2, (OMAP34XX_MUX_MODE4 |
546
 
                                OMAP3_INPUT_EN)},
547
 
        {"J1_OMAP3430_GPIO_61", 0x00C8, (OMAP34XX_MUX_MODE4 |
548
 
                                OMAP3_INPUT_EN | OMAP34XX_PIN_INPUT_PULLUP)},
549
 
        /*
550
 
         * don't remove, used for sanity check.
551
 
         */
552
 
        {"END_OF_TABLE"}
553
 
};
554
 
 
555
 
 
556
 
#endif /* _INCLUDED_CYASMEMMAP_H_ */
557
 
 
558
 
/*[]*/