diff options
| -rw-r--r-- | arch/mips/include/asm/mach-rc32434/gpio.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-rc32434/rb.h | 14 | ||||
| -rw-r--r-- | arch/mips/include/asm/time.h | 2 | ||||
| -rw-r--r-- | arch/mips/kernel/csrc-r4k.c | 2 | ||||
| -rw-r--r-- | arch/mips/mm/sc-ip22.c | 2 | ||||
| -rw-r--r-- | arch/mips/mti-malta/malta-amon.c | 6 | ||||
| -rw-r--r-- | arch/mips/rb532/devices.c | 2 | ||||
| -rw-r--r-- | arch/mips/rb532/gpio.c | 193 |
8 files changed, 90 insertions, 133 deletions
diff --git a/arch/mips/include/asm/mach-rc32434/gpio.h b/arch/mips/include/asm/mach-rc32434/gpio.h index c8e554eafce3..b5cf6457305a 100644 --- a/arch/mips/include/asm/mach-rc32434/gpio.h +++ b/arch/mips/include/asm/mach-rc32434/gpio.h | |||
| @@ -84,5 +84,7 @@ extern void set_434_reg(unsigned reg_offs, unsigned bit, unsigned len, unsigned | |||
| 84 | extern unsigned get_434_reg(unsigned reg_offs); | 84 | extern unsigned get_434_reg(unsigned reg_offs); |
| 85 | extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask); | 85 | extern void set_latch_u5(unsigned char or_mask, unsigned char nand_mask); |
| 86 | extern unsigned char get_latch_u5(void); | 86 | extern unsigned char get_latch_u5(void); |
| 87 | extern void rb532_gpio_set_ilevel(int bit, unsigned gpio); | ||
| 88 | extern void rb532_gpio_set_istat(int bit, unsigned gpio); | ||
| 87 | 89 | ||
| 88 | #endif /* _RC32434_GPIO_H_ */ | 90 | #endif /* _RC32434_GPIO_H_ */ |
diff --git a/arch/mips/include/asm/mach-rc32434/rb.h b/arch/mips/include/asm/mach-rc32434/rb.h index 79e8ef67d0d3..f25a84916703 100644 --- a/arch/mips/include/asm/mach-rc32434/rb.h +++ b/arch/mips/include/asm/mach-rc32434/rb.h | |||
| @@ -40,12 +40,14 @@ | |||
| 40 | #define BTCS 0x010040 | 40 | #define BTCS 0x010040 |
| 41 | #define BTCOMPARE 0x010044 | 41 | #define BTCOMPARE 0x010044 |
| 42 | #define GPIOBASE 0x050000 | 42 | #define GPIOBASE 0x050000 |
| 43 | #define GPIOCFG 0x050004 | 43 | /* Offsets relative to GPIOBASE */ |
| 44 | #define GPIOD 0x050008 | 44 | #define GPIOFUNC 0x00 |
| 45 | #define GPIOILEVEL 0x05000C | 45 | #define GPIOCFG 0x04 |
| 46 | #define GPIOISTAT 0x050010 | 46 | #define GPIOD 0x08 |
| 47 | #define GPIONMIEN 0x050014 | 47 | #define GPIOILEVEL 0x0C |
| 48 | #define IMASK6 0x038038 | 48 | #define GPIOISTAT 0x10 |
| 49 | #define GPIONMIEN 0x14 | ||
| 50 | #define IMASK6 0x38 | ||
| 49 | #define LO_WPX (1 << 0) | 51 | #define LO_WPX (1 << 0) |
| 50 | #define LO_ALE (1 << 1) | 52 | #define LO_ALE (1 << 1) |
| 51 | #define LO_CLE (1 << 2) | 53 | #define LO_CLE (1 << 2) |
diff --git a/arch/mips/include/asm/time.h b/arch/mips/include/asm/time.h index d3bd5c5aa2ec..9601ea950542 100644 --- a/arch/mips/include/asm/time.h +++ b/arch/mips/include/asm/time.h | |||
| @@ -63,7 +63,7 @@ static inline int mips_clockevent_init(void) | |||
| 63 | /* | 63 | /* |
| 64 | * Initialize the count register as a clocksource | 64 | * Initialize the count register as a clocksource |
| 65 | */ | 65 | */ |
| 66 | #ifdef CONFIG_CEVT_R4K | 66 | #ifdef CONFIG_CSRC_R4K |
| 67 | extern int init_mips_clocksource(void); | 67 | extern int init_mips_clocksource(void); |
| 68 | #else | 68 | #else |
| 69 | static inline int init_mips_clocksource(void) | 69 | static inline int init_mips_clocksource(void) |
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c index 86e026f067bc..74fb74583b4e 100644 --- a/arch/mips/kernel/csrc-r4k.c +++ b/arch/mips/kernel/csrc-r4k.c | |||
| @@ -27,7 +27,7 @@ int __init init_mips_clocksource(void) | |||
| 27 | if (!cpu_has_counter || !mips_hpt_frequency) | 27 | if (!cpu_has_counter || !mips_hpt_frequency) |
| 28 | return -ENXIO; | 28 | return -ENXIO; |
| 29 | 29 | ||
| 30 | /* Calclate a somewhat reasonable rating value */ | 30 | /* Calculate a somewhat reasonable rating value */ |
| 31 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; | 31 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; |
| 32 | 32 | ||
| 33 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); | 33 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); |
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c index 1f602a110e10..13adb5782110 100644 --- a/arch/mips/mm/sc-ip22.c +++ b/arch/mips/mm/sc-ip22.c | |||
| @@ -161,7 +161,7 @@ static inline int __init indy_sc_probe(void) | |||
| 161 | 161 | ||
| 162 | /* XXX Check with wje if the Indy caches can differenciate between | 162 | /* XXX Check with wje if the Indy caches can differenciate between |
| 163 | writeback + invalidate and just invalidate. */ | 163 | writeback + invalidate and just invalidate. */ |
| 164 | struct bcache_ops indy_sc_ops = { | 164 | static struct bcache_ops indy_sc_ops = { |
| 165 | .bc_enable = indy_sc_enable, | 165 | .bc_enable = indy_sc_enable, |
| 166 | .bc_disable = indy_sc_disable, | 166 | .bc_disable = indy_sc_disable, |
| 167 | .bc_wback_inv = indy_sc_wback_invalidate, | 167 | .bc_wback_inv = indy_sc_wback_invalidate, |
diff --git a/arch/mips/mti-malta/malta-amon.c b/arch/mips/mti-malta/malta-amon.c index 96236bf33838..df9e526312a2 100644 --- a/arch/mips/mti-malta/malta-amon.c +++ b/arch/mips/mti-malta/malta-amon.c | |||
| @@ -22,9 +22,9 @@ | |||
| 22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
| 23 | #include <linux/smp.h> | 23 | #include <linux/smp.h> |
| 24 | 24 | ||
| 25 | #include <asm-mips/addrspace.h> | 25 | #include <asm/addrspace.h> |
| 26 | #include <asm-mips/mips-boards/launch.h> | 26 | #include <asm/mips-boards/launch.h> |
| 27 | #include <asm-mips/mipsmtregs.h> | 27 | #include <asm/mipsmtregs.h> |
| 28 | 28 | ||
| 29 | int amon_cpu_avail(int cpu) | 29 | int amon_cpu_avail(int cpu) |
| 30 | { | 30 | { |
diff --git a/arch/mips/rb532/devices.c b/arch/mips/rb532/devices.c index 2f22d714d5b0..c1c29181bd46 100644 --- a/arch/mips/rb532/devices.c +++ b/arch/mips/rb532/devices.c | |||
| @@ -118,7 +118,7 @@ static struct platform_device cf_slot0 = { | |||
| 118 | /* Resources and device for NAND */ | 118 | /* Resources and device for NAND */ |
| 119 | static int rb532_dev_ready(struct mtd_info *mtd) | 119 | static int rb532_dev_ready(struct mtd_info *mtd) |
| 120 | { | 120 | { |
| 121 | return readl(IDT434_REG_BASE + GPIOD) & GPIO_RDY; | 121 | return gpio_get_value(GPIO_RDY); |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | static void rb532_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) | 124 | static void rb532_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) |
diff --git a/arch/mips/rb532/gpio.c b/arch/mips/rb532/gpio.c index 70c4a6726377..0e84c8ab6a39 100644 --- a/arch/mips/rb532/gpio.c +++ b/arch/mips/rb532/gpio.c | |||
| @@ -39,10 +39,6 @@ | |||
| 39 | struct rb532_gpio_chip { | 39 | struct rb532_gpio_chip { |
| 40 | struct gpio_chip chip; | 40 | struct gpio_chip chip; |
| 41 | void __iomem *regbase; | 41 | void __iomem *regbase; |
| 42 | void (*set_int_level)(struct gpio_chip *chip, unsigned offset, int value); | ||
| 43 | int (*get_int_level)(struct gpio_chip *chip, unsigned offset); | ||
| 44 | void (*set_int_status)(struct gpio_chip *chip, unsigned offset, int value); | ||
| 45 | int (*get_int_status)(struct gpio_chip *chip, unsigned offset); | ||
| 46 | }; | 42 | }; |
| 47 | 43 | ||
| 48 | struct mpmc_device dev3; | 44 | struct mpmc_device dev3; |
| @@ -111,15 +107,47 @@ unsigned char get_latch_u5(void) | |||
| 111 | } | 107 | } |
| 112 | EXPORT_SYMBOL(get_latch_u5); | 108 | EXPORT_SYMBOL(get_latch_u5); |
| 113 | 109 | ||
| 110 | /* rb532_set_bit - sanely set a bit | ||
| 111 | * | ||
| 112 | * bitval: new value for the bit | ||
| 113 | * offset: bit index in the 4 byte address range | ||
| 114 | * ioaddr: 4 byte aligned address being altered | ||
| 115 | */ | ||
| 116 | static inline void rb532_set_bit(unsigned bitval, | ||
| 117 | unsigned offset, void __iomem *ioaddr) | ||
| 118 | { | ||
| 119 | unsigned long flags; | ||
| 120 | u32 val; | ||
| 121 | |||
| 122 | bitval = !!bitval; /* map parameter to {0,1} */ | ||
| 123 | |||
| 124 | local_irq_save(flags); | ||
| 125 | |||
| 126 | val = readl(ioaddr); | ||
| 127 | val &= ~( ~bitval << offset ); /* unset bit if bitval == 0 */ | ||
| 128 | val |= ( bitval << offset ); /* set bit if bitval == 1 */ | ||
| 129 | writel(val, ioaddr); | ||
| 130 | |||
| 131 | local_irq_restore(flags); | ||
| 132 | } | ||
| 133 | |||
| 134 | /* rb532_get_bit - read a bit | ||
| 135 | * | ||
| 136 | * returns the boolean state of the bit, which may be > 1 | ||
| 137 | */ | ||
| 138 | static inline int rb532_get_bit(unsigned offset, void __iomem *ioaddr) | ||
| 139 | { | ||
| 140 | return (readl(ioaddr) & (1 << offset)); | ||
| 141 | } | ||
| 142 | |||
| 114 | /* | 143 | /* |
| 115 | * Return GPIO level */ | 144 | * Return GPIO level */ |
| 116 | static int rb532_gpio_get(struct gpio_chip *chip, unsigned offset) | 145 | static int rb532_gpio_get(struct gpio_chip *chip, unsigned offset) |
| 117 | { | 146 | { |
| 118 | u32 mask = 1 << offset; | ||
| 119 | struct rb532_gpio_chip *gpch; | 147 | struct rb532_gpio_chip *gpch; |
| 120 | 148 | ||
| 121 | gpch = container_of(chip, struct rb532_gpio_chip, chip); | 149 | gpch = container_of(chip, struct rb532_gpio_chip, chip); |
| 122 | return readl(gpch->regbase + GPIOD) & mask; | 150 | return rb532_get_bit(offset, gpch->regbase + GPIOD); |
| 123 | } | 151 | } |
| 124 | 152 | ||
| 125 | /* | 153 | /* |
| @@ -128,23 +156,10 @@ static int rb532_gpio_get(struct gpio_chip *chip, unsigned offset) | |||
| 128 | static void rb532_gpio_set(struct gpio_chip *chip, | 156 | static void rb532_gpio_set(struct gpio_chip *chip, |
| 129 | unsigned offset, int value) | 157 | unsigned offset, int value) |
| 130 | { | 158 | { |
| 131 | unsigned long flags; | ||
| 132 | u32 mask = 1 << offset; | ||
| 133 | u32 tmp; | ||
| 134 | struct rb532_gpio_chip *gpch; | 159 | struct rb532_gpio_chip *gpch; |
| 135 | void __iomem *gpvr; | ||
| 136 | 160 | ||
