|
@@ -25,6 +25,7 @@
|
|
#include <watchdog.h>
|
|
#include <watchdog.h>
|
|
#include <ppc4xx_enet.h>
|
|
#include <ppc4xx_enet.h>
|
|
#include <asm/processor.h>
|
|
#include <asm/processor.h>
|
|
|
|
+#include <asm/gpio.h>
|
|
#include <ppc4xx.h>
|
|
#include <ppc4xx.h>
|
|
|
|
|
|
#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
|
|
#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
|
|
@@ -98,118 +99,6 @@ DECLARE_GLOBAL_DATA_PTR;
|
|
# endif
|
|
# endif
|
|
#endif /* CFG_INIT_DCACHE_CS */
|
|
#endif /* CFG_INIT_DCACHE_CS */
|
|
|
|
|
|
-#if defined(CFG_440_GPIO_TABLE)
|
|
|
|
-gpio_param_s gpio_tab[GPIO_GROUP_MAX][GPIO_MAX] = CFG_440_GPIO_TABLE;
|
|
|
|
-
|
|
|
|
-void set_chip_gpio_configuration(gpio_param_s (*gpio_tab)[GPIO_GROUP_MAX][GPIO_MAX])
|
|
|
|
-{
|
|
|
|
- unsigned char i=0, j=0, reg_offset = 0, gpio_core;
|
|
|
|
- unsigned long gpio_reg, gpio_core_add;
|
|
|
|
-
|
|
|
|
- for (gpio_core=0; gpio_core<GPIO_GROUP_MAX; gpio_core++) {
|
|
|
|
- j = 0;
|
|
|
|
- reg_offset = 0;
|
|
|
|
- /* GPIO config of the GPIOs 0 to 31 */
|
|
|
|
- for (i=0; i<GPIO_MAX; i++, j++) {
|
|
|
|
- if (i == GPIO_MAX/2) {
|
|
|
|
- reg_offset = 4;
|
|
|
|
- j = i-16;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- gpio_core_add = (*gpio_tab)[gpio_core][i].add;
|
|
|
|
-
|
|
|
|
- if (((*gpio_tab)[gpio_core][i].in_out == GPIO_IN) ||
|
|
|
|
- ((*gpio_tab)[gpio_core][i].in_out == GPIO_BI)) {
|
|
|
|
-
|
|
|
|
- switch ((*gpio_tab)[gpio_core][i].alt_nb) {
|
|
|
|
- case GPIO_SEL:
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT1:
|
|
|
|
- gpio_reg = in32(GPIO_IS1(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
|
|
|
|
- out32(GPIO_IS1(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT2:
|
|
|
|
- gpio_reg = in32(GPIO_IS2(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
|
|
|
|
- out32(GPIO_IS2(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT3:
|
|
|
|
- gpio_reg = in32(GPIO_IS3(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_IN_SEL >> (j*2));
|
|
|
|
- out32(GPIO_IS3(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (((*gpio_tab)[gpio_core][i].in_out == GPIO_OUT) ||
|
|
|
|
- ((*gpio_tab)[gpio_core][i].in_out == GPIO_BI)) {
|
|
|
|
-
|
|
|
|
- switch ((*gpio_tab)[gpio_core][i].alt_nb) {
|
|
|
|
- case GPIO_SEL:
|
|
|
|
- if (gpio_core == GPIO0) {
|
|
|
|
- gpio_reg = in32(GPIO0_TCR) | (0x80000000 >> (j));
|
|
|
|
- out32(GPIO0_TCR, gpio_reg);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if (gpio_core == GPIO1) {
|
|
|
|
- gpio_reg = in32(GPIO1_TCR) | (0x80000000 >> (j));
|
|
|
|
- out32(GPIO1_TCR, gpio_reg);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT1:
|
|
|
|
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));
|
|
|
|
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT1_SEL >> (j*2));
|
|
|
|
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT2:
|
|
|
|
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));
|
|
|
|
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT2_SEL >> (j*2));
|
|
|
|
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
-
|
|
|
|
- case GPIO_ALT3:
|
|
|
|
- gpio_reg = in32(GPIO_OS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));
|
|
|
|
- out32(GPIO_OS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- gpio_reg = in32(GPIO_TS(gpio_core_add+reg_offset))
|
|
|
|
- & ~(GPIO_MASK >> (j*2));
|
|
|
|
- gpio_reg = gpio_reg | (GPIO_ALT3_SEL >> (j*2));
|
|
|
|
- out32(GPIO_TS(gpio_core_add+reg_offset), gpio_reg);
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-#endif /* CFG_440_GPIO_TABLE */
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* Breath some life into the CPU...
|
|
* Breath some life into the CPU...
|
|
*
|
|
*
|
|
@@ -248,7 +137,7 @@ cpu_init_f (void)
|
|
#endif /* CONFIG_405EP */
|
|
#endif /* CONFIG_405EP */
|
|
|
|
|
|
#if defined(CFG_440_GPIO_TABLE)
|
|
#if defined(CFG_440_GPIO_TABLE)
|
|
- set_chip_gpio_configuration(&gpio_tab);
|
|
|
|
|
|
+ gpio_set_chip_configuration();
|
|
#endif /* CFG_440_GPIO_TABLE */
|
|
#endif /* CFG_440_GPIO_TABLE */
|
|
|
|
|
|
/*
|
|
/*
|