[U-Boot] [PATCH] pm9263 converted to at91 soc access
Tom
Tom.Rix at windriver.com
Tue Apr 13 01:01:26 CEST 2010
Asen Dimov wrote:
> Signed-off-by: Asen Dimov <dimov at ronetix.at>
> ---
> board/ronetix/pm9263/led.c | 15 ++--
> board/ronetix/pm9263/pm9263.c | 195 +++++++++++++++++++++--------------------
> include/configs/pm9263.h | 82 ++++++++---------
> 3 files changed, 146 insertions(+), 146 deletions(-)
>
> diff --git a/board/ronetix/pm9263/led.c b/board/ronetix/pm9263/led.c
> index fe1a1d2..4e585a4 100644
> --- a/board/ronetix/pm9263/led.c
> +++ b/board/ronetix/pm9263/led.c
> @@ -26,18 +26,19 @@
> #include <common.h>
> #include <asm/arch/at91sam9263.h>
> #include <asm/arch/at91_pmc.h>
> -#include <asm/arch/gpio.h>
> +#include <asm/arch/at91_pio.h>
> #include <asm/arch/io.h>
>
> void coloured_LED_init(void)
> {
> + at91_pmc_t *pmc = (at91_pmc_t *) AT91_PMC_BASE;
> +
> /* Enable clock */
> - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_PIOB |
> - 1 << AT91SAM9263_ID_PIOCDE);
> + writel(1 << AT91SAM9263_ID_PIOB, &pmc->pcer);
Missing PICOCDE..
Is this ok ?
>
> - at91_set_gpio_output(CONFIG_RED_LED, 1);
> - at91_set_gpio_output(CONFIG_GREEN_LED, 1);
> + at91_set_pio_output(CONFIG_RED_LED, 1);
> + at91_set_pio_output(CONFIG_GREEN_LED, 1);
>
> - at91_set_gpio_value(CONFIG_RED_LED, 0);
> - at91_set_gpio_value(CONFIG_GREEN_LED, 1);
> + at91_set_pio_value(CONFIG_RED_LED, 0);
> + at91_set_pio_value(CONFIG_GREEN_LED, 1);
> }
> diff --git a/board/ronetix/pm9263/pm9263.c b/board/ronetix/pm9263/pm9263.c
> index 23ea154..83371e5 100644
> --- a/board/ronetix/pm9263/pm9263.c
> +++ b/board/ronetix/pm9263/pm9263.c
> @@ -27,13 +27,13 @@
> #include <common.h>
> #include <asm/sizes.h>
> #include <asm/arch/at91sam9263.h>
> -#include <asm/arch/at91sam9263_matrix.h>
> #include <asm/arch/at91sam9_smc.h>
> #include <asm/arch/at91_common.h>
> #include <asm/arch/at91_pmc.h>
> #include <asm/arch/at91_rstc.h>
> +#include <asm/arch/at91_matrix.h>
> +#include <asm/arch/at91_pio.h>
> #include <asm/arch/clk.h>
> -#include <asm/arch/gpio.h>
> #include <asm/arch/io.h>
> #include <asm/arch/hardware.h>
> #include <lcd.h>
> @@ -55,52 +55,59 @@ DECLARE_GLOBAL_DATA_PTR;
> static void pm9263_nand_hw_init(void)
> {
> unsigned long csa;
> + at91_smc_t *smc = (at91_smc_t *) AT91_SMC0_BASE;
> + at91_matrix_t *matrix = (at91_matrix_t *) AT91_MATRIX_BASE;
>
> /* Enable CS3 */
> - csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
> - at91_sys_write(AT91_MATRIX_EBI0CSA,
> - csa | AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA);
> + csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
> + writel(csa, &matrix->csa[0]);
Missing SMARTMEDIA
Is this ok?
>
> /* Configure SMC CS3 for NAND/SmartMedia */
> - at91_sys_write(AT91_SMC_SETUP(3),
> - AT91_SMC_NWESETUP_(1) | AT91_SMC_NCS_WRSETUP_(1) |
> - AT91_SMC_NRDSETUP_(1) | AT91_SMC_NCS_RDSETUP_(1));
> - at91_sys_write(AT91_SMC_PULSE(3),
> - AT91_SMC_NWEPULSE_(3) | AT91_SMC_NCS_WRPULSE_(3) |
> - AT91_SMC_NRDPULSE_(3) | AT91_SMC_NCS_RDPULSE_(3));
> - at91_sys_write(AT91_SMC_CYCLE(3),
> - AT91_SMC_NWECYCLE_(5) | AT91_SMC_NRDCYCLE_(5));
> - at91_sys_write(AT91_SMC_MODE(3),
> - AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
> - AT91_SMC_EXNWMODE_DISABLE |
> + writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) |
> + AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(1),
> + &smc->cs[3].setup);
> +
> + writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
> + AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
> + &smc->cs[3].pulse);
> +
> + writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
> + &smc->cs[3].cycle);
> +
> + writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
> + AT91_SMC_MODE_EXNW_DISABLE |
> #ifdef CONFIG_SYS_NAND_DBW_16
> - AT91_SMC_DBW_16 |
> + AT91_SMC_MODE_DBW_16 |
> #else /* CONFIG_SYS_NAND_DBW_8 */
> - AT91_SMC_DBW_8 |
> + AT91_SMC_MODE_DBW_8 |
> #endif
> - AT91_SMC_TDF_(2));
> + AT91_SMC_MODE_TDF_CYCLE(2),
> + &smc->cs[3].mode);
>
> /* Configure RDY/BSY */
> - at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
> + at91_set_pio_input(CONFIG_SYS_NAND_READY_PIN, 1);
>
> /* Enable NandFlash */
> - at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
> + at91_set_pio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
> }
> #endif
>
> #ifdef CONFIG_MACB
> static void pm9263_macb_hw_init(void)
> {
> + at91_pmc_t *pmc = (at91_pmc_t *) AT91_PMC_BASE;
> + at91_pio_t *pio = (at91_pio_t *) AT91_PIO_BASE;
> +
> /*
> * PB27 enables the 50MHz oscillator for Ethernet PHY
> * 1 - enable
> * 0 - disable
> */
> - at91_set_gpio_output(AT91_PIN_PB27, 1);
> - at91_set_gpio_value(AT91_PIN_PB27, 1); /* 1- enable, 0 - disable */
> + at91_set_pio_output(AT91_PIO_PORTB, 27, 1);
> + at91_set_pio_value(AT91_PIO_PORTB, 27, 1); /* 1- enable, 0 - disable */
>
> /* Enable clock */
> - at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9263_ID_EMAC);
> + writel(1 << AT91SAM9263_ID_EMAC, &pmc->pcer);
>
> /*
> * Disable pull-up on:
> @@ -110,19 +117,12 @@ static void pm9263_macb_hw_init(void)
> *
> * PHY has internal pull-down
> */
> - writel(pin_to_mask(AT91_PIN_PC25),
> - pin_to_controller(AT91_PIN_PC0) + PIO_PUDR);
> - writel(pin_to_mask(AT91_PIN_PE25) |
> - pin_to_mask(AT91_PIN_PE26),
> - pin_to_controller(AT91_PIN_PE0) + PIO_PUDR);
> -
> + writel(1 << 25, &pio->pioc.pudr);
> + writel((1 << 25) | (1 << 26), &pio->pioe.pudr);
>
There should be #defines for these values.
> /* Re-enable pull-up */
> - writel(pin_to_mask(AT91_PIN_PC25),
> - pin_to_controller(AT91_PIN_PC0) + PIO_PUER);
> - writel(pin_to_mask(AT91_PIN_PE25) |
> - pin_to_mask(AT91_PIN_PE26),
> - pin_to_controller(AT91_PIN_PE0) + PIO_PUER);
> + writel(1 << 25, &pio->pioc.puer);
> + writel((1 << 25) | (1 << 26), &pio->pioe.puer);
>
There should be #defines for these values.
There are similar cases where old #define's have be
converted to bit ops. The old method of #defines is preferred
Tom
More information about the U-Boot
mailing list