Patchwork [U-Boot,v2] arm: auto gen asm-offsets.h for mb86r0x

login
register
mail settings
Submitter Matthias Weisser
Date Aug. 1, 2011, 3:11 p.m.
Message ID <1312211512-10396-1-git-send-email-weisserm@arcor.de>
Download mbox | patch
Permalink /patch/107766/
State Accepted
Commit 7a619ab30a0db64c22fb053702c41a94f05cf648
Delegated to: Albert ARIBAUD
Headers show

Comments

Matthias Weisser - Aug. 1, 2011, 3:11 p.m.
auto gen asm-offsets.h for mb86r0x

Signed-off-by: Matthias Weisser <weisserm@arcor.de>
---
Changes in v2:
  - Added forgotten register structures 

 arch/arm/cpu/arm926ejs/mb86r0x/Makefile         |    2 +
 arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c    |   65 ++++++++++++++++++++
 arch/arm/include/asm/arch-mb86r0x/asm-offsets.h |   74 -----------------------
 arch/arm/include/asm/arch-mb86r0x/mb86r0x.h     |   42 +++++++++++++
 4 files changed, 109 insertions(+), 74 deletions(-)
 create mode 100644 arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
 delete mode 100644 arch/arm/include/asm/arch-mb86r0x/asm-offsets.h
Matthias Weisser - Aug. 1, 2011, 6:16 p.m.
Dear Albert

Am 01.08.2011 17:11, schrieb Matthias Weisser:
> auto gen asm-offsets.h for mb86r0x
> 
> Signed-off-by: Matthias Weisser <weisserm@arcor.de>
> ---
> Changes in v2:
>   - Added forgotten register structures 
> 
>  arch/arm/cpu/arm926ejs/mb86r0x/Makefile         |    2 +
>  arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c    |   65 ++++++++++++++++++++
>  arch/arm/include/asm/arch-mb86r0x/asm-offsets.h |   74 -----------------------
>  arch/arm/include/asm/arch-mb86r0x/mb86r0x.h     |   42 +++++++++++++
>  4 files changed, 109 insertions(+), 74 deletions(-)
>  create mode 100644 arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
>  delete mode 100644 arch/arm/include/asm/arch-mb86r0x/asm-offsets.h

Would you please consider this patch for inclusion. Currently jadecpu is
broken since [f456445f29d22bb31ad29fdf1d6b2769decd37a2]. It is not clear
to me why the referenced patch breaks jadecpu (must be some make
dependency stuff) but it slipped through my testing as I had applied the
above patch in an earlier version when submitting the patch which breaks it.

This patch fixes jadecpu and also gets rid of the hand written
asm-offsets.h.

I can't test it (no powerpc toolchain at hand) but the above mentioned
commit may also break mpc512x based boards. If that is the case
./arch/powerpc/cpu/mpc512x/asm-offsets.h should also be autogenerated.
If this is done we will not have any non-autogenerated asm-offsets.h in
u-boot anymore.


Regards,
Matthias
Albert ARIBAUD - Aug. 1, 2011, 7:47 p.m.
Hi Matthias,

Le 01/08/2011 20:16, Matthias Weisser a écrit :
> Dear Albert
>
> Am 01.08.2011 17:11, schrieb Matthias Weisser:
>> auto gen asm-offsets.h for mb86r0x
>>
>> Signed-off-by: Matthias Weisser<weisserm@arcor.de>
>> ---
>> Changes in v2:
>>    - Added forgotten register structures
>>
>>   arch/arm/cpu/arm926ejs/mb86r0x/Makefile         |    2 +
>>   arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c    |   65 ++++++++++++++++++++
>>   arch/arm/include/asm/arch-mb86r0x/asm-offsets.h |   74 -----------------------
>>   arch/arm/include/asm/arch-mb86r0x/mb86r0x.h     |   42 +++++++++++++
>>   4 files changed, 109 insertions(+), 74 deletions(-)
>>   create mode 100644 arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
>>   delete mode 100644 arch/arm/include/asm/arch-mb86r0x/asm-offsets.h
>
> Would you please consider this patch for inclusion. Currently jadecpu is
> broken since [f456445f29d22bb31ad29fdf1d6b2769decd37a2]. It is not clear
> to me why the referenced patch breaks jadecpu (must be some make
> dependency stuff) but it slipped through my testing as I had applied the
> above patch in an earlier version when submitting the patch which breaks it.
>
> This patch fixes jadecpu and also gets rid of the hand written
> asm-offsets.h.
>
> I can't test it (no powerpc toolchain at hand) but the above mentioned
> commit may also break mpc512x based boards. If that is the case
> ./arch/powerpc/cpu/mpc512x/asm-offsets.h should also be autogenerated.
> If this is done we will not have any non-autogenerated asm-offsets.h in
> u-boot anymore.

