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

« back to all changes in this revision

Viewing changes to arch/arm/mach-shmobile/pfc-sh7377.c

  • 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:
22
22
#include <linux/gpio.h>
23
23
#include <mach/sh7377.h>
24
24
 
25
 
#define _1(fn, pfx, sfx) fn(pfx, sfx)
26
 
 
27
 
#define _10(fn, pfx, sfx)                               \
28
 
        _1(fn, pfx##0, sfx), _1(fn, pfx##1, sfx),       \
29
 
        _1(fn, pfx##2, sfx), _1(fn, pfx##3, sfx),       \
30
 
        _1(fn, pfx##4, sfx), _1(fn, pfx##5, sfx),       \
31
 
        _1(fn, pfx##6, sfx), _1(fn, pfx##7, sfx),       \
32
 
        _1(fn, pfx##8, sfx), _1(fn, pfx##9, sfx)
33
 
 
34
 
#define _90(fn, pfx, sfx)                               \
35
 
        _10(fn, pfx##1, sfx), _10(fn, pfx##2, sfx),     \
36
 
        _10(fn, pfx##3, sfx), _10(fn, pfx##4, sfx),     \
37
 
        _10(fn, pfx##5, sfx), _10(fn, pfx##6, sfx),     \
38
 
        _10(fn, pfx##7, sfx), _10(fn, pfx##8, sfx),     \
39
 
        _10(fn, pfx##9, sfx)
40
 
 
41
 
#define _265(fn, pfx, sfx)                              \
42
 
        _10(fn, pfx, sfx), _90(fn, pfx, sfx),           \
43
 
        _10(fn, pfx##10, sfx),                          \
44
 
        _1(fn, pfx##110, sfx), _1(fn, pfx##111, sfx),   \
45
 
        _1(fn, pfx##112, sfx), _1(fn, pfx##113, sfx),   \
46
 
        _1(fn, pfx##114, sfx), _1(fn, pfx##115, sfx),   \
47
 
        _1(fn, pfx##116, sfx), _1(fn, pfx##117, sfx),   \
48
 
        _1(fn, pfx##118, sfx),                          \
49
 
        _1(fn, pfx##128, sfx), _1(fn, pfx##129, sfx),   \
50
 
        _10(fn, pfx##13, sfx), _10(fn, pfx##14, sfx),   \
51
 
        _10(fn, pfx##15, sfx),                          \
52
 
        _1(fn, pfx##160, sfx), _1(fn, pfx##161, sfx),   \
53
 
        _1(fn, pfx##162, sfx), _1(fn, pfx##163, sfx),   \
54
 
        _1(fn, pfx##164, sfx),                          \
55
 
        _1(fn, pfx##192, sfx), _1(fn, pfx##193, sfx),   \
56
 
        _1(fn, pfx##194, sfx), _1(fn, pfx##195, sfx),   \
57
 
        _1(fn, pfx##196, sfx), _1(fn, pfx##197, sfx),   \
58
 
        _1(fn, pfx##198, sfx), _1(fn, pfx##199, sfx),   \
59
 
        _10(fn, pfx##20, sfx), _10(fn, pfx##21, sfx),   \
60
 
        _10(fn, pfx##22, sfx), _10(fn, pfx##23, sfx),   \
61
 
        _10(fn, pfx##24, sfx), _10(fn, pfx##25, sfx),   \
62
 
        _1(fn, pfx##260, sfx), _1(fn, pfx##261, sfx),   \
63
 
        _1(fn, pfx##262, sfx), _1(fn, pfx##263, sfx),   \
64
 
        _1(fn, pfx##264, sfx)
65
 
 
66
 
#define _PORT(pfx, sfx) pfx##_##sfx
67
 
#define PORT_265(str) _265(_PORT, PORT, str)
 
25
#define CPU_ALL_PORT(fn, pfx, sfx)                              \
 
26
        PORT_10(fn, pfx, sfx), PORT_90(fn, pfx, sfx),           \
 
27
        PORT_10(fn, pfx##10, sfx),                              \
 
28
        PORT_1(fn, pfx##110, sfx), PORT_1(fn, pfx##111, sfx),   \
 
29
        PORT_1(fn, pfx##112, sfx), PORT_1(fn, pfx##113, sfx),   \
 
30
        PORT_1(fn, pfx##114, sfx), PORT_1(fn, pfx##115, sfx),   \
 
31
        PORT_1(fn, pfx##116, sfx), PORT_1(fn, pfx##117, sfx),   \
 
32
        PORT_1(fn, pfx##118, sfx),                              \
 
33
        PORT_1(fn, pfx##128, sfx), PORT_1(fn, pfx##129, sfx),   \
 
34
        PORT_10(fn, pfx##13, sfx), PORT_10(fn, pfx##14, sfx),   \
 
35
        PORT_10(fn, pfx##15, sfx),                              \
 
36
        PORT_1(fn, pfx##160, sfx), PORT_1(fn, pfx##161, sfx),   \
 
37
        PORT_1(fn, pfx##162, sfx), PORT_1(fn, pfx##163, sfx),   \
 
38
        PORT_1(fn, pfx##164, sfx),                              \
 
39
        PORT_1(fn, pfx##192, sfx), PORT_1(fn, pfx##193, sfx),   \
 
40
        PORT_1(fn, pfx##194, sfx), PORT_1(fn, pfx##195, sfx),   \
 
41
        PORT_1(fn, pfx##196, sfx), PORT_1(fn, pfx##197, sfx),   \
 
42
        PORT_1(fn, pfx##198, sfx), PORT_1(fn, pfx##199, sfx),   \
 
43
        PORT_10(fn, pfx##20, sfx), PORT_10(fn, pfx##21, sfx),   \
 
44
        PORT_10(fn, pfx##22, sfx), PORT_10(fn, pfx##23, sfx),   \
 
45
        PORT_10(fn, pfx##24, sfx), PORT_10(fn, pfx##25, sfx),   \
 
46
        PORT_1(fn, pfx##260, sfx), PORT_1(fn, pfx##261, sfx),   \
 
47
        PORT_1(fn, pfx##262, sfx), PORT_1(fn, pfx##263, sfx),   \
 
48
        PORT_1(fn, pfx##264, sfx)
68
49
 
69
50
enum {
70
51
        PINMUX_RESERVED = 0,
71
52
 
72
53
        PINMUX_DATA_BEGIN,
73
 
        PORT_265(DATA), /* PORT0_DATA -> PORT264_DATA */
 
54
        PORT_ALL(DATA), /* PORT0_DATA -> PORT264_DATA */
74
55
        PINMUX_DATA_END,
75
56
 
76
57
        PINMUX_INPUT_BEGIN,
77
 
        PORT_265(IN), /* PORT0_IN -> PORT264_IN */
 
58
        PORT_ALL(IN), /* PORT0_IN -> PORT264_IN */
78
59
        PINMUX_INPUT_END,
79
60
 
80
61
        PINMUX_INPUT_PULLUP_BEGIN,
81
 
        PORT_265(IN_PU), /* PORT0_IN_PU -> PORT264_IN_PU */
 
62
        PORT_ALL(IN_PU), /* PORT0_IN_PU -> PORT264_IN_PU */
82
63
        PINMUX_INPUT_PULLUP_END,
83
64
 
84
65
        PINMUX_INPUT_PULLDOWN_BEGIN,
85
 
        PORT_265(IN_PD), /* PORT0_IN_PD -> PORT264_IN_PD */
 
66
        PORT_ALL(IN_PD), /* PORT0_IN_PD -> PORT264_IN_PD */
86
67
        PINMUX_INPUT_PULLDOWN_END,
87
68
 
88
69
        PINMUX_OUTPUT_BEGIN,
89
 
        PORT_265(OUT), /* PORT0_OUT -> PORT264_OUT */
 
70
        PORT_ALL(OUT), /* PORT0_OUT -> PORT264_OUT */
90
71
        PINMUX_OUTPUT_END,
91
72
 
92
73
        PINMUX_FUNCTION_BEGIN,
93
 
        PORT_265(FN_IN), /* PORT0_FN_IN -> PORT264_FN_IN */
94
 
        PORT_265(FN_OUT), /* PORT0_FN_OUT -> PORT264_FN_OUT */
95
 
        PORT_265(FN0), /* PORT0_FN0 -> PORT264_FN0 */
96
 
        PORT_265(FN1), /* PORT0_FN1 -> PORT264_FN1 */
97
 
        PORT_265(FN2), /* PORT0_FN2 -> PORT264_FN2 */
98
 
        PORT_265(FN3), /* PORT0_FN3 -> PORT264_FN3 */
99
 
        PORT_265(FN4), /* PORT0_FN4 -> PORT264_FN4 */
100
 
        PORT_265(FN5), /* PORT0_FN5 -> PORT264_FN5 */
101
 
        PORT_265(FN6), /* PORT0_FN6 -> PORT264_FN6 */
102
 
        PORT_265(FN7), /* PORT0_FN7 -> PORT264_FN7 */
 
74
        PORT_ALL(FN_IN), /* PORT0_FN_IN -> PORT264_FN_IN */
 
75
        PORT_ALL(FN_OUT), /* PORT0_FN_OUT -> PORT264_FN_OUT */
 
76
        PORT_ALL(FN0), /* PORT0_FN0 -> PORT264_FN0 */
 
77
        PORT_ALL(FN1), /* PORT0_FN1 -> PORT264_FN1 */
 
78
        PORT_ALL(FN2), /* PORT0_FN2 -> PORT264_FN2 */
 
79
        PORT_ALL(FN3), /* PORT0_FN3 -> PORT264_FN3 */
 
80
        PORT_ALL(FN4), /* PORT0_FN4 -> PORT264_FN4 */
 
81
        PORT_ALL(FN5), /* PORT0_FN5 -> PORT264_FN5 */
 
82
        PORT_ALL(FN6), /* PORT0_FN6 -> PORT264_FN6 */
 
83
        PORT_ALL(FN7), /* PORT0_FN7 -> PORT264_FN7 */
103
84
 
104
85
        MSELBCR_MSEL17_1, MSELBCR_MSEL17_0,
105
86
        MSELBCR_MSEL16_1, MSELBCR_MSEL16_0,
360
341
        PINMUX_MARK_END,
361
342
};
362
343
 
363
 
#define PORT_DATA_I(nr) \
364
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0, PORT##nr##_IN)
365
 
 
366
 
#define PORT_DATA_I_PD(nr)      \
367
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
368
 
                                PORT##nr##_IN, PORT##nr##_IN_PD)
369
 
 
370
 
#define PORT_DATA_I_PU(nr)      \
371
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
372
 
                                PORT##nr##_IN, PORT##nr##_IN_PU)
373
 
 
374
 
#define PORT_DATA_I_PU_PD(nr)   \
375
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
376
 
                                PORT##nr##_IN, PORT##nr##_IN_PD,        \
377
 
                                PORT##nr##_IN_PU)
378
 
 
379
 
#define PORT_DATA_O(nr) \
380
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
381
 
                                PORT##nr##_OUT)
382
 
 
383
 
#define PORT_DATA_IO(nr)        \
384
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
385
 
                                PORT##nr##_OUT, PORT##nr##_IN)
386
 
 
387
 
#define PORT_DATA_IO_PD(nr)     \
388
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
389
 
                                PORT##nr##_OUT, PORT##nr##_IN,          \
390
 
                                PORT##nr##_IN_PD)
391
 
 
392
 
#define PORT_DATA_IO_PU(nr)     \
393
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
394
 
                                PORT##nr##_OUT, PORT##nr##_IN,          \
395
 
                                PORT##nr##_IN_PU)
396
 
 
397
 
#define PORT_DATA_IO_PU_PD(nr)  \
398
 
        PINMUX_DATA(PORT##nr##_DATA, PORT##nr##_FN0,    \
399
 
                                PORT##nr##_OUT, PORT##nr##_IN,          \
400
 
                                PORT##nr##_IN_PD, PORT##nr##_IN_PU)
401
 
 
402
344
static pinmux_enum_t pinmux_data[] = {
403
345
        /* specify valid pin states for each pin in GPIO mode */
404
346
        /* 55-1 (GPIO) */
1078
1020
        PINMUX_DATA(RESETOUTS_MARK, PORT264_FN1),
1079
1021
};
1080
1022
 
1081
 
#define _GPIO_PORT(pfx, sfx) PINMUX_GPIO(GPIO_PORT##pfx, PORT##pfx##_DATA)
1082
 
#define GPIO_PORT_265() _265(_GPIO_PORT, , unused)
1083
 
#define GPIO_FN(str) PINMUX_GPIO(GPIO_FN_##str, str##_MARK)
1084
 
 
1085
1023
static struct pinmux_gpio pinmux_gpios[] = {
1086
1024
        /* 55-1 -> 55-5 (GPIO) */
1087
 
        GPIO_PORT_265(),
 
1025
        GPIO_PORT_ALL(),
1088
1026
 
1089
1027
        /* Special Pull-up / Pull-down Functions */
1090
1028
        GPIO_FN(PORT66_KEYIN0_PU), GPIO_FN(PORT67_KEYIN1_PU),
1362
1300
        GPIO_FN(RESETOUTS),
1363
1301
};
1364
1302
 
1365
 
/* helper for top 4 bits in PORTnCR */
1366
 
#define PCRH(in, in_pd, in_pu, out)     \
1367
 
        0, (out), (in), 0,      \
1368
 
                0, 0, 0, 0,     \
1369
 
                0, 0, (in_pd), 0,       \
1370
 
                0, 0, (in_pu), 0
1371
 
 
1372
 
#define PORTCR(nr, reg) \
1373
 
        { PINMUX_CFG_REG("PORT" nr "CR", reg, 8, 4) {   \
1374
 
                        PCRH(PORT##nr##_IN, PORT##nr##_IN_PD,   \
1375
 
                                 PORT##nr##_IN_PU, PORT##nr##_OUT),     \
1376
 
                                PORT##nr##_FN0, PORT##nr##_FN1, \
1377
 
                                PORT##nr##_FN2, PORT##nr##_FN3, \
1378
 
                                PORT##nr##_FN4, PORT##nr##_FN5, \
1379
 
                                PORT##nr##_FN6, PORT##nr##_FN7 }        \
1380
 
        }
1381
 
 
1382
1303
static struct pinmux_cfg_reg pinmux_config_regs[] = {
1383
1304
        PORTCR(0, 0xe6050000), /* PORT0CR */
1384
1305
        PORTCR(1, 0xe6050001), /* PORT1CR */