From mboxrd@z Thu Jan 1 00:00:00 1970 From: RONETIX - Asen Dimov Date: Tue, 13 Apr 2010 10:43:08 +0300 Subject: [U-Boot] [PATCH] pm9263 converted to at91 soc access In-Reply-To: <4BC3A646.1000502@windriver.com> References: <1270632801-9399-1-git-send-email-dimov@ronetix.at> <4BC3A646.1000502@windriver.com> Message-ID: <4BC4208C.80303@ronetix.at> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Tom wrote: > Asen Dimov wrote: >> Signed-off-by: Asen Dimov >> --- >> 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 >> #include >> #include >> -#include >> +#include >> #include >> >> 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 >> #include >> #include >> -#include >> #include >> #include >> #include >> #include >> +#include >> +#include >> #include >> -#include >> #include >> #include >> #include >> @@ -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