[U-Boot] [PATCH 1/3] arm: at91/spl: matrix: move matrix init to separate file

Yang, Wenyou Wenyou.Yang at atmel.com
Thu Nov 5 08:54:48 CET 2015


Hi Josh,

Thank you for your review.

> -----Original Message-----
> From: Wu, Josh
> Sent: 2015年11月5日 10:53
> To: Yang, Wenyou; U-Boot Mailing List
> Subject: Re: [U-Boot] [PATCH 1/3] arm: at91/spl: matrix: move matrix init to
> separate file
> 
> Hi, Wenyou
> 
> On 11/4/2015 2:28 PM, Wenyou Yang wrote:
> > To make the matrix initialization code sharing with other SoCs, move
> > it from SAMA5D4 particular file, mach-at91/armv7/sama5d4_devices.c to
> > a separate file, mach-at91/matrix.c
> is it possible just move it to mach-at91/armv7/matrix.c, as it is only used by
> armv7 core?
As you know, the at91 spl code is placed at the directory, mach-at91/, so place matrix.c here is acceptable.
Yes,  we should consider a separate directory to accommodate the at91 spl code in the future.

> 
> Best Regards,
> Josh Wu
> >
> > Signed-off-by: Wenyou Yang <wenyou.yang at atmel.com>
> > ---
> >
> >   arch/arm/mach-at91/Makefile                |    2 +-
> >   arch/arm/mach-at91/armv7/sama5d4_devices.c |   42 -----------------------
> >   arch/arm/mach-at91/matrix.c                |   51
> ++++++++++++++++++++++++++++
> >   3 files changed, 52 insertions(+), 43 deletions(-)
> >   create mode 100644 arch/arm/mach-at91/matrix.c
> >
> > diff --git a/arch/arm/mach-at91/Makefile b/arch/arm/mach-at91/Makefile
> > index 313eb47..649aff2 100644
> > --- a/arch/arm/mach-at91/Makefile
> > +++ b/arch/arm/mach-at91/Makefile
> > @@ -6,7 +6,7 @@ obj-$(CONFIG_AT91SAM9M10G45) += mpddrc.o
> spl_at91.o
> >   obj-$(CONFIG_AT91SAM9N12) += mpddrc.o spl_at91.o
> >   obj-$(CONFIG_AT91SAM9X5) += mpddrc.o spl_at91.o
> >   obj-$(CONFIG_SAMA5D3) += mpddrc.o spl_atmel.o
> > -obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o
> > +obj-$(CONFIG_SAMA5D4) += mpddrc.o spl_atmel.o matrix.o
> >   obj-y += spl.o
> >   endif
> >
> > diff --git a/arch/arm/mach-at91/armv7/sama5d4_devices.c
> > b/arch/arm/mach-at91/armv7/sama5d4_devices.c
> > index 76301d6..52f4862 100644
> > --- a/arch/arm/mach-at91/armv7/sama5d4_devices.c
> > +++ b/arch/arm/mach-at91/armv7/sama5d4_devices.c
> > @@ -10,7 +10,6 @@
> >   #include <asm/arch/at91_common.h>
> >   #include <asm/arch/at91_pmc.h>
> >   #include <asm/arch/clk.h>
> > -#include <asm/arch/sama5_matrix.h>
> >   #include <asm/arch/sama5_sfr.h>
> >   #include <asm/arch/sama5d4.h>
> >
> > @@ -48,47 +47,6 @@ void at91_udp_hw_init(void)
> >   #endif
> >
> >   #ifdef CONFIG_SPL_BUILD
> > -void matrix_init(void)
> > -{
> > -	struct atmel_matrix *h64mx = (struct atmel_matrix
> *)ATMEL_BASE_MATRIX0;
> > -	struct atmel_matrix *h32mx = (struct atmel_matrix
> *)ATMEL_BASE_MATRIX1;
> > -	int i;
> > -
> > -	/* Disable the write protect */
> > -	writel(ATMEL_MATRIX_WPMR_WPKEY &
> ~ATMEL_MATRIX_WPMR_WPEN, &h64mx->wpmr);
> > -	writel(ATMEL_MATRIX_WPMR_WPKEY &
> ~ATMEL_MATRIX_WPMR_WPEN, &h32mx->wpmr);
> > -
> > -	/* DDR port 1 ~ poart 7, slave number is: 4 ~ 10 */
> > -	for (i = 4; i <= 10; i++) {
> > -		writel(0x000f0f0f, &h64mx->ssr[i]);
> > -		writel(0x0000ffff, &h64mx->sassr[i]);
> > -		writel(0x0000000f, &h64mx->srtsr[i]);
> > -	}
> > -
> > -	/* CS3 */
> > -	writel(0x00c0c0c0, &h32mx->ssr[3]);
> > -	writel(0xff000000, &h32mx->sassr[3]);
> > -	writel(0xff000000, &h32mx->srtsr[3]);
> > -
> > -	/* NFC SRAM */
> > -	writel(0x00010101, &h32mx->ssr[4]);
> > -	writel(0x00000001, &h32mx->sassr[4]);
> > -	writel(0x00000001, &h32mx->srtsr[4]);
> > -
> > -	/* Configure Programmable Security peripherals on matrix 64 */
> > -	writel(readl(&h64mx->spselr[0]) | 0x00080000, &h64mx->spselr[0]);
> > -	writel(readl(&h64mx->spselr[1]) | 0x00180000, &h64mx->spselr[1]);
> > -	writel(readl(&h64mx->spselr[2]) | 0x00000008, &h64mx->spselr[2]);
> > -
> > -	/* Configure Programmable Security peripherals on matrix 32 */
> > -	writel(readl(&h32mx->spselr[0]) | 0xFFC00000, &h32mx->spselr[0]);
> > -	writel(readl(&h32mx->spselr[1]) | 0x60E3FFFF, &h32mx->spselr[1]);
> > -
> > -	/* Enable the write protect */
> > -	writel(ATMEL_MATRIX_WPMR_WPKEY |
> ATMEL_MATRIX_WPMR_WPEN, &h64mx->wpmr);
> > -	writel(ATMEL_MATRIX_WPMR_WPKEY |
> ATMEL_MATRIX_WPMR_WPEN, &h32mx->wpmr);
> > -}
> > -
> >   void redirect_int_from_saic_to_aic(void)
> >   {
> >   	struct atmel_sfr *sfr = (struct atmel_sfr *)ATMEL_BASE_SFR; diff
> > --git a/arch/arm/mach-at91/matrix.c b/arch/arm/mach-at91/matrix.c new
> > file mode 100644 index 0000000..cf36386
> > --- /dev/null
> > +++ b/arch/arm/mach-at91/matrix.c
> > @@ -0,0 +1,51 @@
> > +/*
> > + * Copyright (C) 2015 Atmel Corporation
> > + *		      Wenyou Yang <wenyou.yang at atmel.com>
> > + *
> > + * SPDX-License-Identifier:	GPL-2.0+
> > + */
> > +
> > +#include <common.h>
> > +#include <asm/io.h>
> > +#include <asm/arch/sama5_matrix.h>
> > +
> > +void matrix_init(void)
> > +{
> > +	struct atmel_matrix *h64mx = (struct atmel_matrix
> *)ATMEL_BASE_MATRIX0;
> > +	struct atmel_matrix *h32mx = (struct atmel_matrix
> *)ATMEL_BASE_MATRIX1;
> > +	int i;
> > +
> > +	/* Disable the write protect */
> > +	writel(ATMEL_MATRIX_WPMR_WPKEY &
> ~ATMEL_MATRIX_WPMR_WPEN, &h64mx->wpmr);
> > +	writel(ATMEL_MATRIX_WPMR_WPKEY &
> ~ATMEL_MATRIX_WPMR_WPEN,
> > +&h32mx->wpmr);
> > +
> > +	/* DDR port 1 ~ poart 7, slave number is: 4 ~ 10 */
> > +	for (i = 4; i <= 10; i++) {
> > +		writel(0x000f0f0f, &h64mx->ssr[i]);
> > +		writel(0x0000ffff, &h64mx->sassr[i]);
> > +		writel(0x0000000f, &h64mx->srtsr[i]);
> > +	}
> > +
> > +	/* CS3 */
> > +	writel(0x00c0c0c0, &h32mx->ssr[3]);
> > +	writel(0xff000000, &h32mx->sassr[3]);
> > +	writel(0xff000000, &h32mx->srtsr[3]);
> > +
> > +	/* NFC SRAM */
> > +	writel(0x00010101, &h32mx->ssr[4]);
> > +	writel(0x00000001, &h32mx->sassr[4]);
> > +	writel(0x00000001, &h32mx->srtsr[4]);
> > +
> > +	/* Configure Programmable Security peripherals on matrix 64 */
> > +	writel(readl(&h64mx->spselr[0]) | 0x00080000, &h64mx->spselr[0]);
> > +	writel(readl(&h64mx->spselr[1]) | 0x00180000, &h64mx->spselr[1]);
> > +	writel(readl(&h64mx->spselr[2]) | 0x00000008, &h64mx->spselr[2]);
> > +
> > +	/* Configure Programmable Security peripherals on matrix 32 */
> > +	writel(readl(&h32mx->spselr[0]) | 0xFFC00000, &h32mx->spselr[0]);
> > +	writel(readl(&h32mx->spselr[1]) | 0x60E3FFFF, &h32mx->spselr[1]);
> > +
> > +	/* Enable the write protect */
> > +	writel(ATMEL_MATRIX_WPMR_WPKEY |
> ATMEL_MATRIX_WPMR_WPEN, &h64mx->wpmr);
> > +	writel(ATMEL_MATRIX_WPMR_WPKEY |
> ATMEL_MATRIX_WPMR_WPEN,
> > +&h32mx->wpmr); }

Best Regards,
Wenyou Yang


More information about the U-Boot mailing list