Wolfgang, can you test on powerpc?

> Regards,
> Matthias

Amicalement,
Wolfgang Denk - Aug. 1, 2011, 8:37 p.m.
Dear Matthias Weisser,

In message <4E36ED80.4050701@arcor.de> you wrote:
> 
> Would you please consider this patch for inclusion. Currently jadecpu is
> broken since [f456445f29d22bb31ad29fdf1d6b2769decd37a2]. It is not clear
> to me why the referenced patch breaks jadecpu (must be some make
> dependency stuff) but it slipped through my testing as I had applied the
> above patch in an earlier version when submitting the patch which breaks it.
> 
> This patch fixes jadecpu and also gets rid of the hand written
> asm-offsets.h.
> 
> I can't test it (no powerpc toolchain at hand) but the above mentioned
> commit may also break mpc512x based boards. If that is the case
> ./arch/powerpc/cpu/mpc512x/asm-offsets.h should also be autogenerated.
> If this is done we will not have any non-autogenerated asm-offsets.h in
> u-boot anymore.

Which sort of errors should I look for?  Buil errors?  Or run-time
errors?

All MPC512x based boards build fine:

+ ./MAKEALL 512x
Configuring for pdm360ng board...
   text    data     bss     dec     hex filename
 285842   32608   29776  348226   55042 /work/wd/tmp-ppc/u-boot
Configuring for aria board...
   text    data     bss     dec     hex filename
 253515   19760   29464  302739   49e93 /work/wd/tmp-ppc/u-boot
Configuring for mecp5123 board...
   text    data     bss     dec     hex filename
 249391   20244  221024  490659   77ca3 /work/wd/tmp-ppc/u-boot
Configuring for mpc5121ads board...
   text    data     bss     dec     hex filename
 322971   22940  270552  616463   9680f /work/wd/tmp-ppc/u-boot
Configuring for mpc5121ads_rev2 - Board: mpc5121ads, Options: MPC5121ADS_REV2
   text    data     bss     dec     hex filename
 309335   22428  270328  602091   92feb /work/wd/tmp-ppc/u-boot

--------------------- SUMMARY ----------------------------
Boards compiled: 5
----------------------------------------------------------


Best regards,

Wolfgang Denk
Albert ARIBAUD - Aug. 4, 2011, 11:58 a.m.
Hi Matthias,

On 01/08/2011 17:11, Matthias Weisser wrote:
> auto gen asm-offsets.h for mb86r0x
>
> Signed-off-by: Matthias Weisser<weisserm@arcor.de>
> ---
> Changes in v2:
>    - Added forgotten register structures
>
>   arch/arm/cpu/arm926ejs/mb86r0x/Makefile         |    2 +
>   arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c    |   65 ++++++++++++++++++++
>   arch/arm/include/asm/arch-mb86r0x/asm-offsets.h |   74 -----------------------
>   arch/arm/include/asm/arch-mb86r0x/mb86r0x.h     |   42 +++++++++++++
>   4 files changed, 109 insertions(+), 74 deletions(-)
>   create mode 100644 arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
>   delete mode 100644 arch/arm/include/asm/arch-mb86r0x/asm-offsets.h

Applied to u-boot-arm/master, thanks !

Amicalement,

Patch

diff --git a/arch/arm/cpu/arm926ejs/mb86r0x/Makefile b/arch/arm/cpu/arm926ejs/mb86r0x/Makefile
index bab048b..974d0be 100644
--- a/arch/arm/cpu/arm926ejs/mb86r0x/Makefile
+++ b/arch/arm/cpu/arm926ejs/mb86r0x/Makefile
@@ -37,6 +37,8 @@  all:	$(obj).depend $(LIB)
 $(LIB):	$(OBJS)
 	$(call cmd_link_o_target, $(OBJS))
 
