[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