[U-Boot] [PATCH] pm9263 converted to at91 soc access

RONETIX - Asen Dimov dimov at ronetix.at
Tue Apr 13 09:43:08 CEST 2010


Tom wrote:
> 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 ?
>
The two leds are on PIOB, no leds on PIO: C, D or E.
It is 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?
>
AT91_MATRIX_EBI0_CS3A_SMC_SMARTMEDIA sets the SMARTMEDIA bit and
AT91_MATRIX_CSA_EBI_CS3A sets the SMARTMEDIA bit too.
It is 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
Ok. I will #define the values.
>
> Tom
Regards,
Asen


More information about the U-Boot mailing list