+$(OBJS) : $(TOPDIR)/include/asm/arch/asm-offsets.h
+
 #########################################################################
 
 # defines $(obj).depend target
diff --git a/arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c b/arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
new file mode 100644
index 0000000..6f9c722
--- /dev/null
+++ b/arch/arm/cpu/arm926ejs/mb86r0x/asm-offsets.c
@@ -0,0 +1,65 @@ 
+/*
+ * Adapted from Linux v2.6.36 kernel: arch/powerpc/kernel/asm-offsets.c
+ *
+ * This program is used to generate definitions needed by
+ * assembly language modules.
+ *
+ * We use the technique used in the OSF Mach kernel code:
+ * generate asm statements containing #defines,
+ * compile this file to assembler, and then extract the
+ * #defines from the assembly-language output.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#include <common.h>
+#include <asm/arch/mb86r0x.h>
+
+#include <linux/kbuild.h>
+
+int main(void)
+{
+	/* ddr2 controller */
+	DEFINE(DDR2_DRIC, offsetof(struct mb86r0x_ddr2c, dric));
+	DEFINE(DDR2_DRIC1, offsetof(struct mb86r0x_ddr2c, dric1));
+	DEFINE(DDR2_DRIC2, offsetof(struct mb86r0x_ddr2c, dric2));
+	DEFINE(DDR2_DRCA, offsetof(struct mb86r0x_ddr2c, drca));
+	DEFINE(DDR2_DRCM, offsetof(struct mb86r0x_ddr2c, drcm));
+	DEFINE(DDR2_DRCST1, offsetof(struct mb86r0x_ddr2c, drcst1));
+	DEFINE(DDR2_DRCST2, offsetof(struct mb86r0x_ddr2c, drcst2));
+	DEFINE(DDR2_DRCR, offsetof(struct mb86r0x_ddr2c, drcr));
+	DEFINE(DDR2_DRCF, offsetof(struct mb86r0x_ddr2c, drcf));
+	DEFINE(DDR2_DRASR, offsetof(struct mb86r0x_ddr2c, drasr));
+	DEFINE(DDR2_DRIMS, offsetof(struct mb86r0x_ddr2c, drims));
+	DEFINE(DDR2_DROS, offsetof(struct mb86r0x_ddr2c, dros));
+	DEFINE(DDR2_DRIBSODT1, offsetof(struct mb86r0x_ddr2c, dribsodt1));
+	DEFINE(DDR2_DROABA, offsetof(struct mb86r0x_ddr2c, droaba));
+	DEFINE(DDR2_DROBS, offsetof(struct mb86r0x_ddr2c, drobs));
+
+	/* clock reset generator */
+	DEFINE(CRG_CRPR, offsetof(struct mb86r0x_crg, crpr));
+	DEFINE(CRG_CRHA, offsetof(struct mb86r0x_crg, crha));
+	DEFINE(CRG_CRPA, offsetof(struct mb86r0x_crg, crpa));
+	DEFINE(CRG_CRPB, offsetof(struct mb86r0x_crg, crpb));
+	DEFINE(CRG_CRHB, offsetof(struct mb86r0x_crg, crhb));
+	DEFINE(CRG_CRAM, offsetof(struct mb86r0x_crg, cram));
+
+	/* chip control module */
+	DEFINE(CCNT_CDCRC, offsetof(struct mb86r0x_ccnt, cdcrc));
+
+	/* external bus interface */
+	DEFINE(MEMC_MCFMODE0, offsetof(struct mb86r0x_memc, mcfmode[0]));
+	DEFINE(MEMC_MCFMODE2, offsetof(struct mb86r0x_memc, mcfmode[2]));
+	DEFINE(MEMC_MCFMODE4, offsetof(struct mb86r0x_memc, mcfmode[4]));
+	DEFINE(MEMC_MCFTIM0, offsetof(struct mb86r0x_memc, mcftim[0]));
+	DEFINE(MEMC_MCFTIM2, offsetof(struct mb86r0x_memc, mcftim[2]));
+	DEFINE(MEMC_MCFTIM4, offsetof(struct mb86r0x_memc, mcftim[4]));
+	DEFINE(MEMC_MCFAREA0, offsetof(struct mb86r0x_memc, mcfarea[0]));
+	DEFINE(MEMC_MCFAREA2, offsetof(struct mb86r0x_memc, mcfarea[2]));
+	DEFINE(MEMC_MCFAREA4, offsetof(struct mb86r0x_memc, mcfarea[4]));
+
+	return 0;
+}
diff --git a/arch/arm/include/asm/arch-mb86r0x/asm-offsets.h b/arch/arm/include/asm/arch-mb86r0x/asm-offsets.h
deleted file mode 100644
index 0bc5279..0000000
--- a/arch/arm/include/asm/arch-mb86r0x/asm-offsets.h
+++ /dev/null
@@ -1,74 +0,0 @@ 
-/*
- * (C) Copyright 2010
- * Matthias Weisser <weisserm@arcor.de>
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef ASM_OFFSETS_H
-#define ASM_OFFSETS_H
-
-/*
- * Offset definitions for DDR controller
- */
-#define DDR2_DRIC		0x00
-#define DDR2_DRIC1		0x02
-#define DDR2_DRIC2		0x04
-#define DDR2_DRCA		0x06
-#define DDR2_DRCM		0x08
-#define DDR2_DRCST1		0x0a
-#define DDR2_DRCST2		0x0c
-#define DDR2_DRCR		0x0e
-#define DDR2_DRCF		0x20
-#define DDR2_DRASR		0x30
-#define DDR2_DRIMS		0x50
-#define DDR2_DROS		0x60
-#define DDR2_DRIBSODT1		0x64
-#define DDR2_DROABA		0x70
-#define DDR2_DROBS		0x84
-
-/*
- * Offset definitions Chip Control Module
- */
-#define CCNT_CDCRC		0xec
-
-/*
- * Offset definitions clock reset generator
- */
-#define CRG_CRPR		0x00
-#define CRG_CRHA		0x18
-#define CRG_CRPA		0x1c
-#define CRG_CRPB		0x20
-#define CRG_CRHB		0x24
-#define CRG_CRAM		0x28
-
-/*
- * Offset definitions External bus interface
- */
-#define MEMC_MCFMODE0		0x00
-#define MEMC_MCFMODE2		0x08
-#define MEMC_MCFMODE4		0x10
-#define MEMC_MCFTIM0		0x20
-#define MEMC_MCFTIM2		0x28
-#define MEMC_MCFTIM4		0x30
-#define MEMC_MCFAREA0		0x40
-#define MEMC_MCFAREA2		0x48
-#define MEMC_MCFAREA4		0x50
-
-#endif /* ASM_OFFSETS_H */
diff --git a/arch/arm/include/asm/arch-mb86r0x/mb86r0x.h b/arch/arm/include/asm/arch-mb86r0x/mb86r0x.h
index 36a28b7..cb9eee5 100644
--- a/arch/arm/include/asm/arch-mb86r0x/mb86r0x.h
+++ b/arch/arm/include/asm/arch-mb86r0x/mb86r0x.h
@@ -498,6 +498,48 @@  struct mb86r0x_gdc {
 	uint32_t pad08[7*1024];
 };
 
