[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