+/* mb86r0x ddr2c */
+struct mb86r0x_ddr2c {
+	uint16_t dric;
+	uint16_t dric1;
+	uint16_t dric2;
+	uint16_t drca;
+	uint16_t drcm;
+	uint16_t drcst1;
+	uint16_t drcst2;
+	uint16_t drcr;
+	uint16_t pad00[8];
+	uint16_t drcf;
+	uint16_t pad01[7];
+	uint16_t drasr;
+	uint16_t pad02[15];
+	uint16_t drims;
+	uint16_t pad03[7];
+	uint16_t dros;
+	uint16_t pad04;
+	uint16_t dribsodt1;
+	uint16_t dribsocd;
+	uint16_t dribsocd2;
+	uint16_t pad05[3];
+	uint16_t droaba;
+	uint16_t pad06[9];
+	uint16_t drobs;
+	uint16_t pad07[5];
+	uint16_t drimr1;
+	uint16_t drimr2;
+	uint16_t drimr3;
+	uint16_t drimr4;
+	uint16_t droisr1;
+	uint16_t droisr2;
+};
+
+/* mb86r0x memc */
+struct mb86r0x_memc {
+	uint32_t mcfmode[8];
+	uint32_t mcftim[8];
+	uint32_t mcfarea[8];
+};
+
 #endif /* __ASSEMBLY__ */
 
 /*