[U-Boot] [PATCH 4/4] powerpc/p1010rdb: add p1010rdb-pb support with updating p1010rdb-pa

2013-09-13 Thread Shengzhou Liu
- Rename old P1010RDB board as P1010RDB-PA.
- Add support for new P1010RDB-PB board.
- Some optimization.

For more details, see board/freescale/p1010rdb/README.

Signed-off-by: Shengzhou Liu shengzhou@freescale.com
---
 board/freescale/p1010rdb/p1010rdb.c | 176 ++--
 boards.cfg  |  40 +---
 include/configs/P1010RDB.h  | 101 ++---
 3 files changed, 283 insertions(+), 34 deletions(-)

diff --git a/board/freescale/p1010rdb/p1010rdb.c 
b/board/freescale/p1010rdb/p1010rdb.c
index ae8ba45..e940d22 100644
--- a/board/freescale/p1010rdb/p1010rdb.c
+++ b/board/freescale/p1010rdb/p1010rdb.c
@@ -38,12 +38,23 @@ DECLARE_GLOBAL_DATA_PTR;
 enum {
MUX_TYPE_IFC,
MUX_TYPE_SDHC,
+   MUX_TYPE_SPIFLASH,
+   MUX_TYPE_TDM,
+   MUX_TYPE_CAN,
+   MUX_TYPE_CS0_NOR,
+   MUX_TYPE_CS0_NAND,
+};
+
+enum {
+   I2C_READ_BANK,
+   I2C_READ_PCB_VER,
 };
 
 static uint sd_ifc_mux;
 
 struct cpld_data {
u8 cpld_ver; /* cpld revision */
+#if defined(CONFIG_P1010RDB_PA)
u8 pcba_ver; /* pcb revision number */
u8 twindie_ddr3;
u8 res1[6];
@@ -58,6 +69,9 @@ struct cpld_data {
u8 por1; /* POR Options */
u8 por2; /* POR Options */
u8 por3; /* POR Options */
+#elif defined(CONFIG_P1010RDB_PB)
+   u8 rom_loc;
+#endif
 };
 
 int board_early_init_f(void)
@@ -116,6 +130,9 @@ int config_board_mux(int ctrl_type)
ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
u8 tmp;
 
+#if defined(CONFIG_P1010RDB_PA)
+   struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
+
switch (ctrl_type) {
case MUX_TYPE_IFC:
i2c_set_bus_num(I2C_PCA9557_BUS_NUM);
@@ -136,25 +153,171 @@ int config_board_mux(int ctrl_type)
clrsetbits_be32(gur-pmuxcr, PMUXCR1_SDHC_MASK,
PMUXCR1_SDHC_ENABLE);
break;
+   case MUX_TYPE_SPIFLASH:
+   out_8(cpld_data-spi_cs0_sel, MUX_CPLD_SPICS0_FLASH);
+   break;
+   case MUX_TYPE_TDM:
+   out_8(cpld_data-tdm_can_sel, MUX_CPLD_TDM);
+   out_8(cpld_data-spi_cs0_sel, MUX_CPLD_SPICS0_SLIC);
+   break;
+   case MUX_TYPE_CAN:
+   out_8(cpld_data-tdm_can_sel, MUX_CPLD_CAN_UART);
+   break;
default:
break;
}
+#elif defined(CONFIG_P1010RDB_PB)
+   uint orig_bus = i2c_get_bus_num();
+   i2c_set_bus_num(I2C_PCA9557_BUS_NUM);
 
+   switch (ctrl_type) {
+   case MUX_TYPE_IFC:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   clrbits_8(tmp, 0x04);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x04);
+   i2c_write(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   sd_ifc_mux = MUX_TYPE_IFC;
+   clrbits_be32(gur-pmuxcr, PMUXCR1_IFC_MASK);
+   break;
+   case MUX_TYPE_SDHC:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   setbits_8(tmp, 0x04);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x04);
+   i2c_write(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   sd_ifc_mux = MUX_TYPE_SDHC;
+   clrsetbits_be32(gur-pmuxcr, PMUXCR1_SDHC_MASK,
+   PMUXCR1_SDHC_ENABLE);
+   break;
+   case MUX_TYPE_SPIFLASH:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   clrbits_8(tmp, 0x80);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x80);
+   i2c_write(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   break;
+   case MUX_TYPE_TDM:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   setbits_8(tmp, 0x82);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x82);
+   i2c_write(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   break;
+   case MUX_TYPE_CAN:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   clrbits_8(tmp, 0x02);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x02);
+   i2c_write(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   break;
+   case MUX_TYPE_CS0_NOR:
+   i2c_read(I2C_PCA9557_ADDR2, 0, 1, tmp, 1);
+   clrbits_8(tmp, 0x08);
+   i2c_write(I2C_PCA9557_ADDR2, 1, 1, tmp, 1);
+   i2c_read(I2C_PCA9557_ADDR2, 3, 1, tmp, 1);
+   clrbits_8(tmp, 0x08);
+   

[U-Boot] [PATCH 3/4] board/p1010rdb: add pin mux and sdhc support in any boot

2013-09-13 Thread Shengzhou Liu
Since pins multiplexing, SDHC shares signals with IFC, with this patch:
To enable SDHC in case of NOR/NAND/SPI boot
   a) For temporary use case in runtime without reboot system
  run 'mux sdhc' in u-boot to validate SDHC with invalidating IFC.
   b) For long-term use case
  set 'esdhc' in hwconfig and save it.
To enable IFC in case of SD boot
   a) For temporary use case in runtime without reboot system
  run 'mux ifc' in u-boot to validate IFC with invalidating SDHC.
   b) For long-term use case
  set 'ifc' in hwconfig and save it.

Signed-off-by: Shengzhou Liu shengzhou@freescale.com
---
 board/freescale/p1010rdb/law.c  |   2 -
 board/freescale/p1010rdb/p1010rdb.c | 119 +++-
 board/freescale/p1010rdb/tlb.c  |   4 --
 include/configs/P1010RDB.h  |  15 +
 4 files changed, 107 insertions(+), 33 deletions(-)

diff --git a/board/freescale/p1010rdb/law.c b/board/freescale/p1010rdb/law.c
index 0045127..ed41a05 100644
--- a/board/freescale/p1010rdb/law.c
+++ b/board/freescale/p1010rdb/law.c
@@ -9,11 +9,9 @@
 #include asm/mmu.h
 
 struct law_entry law_table[] = {
-#ifndef CONFIG_SDCARD
SET_LAW(CONFIG_SYS_FLASH_BASE_PHYS, LAW_SIZE_32M, LAW_TRGT_IF_IFC),
SET_LAW(CONFIG_SYS_CPLD_BASE_PHYS, LAW_SIZE_128K, LAW_TRGT_IF_IFC),
SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_1M, LAW_TRGT_IF_IFC),
-#endif
 };
 
 int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/freescale/p1010rdb/p1010rdb.c 
b/board/freescale/p1010rdb/p1010rdb.c
index 42153e6..ae8ba45 100644
--- a/board/freescale/p1010rdb/p1010rdb.c
+++ b/board/freescale/p1010rdb/p1010rdb.c
@@ -21,10 +21,8 @@
 #include asm/fsl_serdes.h
 #include asm/fsl_ifc.h
 #include asm/fsl_pci.h
-
-#ifndef CONFIG_SDCARD
 #include hwconfig.h
-#endif
+#include i2c.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -33,8 +31,17 @@ DECLARE_GLOBAL_DATA_PTR;
 #define MUX_CPLD_TDM   0x01
 #define MUX_CPLD_SPICS0_FLASH  0x00
 #define MUX_CPLD_SPICS0_SLIC   0x02
+#define PMUXCR1_IFC_MASK   0x0000
+#define PMUXCR1_SDHC_MASK  0x00fff000
+#define PMUXCR1_SDHC_ENABLE0x00555000
+
+enum {
+   MUX_TYPE_IFC,
+   MUX_TYPE_SDHC,
+};
+
+static uint sd_ifc_mux;
 
-#ifndef CONFIG_SDCARD
 struct cpld_data {
u8 cpld_ver; /* cpld revision */
u8 pcba_ver; /* pcb revision number */
@@ -52,17 +59,14 @@ struct cpld_data {
u8 por2; /* POR Options */
u8 por3; /* POR Options */
 };
-#endif
 
 int board_early_init_f(void)
 {
ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
-#ifndef CONFIG_SDCARD
struct fsl_ifc *ifc = (void *)CONFIG_SYS_IFC_ADDR;
 
/* Clock configuration to access CPLD using IFC(GPCM) */
setbits_be32(ifc-ifc_gcr, 1  IFC_GCR_TBCTL_TRN_TIME_SHIFT);
-#endif
/*
* Reset PCIe slots via GPIO4
*/
@@ -74,7 +78,6 @@ int board_early_init_f(void)
 
 int board_early_init_r(void)
 {
-#ifndef CONFIG_SDCARD
const unsigned int flashbase = CONFIG_SYS_FLASH_BASE;
const u8 flash_esel = find_tlb_idx((void *)flashbase, 1);
 
@@ -98,7 +101,6 @@ int board_early_init_r(void)
CONFIG_SYS_FLASH_BASE_PHYS + 0x100,
MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
0, flash_esel+1, BOOKE_PAGESZ_16M, 1);
-#endif
return 0;
 }
 
@@ -109,6 +111,38 @@ void pci_init_board(void)
 }
 #endif /* ifdef CONFIG_PCI */
 
+int config_board_mux(int ctrl_type)
+{
+   ccsr_gur_t __iomem *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+   u8 tmp;
+
+   switch (ctrl_type) {
+   case MUX_TYPE_IFC:
+   i2c_set_bus_num(I2C_PCA9557_BUS_NUM);
+   tmp = 0xf0;
+   i2c_write(I2C_PCA9557_ADDR1, 3, 1, tmp, 1);
+   tmp = 0x01;
+   i2c_write(I2C_PCA9557_ADDR1, 1, 1, tmp, 1);
+   sd_ifc_mux = MUX_TYPE_IFC;
+   clrbits_be32(gur-pmuxcr, PMUXCR1_IFC_MASK);
+   break;
+   case MUX_TYPE_SDHC:
+   i2c_set_bus_num(I2C_PCA9557_BUS_NUM);
+   tmp = 0xf0;
+   i2c_write(I2C_PCA9557_ADDR1, 3, 1, tmp, 1);
+   tmp = 0x05;
+   i2c_write(I2C_PCA9557_ADDR1, 1, 1, tmp, 1);
+   sd_ifc_mux = MUX_TYPE_SDHC;
+   clrsetbits_be32(gur-pmuxcr, PMUXCR1_SDHC_MASK,
+   PMUXCR1_SDHC_ENABLE);
+   break;
+   default:
+   break;
+   }
+
+   return 0;
+}
+
 int checkboard(void)
 {
struct cpu_type *cpu;
@@ -116,6 +150,11 @@ int checkboard(void)
cpu = gd-arch.cpu;
printf(Board: %sRDB\n, cpu-name);
 
+#ifdef CONFIG_SDCARD
+   /* switch to IFC to read info from CPLD */
+   config_board_mux(MUX_TYPE_IFC);
+#endif
+
return 0;
 }
 
@@ -211,6 +250,16 @@ void fdt_del_sdhc(void *blob)
}
 }
 
+void fdt_del_ifc(void *blob)
+{
+   int nodeoff = 0;
+
+   while 

[U-Boot] [PATCH 1/4] powerpc/p1010rdb: remove unused cpld_show

2013-09-13 Thread Shengzhou Liu
Function cpld_show() was for debug and not called, so clean it.

Signed-off-by: Shengzhou Liu shengzhou@freescale.com
---
 board/freescale/p1010rdb/p1010rdb.c | 35 ---
 1 file changed, 35 deletions(-)

diff --git a/board/freescale/p1010rdb/p1010rdb.c 
b/board/freescale/p1010rdb/p1010rdb.c
index 06aa800..42153e6 100644
--- a/board/freescale/p1010rdb/p1010rdb.c
+++ b/board/freescale/p1010rdb/p1010rdb.c
@@ -52,41 +52,6 @@ struct cpld_data {
u8 por2; /* POR Options */
u8 por3; /* POR Options */
 };
-
-void cpld_show(void)
-{
-   struct cpld_data *cpld_data = (void *)(CONFIG_SYS_CPLD_BASE);
-
-   printf(CPLD: V%x.%x PCBA: V%x.0\n,
-   in_8(cpld_data-cpld_ver)  0xF0,
-   in_8(cpld_data-cpld_ver)  0x0F,
-   in_8(cpld_data-pcba_ver)  0x0F);
-
-#ifdef CONFIG_DEBUG
-   printf(twindie_ddr =%x\n,
-   in_8(cpld_data-twindie_ddr3));
-   printf(bank_sel =%x\n,
-   in_8(cpld_data-bank_sel));
-   printf(usb2_sel =%x\n,
-   in_8(cpld_data-usb2_sel));
-   printf(porsw_sel =%x\n,
-   in_8(cpld_data-porsw_sel));
-   printf(tdm_can_sel =%x\n,
-   in_8(cpld_data-tdm_can_sel));
-   printf(tdm_can_sel =%x\n,
-   in_8(cpld_data-tdm_can_sel));
-   printf(spi_cs0_sel =%x\n,
-   in_8(cpld_data-spi_cs0_sel));
-   printf(bcsr0 =%x\n,
-   in_8(cpld_data-bcsr0));
-   printf(bcsr1 =%x\n,
-   in_8(cpld_data-bcsr1));
-   printf(bcsr2 =%x\n,
-   in_8(cpld_data-bcsr2));
-   printf(bcsr3 =%x\n,
-   in_8(cpld_data-bcsr3));
-#endif
-}
 #endif
 
 int board_early_init_f(void)
-- 
1.8.0


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH 2/4] powerpc/eeprom: update MAX_NUM_PORTS to adapt non-256-bytes EEPROM

2013-09-13 Thread Shengzhou Liu
Some boards use System EEPROM with 128-bytes instead of 256-bytes.
Since we regard 256-bytes EEPROM as standard EEPROM with default
value for MAX_NUM_PORTS. For those non-256-bytes EEPROM, we can
redefine MAX_NUM_PORTS in board-specific file to override the
default MAX_NUM_PORTS.

This patch doesn't impact on previous existing boards.

Signed-off-by: Shengzhou Liu shengzhou@freescale.com
---
Verified with 128B and 256B EEPROM, CRC works.

 board/freescale/common/sys_eeprom.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/board/freescale/common/sys_eeprom.c 
b/board/freescale/common/sys_eeprom.c
index d789364..9c18dd8 100644
--- a/board/freescale/common/sys_eeprom.c
+++ b/board/freescale/common/sys_eeprom.c
@@ -18,7 +18,11 @@
 #endif
 
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
+/* some boards with non-256-bytes EEPROM have special define */
+/* for MAX_NUM_PORTS in board-specific file */
+#ifndef MAX_NUM_PORTS
 #define MAX_NUM_PORTS  23
+#endif
 #define NXID_VERSION   1
 #endif
 
-- 
1.8.0


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3 0/3] dfu: ram support

2013-09-13 Thread Afzal Mohammed
Hi,

DFU spec mentions it as a method to upgrade firmware (software stored
in writable non-volatile memory). It also says other potential uses of
DFU is beyond scope of the spec.

Here such a beyond the scope use is being attempted - directly pumping
binary images from host via USB to RAM. This facility is a developer
centric one in that it gives advantage over upgrading non-volatile
memory for testing new images every time during development and/or
testing.

Directly putting image onto RAM would speed up upgrade process. This and
convenience was the initial thoughts that led to doing this, speed
improvement over MMC was only 1 second though - 6 sec on RAM as opposed
to 7 sec on MMC in beagle bone, perhaps enabling cache and/or optimizing
DFU framework to avoid multiple copy for ram (if worth) may help, and
on other platforms and other boot media like NAND maybe improvement
would be higher.

And for a platform that doesn't yet have proper DFU suppport for
non-volatile media's, DFU to RAM can be used.

Another minor advantage would be to increase life of mmc/nand as it
would be less used during development/testing.

usage: image name ram start address size
eg. kernel ram 0x8100 0x100

Downloading images to RAM using DFU is not something new, this is
acheived in openmoko also.

DFU on RAM can be used for extracting RAM contents to host using dfu
upload. Perhaps this can be extended to io for squeezing out register

In addition to ram support, a minor unification of dfu read/write enum's
currently duplicated in mmc/nand is done, helping ram support too.

Also dfu ram support is added for am335x SoC based boards.

Based on: usb master branch

Regards
Afzal

v3: collected tags, error used instead of printf
v2: unified read/write dfu ops enum, added am335x support

Afzal Mohammed (3):
  dfu: unify mmc/nand read/write ops enum
  dfu: ram support
  am335x_evm: enable DFU RAM

 drivers/dfu/Makefile |  1 +
 drivers/dfu/dfu.c|  7 ++--
 drivers/dfu/dfu_mmc.c|  9 ++
 drivers/dfu/dfu_nand.c   |  7 +---
 drivers/dfu/dfu_ram.c| 76 
 include/configs/am335x_evm.h |  6 
 include/dfu.h| 23 ++
 7 files changed, 114 insertions(+), 15 deletions(-)
 create mode 100644 drivers/dfu/dfu_ram.c

-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3 1/3] dfu: unify mmc/nand read/write ops enum

2013-09-13 Thread Afzal Mohammed
MMC and NAND independently defines same enumerators for read/write.
Unify them by defining enum in dfu header. RAM support that is being
added newly also can make use of it.

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
Acked-by: Lukasz Majewski l.majew...@samsung.com
---

v3: collected tag
v2: new

 drivers/dfu/dfu_mmc.c  | 9 ++---
 drivers/dfu/dfu_nand.c | 7 +--
 include/dfu.h  | 5 +
 3 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
index 0871a77..f942758 100644
--- a/drivers/dfu/dfu_mmc.c
+++ b/drivers/dfu/dfu_mmc.c
@@ -13,16 +13,11 @@
 #include div64.h
 #include dfu.h
 
-enum dfu_mmc_op {
-   DFU_OP_READ = 1,
-   DFU_OP_WRITE,
-};
-
 static unsigned char __aligned(CONFIG_SYS_CACHELINE_SIZE)
dfu_file_buf[CONFIG_SYS_DFU_MAX_FILE_SIZE];
 static long dfu_file_buf_len;
 
-static int mmc_block_op(enum dfu_mmc_op op, struct dfu_entity *dfu,
+static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
u64 offset, void *buf, long *len)
 {
char cmd_buf[DFU_CMD_BUF_SIZE];
@@ -65,7 +60,7 @@ static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, 
long *len)
return 0;
 }
 
-static int mmc_file_op(enum dfu_mmc_op op, struct dfu_entity *dfu,
+static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
void *buf, long *len)
 {
char cmd_buf[DFU_CMD_BUF_SIZE];
diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c
index 0ec12cf..edbf5a9 100644
--- a/drivers/dfu/dfu_nand.c
+++ b/drivers/dfu/dfu_nand.c
@@ -19,12 +19,7 @@
 #include jffs2/load_kernel.h
 #include nand.h
 
-enum dfu_nand_op {
-   DFU_OP_READ = 1,
-   DFU_OP_WRITE,
-};
-
-static int nand_block_op(enum dfu_nand_op op, struct dfu_entity *dfu,
+static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu,
u64 offset, void *buf, long *len)
 {
loff_t start, lim;
diff --git a/include/dfu.h b/include/dfu.h
index 392cef1..6a3e253 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -29,6 +29,11 @@ enum dfu_layout {
DFU_FS_EXT4,
 };
 
+enum dfu_op {
+   DFU_OP_READ = 1,
+   DFU_OP_WRITE,
+};
+
 struct mmc_internal_data {
/* RAW programming */
unsigned int lba_start;
-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Afzal Mohammed
DFU spec mentions it as a method to upgrade firmware (software stored
in writable non-volatile memory). It also says other potential uses of
DFU is beyond scope of the spec.

Here such a beyond the scope use is being attempted - directly pumping
binary images from host via USB to RAM. This facility is a developer
centric one in that it gives advantage over upgrading non-volatile
memory for testing new images every time during development and/or
testing.

Directly putting image onto RAM would speed up upgrade process. This and
convenience was the initial thoughts that led to doing this, speed
improvement over MMC was only 1 second though - 6 sec on RAM as opposed
to 7 sec on MMC in beagle bone, perhaps enabling cache and/or optimizing
DFU framework to avoid multiple copy for ram (if worth) may help, and
on other platforms and other boot media like NAND maybe improvement
would be higher.

And for a platform that doesn't yet have proper DFU suppport for
non-volatile media's, DFU to RAM can be used.

Another minor advantage would be to increase life of mmc/nand as it
would be less used during development/testing.

usage: image name ram start address size
eg. kernel ram 0x8100 0x100

Downloading images to RAM using DFU is not something new, this is
acheived in openmoko also.

DFU on RAM can be used for extracting RAM contents to host using dfu
upload. Perhaps this can be extended to io for squeezing out register
dump through usb, if it is worth.

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
---

v3: error used instead of printf
v2: remove read/write enumerator define's, instead use new common ones

 drivers/dfu/Makefile  |  1 +
 drivers/dfu/dfu.c |  7 +++--
 drivers/dfu/dfu_ram.c | 76 +++
 include/dfu.h | 18 
 4 files changed, 100 insertions(+), 2 deletions(-)
 create mode 100644 drivers/dfu/dfu_ram.c

diff --git a/drivers/dfu/Makefile b/drivers/dfu/Makefile
index fca370a..de9e44e 100644
--- a/drivers/dfu/Makefile
+++ b/drivers/dfu/Makefile
@@ -12,6 +12,7 @@ LIB   = $(obj)libdfu.o
 COBJS-$(CONFIG_DFU_FUNCTION) += dfu.o
 COBJS-$(CONFIG_DFU_MMC) += dfu_mmc.o
 COBJS-$(CONFIG_DFU_NAND) += dfu_nand.o
+COBJS-$(CONFIG_DFU_RAM) += dfu_ram.o
 
 SRCS:= $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS-y))
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 689f5db..56b21c7 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -348,6 +348,9 @@ static int dfu_fill_entity(struct dfu_entity *dfu, char *s, 
int alt,
} else if (strcmp(interface, nand) == 0) {
if (dfu_fill_entity_nand(dfu, s))
return -1;
+   } else if (strcmp(interface, ram) == 0) {
+   if (dfu_fill_entity_ram(dfu, s))
+   return -1;
} else {
printf(%s: Device %s not (yet) supported!\n,
   __func__,  interface);
@@ -397,14 +400,14 @@ int dfu_config_entities(char *env, char *interface, int 
num)
 
 const char *dfu_get_dev_type(enum dfu_device_type t)
 {
-   const char *dev_t[] = {NULL, eMMC, OneNAND, NAND };
+   const char *dev_t[] = {NULL, eMMC, OneNAND, NAND, RAM };
return dev_t[t];
 }
 
 const char *dfu_get_layout(enum dfu_layout l)
 {
const char *dfu_layout[] = {NULL, RAW_ADDR, FAT, EXT2,
-  EXT3, EXT4 };
+  EXT3, EXT4, RAM_ADDR };
return dfu_layout[l];
 }
 
diff --git a/drivers/dfu/dfu_ram.c b/drivers/dfu/dfu_ram.c
new file mode 100644
index 000..2e3520c
--- /dev/null
+++ b/drivers/dfu/dfu_ram.c
@@ -0,0 +1,76 @@
+/*
+ * (C) Copyright 2013
+ * Afzal Mohammed afzal.mohd...@gmail.com
+ *
+ * Reference: dfu_mmc.c
+ * Copyright (C) 2012 Samsung Electronics
+ * author: Lukasz Majewski l.majew...@samsung.com
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include errno.h
+#include dfu.h
+
+static int dfu_transfer_medium_ram(enum dfu_op op, struct dfu_entity *dfu,
+  u64 offset, void *buf, long *len)
+{
+   if (dfu-layout != DFU_RAM_ADDR) {
+   error(unsupported layout: %s\n, dfu_get_layout(dfu-layout));
+   return  -EINVAL;
+   }
+
+   if (offset  dfu-data.ram.size) {
+   error(request exceeds allowed area\n);
+   return -EINVAL;
+   }
+
+   if (op == DFU_OP_WRITE)
+   memcpy(dfu-data.ram.start + offset, buf, *len);
+   else
+   memcpy(buf, dfu-data.ram.start + offset, *len);
+
+   return 0;
+}
+
+static int dfu_write_medium_ram(struct dfu_entity *dfu, u64 offset,
+   void *buf, long *len)
+{
+   return dfu_transfer_medium_ram(DFU_OP_WRITE, dfu, offset, buf, len);
+}
+
+static int 

[U-Boot] [PATCH v3 3/3] am335x_evm: enable DFU RAM

2013-09-13 Thread Afzal Mohammed
Enable DFU for RAM, provide example dfu_alt_info

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Tom Rini tr...@ti.com
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
Reviewed-by: Lukasz Majewski l.majew...@samsung.com
---

v3: collected tag
v2: new

 include/configs/am335x_evm.h | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 3de30fc..978fdf9 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -100,6 +100,7 @@
loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0 \
importbootenv=echo Importing environment from mmc ...;  \
env import -t $loadaddr $filesize\0 \
+   dfu_alt_info_ram= DFU_ALT_INFO_RAM \0 \
ramargs=setenv bootargs console=${console}  \
${optargs}  \
root=${ramroot}  \
@@ -321,6 +322,11 @@
kernel part 0 8; \
rootfs part 0 9
 #endif
+#define CONFIG_DFU_RAM
+#define DFU_ALT_INFO_RAM \
+   kernel ram 0x8020 0xD8; \
+   fdt ram 0x80F8 0x8; \
+   ramdisk ram 0x8100 0x400
 
 /*
  * Default to using SPI for environment, etc.
-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Stefano Babic
Hi Eric,

On 12/09/2013 17:02, Eric Nelson wrote:

 This isn't needed yet in the stock (main-line) code base, since
 we haven't added any panels without detection.

ok, thanks - I will then apply Fabio's patches for the Freescale's boards.

 
 We do have a form this patch and a lot of panels in our local tree
 on Github, but wanted to avoid unnecessary noise on the list
 because we've integrated a dozen or so panels and the existing
 structure really doesn't scale.
 
 We had a separate discussion regarding treating the displays
 as data (environment), but have stalled somewhat on that front.

I think also that using the environment seems a clumsy solution. We used
a lot of times in the past, and we have not unified their usage.

 
 The current device-tree code for i.MX6 uses mode strings instead
 of the detailed timing data that's really needed for a proper
 solution.
 

I admit that using DT also for u-boot seems a better solution. You're
right about i.MX6 in kernel, but on the other hand I like how it is
described for i.MX28 boards. The display-timings node contain all
information we need. It would be nice to have the same for i.MX6.

Best regards,
Stefano

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 1/2] net: fec_mxc: Add support for mx6 solo-lite

2013-09-13 Thread Stefano Babic
On 13/09/2013 05:16, Otavio Salvador wrote:
 On Thu, Sep 12, 2013 at 7:41 PM, Fabio Estevam feste...@gmail.com wrote:
 From: Fabio Estevam fabio.este...@freescale.com

 Similarly as mx25 and mx53, mx6solo-lite needs to setup the MII gasket for 
 RMII
 mode.

 Add support for mx6solo-lite.

 Signed-off-by: Fabio Estevam fabio.este...@freescale.com
 ---
 
 Seems safe enough to go into 2013.10, doesn't it? :-)
 

Agree - I will merge it and push it.

Regards,
Stefano

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v9 3/5] generic board patch of manual reloc and zero gd_t

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

Signed-off-by: David Feng feng...@phytium.com.cn
---
 common/board_f.c |   19 +++
 common/board_r.c |   18 ++
 2 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/common/board_f.c b/common/board_f.c
index 0ada1af..f6ca610 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -458,7 +458,7 @@ static int reserve_round_4k(void)
 static int reserve_mmu(void)
 {
/* reserve TLB table */
-   gd-arch.tlb_size = 4096 * 4;
+   gd-arch.tlb_size = PGTABLE_SIZE;
gd-relocaddr -= gd-arch.tlb_size;
 
/* round down to next 64 kB limit */
@@ -610,7 +610,7 @@ static int reserve_stacks(void)
 * TODO(s...@chromium.org): Perhaps create arch_reserve_stack()
 * to handle this and put in arch/xxx/lib/stack.c
 */
-# ifdef CONFIG_ARM
+# if defined(CONFIG_ARM)  !defined(CONFIG_ARMV8)
 #  ifdef CONFIG_USE_IRQ
gd-start_addr_sp -= (CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ);
debug(Reserving %zu Bytes for IRQ stack at: %08lx\n,
@@ -807,11 +807,6 @@ static int mark_bootstage(void)
 }
 
 static init_fnc_t init_sequence_f[] = {
-#if !defined(CONFIG_CPM2)  !defined(CONFIG_MPC512X)  \
-   !defined(CONFIG_MPC83xx)  !defined(CONFIG_MPC85xx)  \
-   !defined(CONFIG_MPC86xx)  !defined(CONFIG_X86)
-   zero_global_data,
-#endif
 #ifdef CONFIG_SANDBOX
setup_ram_buf,
 #endif
@@ -1001,10 +996,18 @@ void board_init_f(ulong boot_flags)
 {
 #ifndef CONFIG_X86
gd_t data;
-
gd = data;
 #endif
 
+   /*
+* Zero gd_t first, otherwise the debug print(if DEBUG defined)
+* in initcall_run_list function before zero_global_data is called
+* will go wrong.
+*/
+#ifndef CONFIG_X86
+   zero_global_data();
+#endif
+
gd-flags = boot_flags;
 
if (initcall_run_list(init_sequence_f))
diff --git a/common/board_r.c b/common/board_r.c
index 86ca1cb..7217e3c 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -157,6 +157,13 @@ static int initr_reloc_global_data(void)
 */
gd-env_addr += gd-relocaddr - CONFIG_SYS_MONITOR_BASE;
 #endif
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
+   /*
+* We have to relocate the command table manually
+*/
+   fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd),
+   ll_entry_count(cmd_tbl_t, cmd));
+#endif /* CONFIG_NEEDS_MANUAL_RELOC */
return 0;
 }
 
@@ -899,6 +906,7 @@ init_fnc_t init_sequence_r[] = {
initr_modem,
 #endif
run_main_loop,
+   NULL,
 };
 
 void board_init_r(gd_t *new_gd, ulong dest_addr)
@@ -906,6 +914,16 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
 #ifndef CONFIG_X86
gd = new_gd;
 #endif
+#ifdef CONFIG_NEEDS_MANUAL_RELOC
+   /*
+* We have to relocate the init_sequence_r table manually
+*/
+   init_fnc_t  *init_fnc_ptr;
+   for (init_fnc_ptr = init_sequence_r; *init_fnc_ptr; ++init_fnc_ptr)
+   *init_fnc_ptr = (init_fnc_t *)
+   ((unsigned long)(*init_fnc_ptr) + gd-reloc_off);
+#endif /* CONFIG_NEEDS_MANUAL_RELOC */
+
if (initcall_run_list(init_sequence_r))
hang();
 
-- 
1.7.9.5


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v9 2/5] board support of vexpress_aemv8a

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

Signed-off-by: David Feng feng...@phytium.com.cn and Sharma Bhupesh 
b45...@freescale.com
---
 MAINTAINERS  |4 +
 board/armltd/dts/vexpress64.dts  |  439 ++
 board/armltd/vexpress64/Makefile |   27 +++
 board/armltd/vexpress64/vexpress64.c |   70 ++
 boards.cfg   |1 +
 include/configs/vexpress_aemv8a.h|  193 +++
 6 files changed, 734 insertions(+)
 create mode 100644 board/armltd/dts/vexpress64.dts
 create mode 100644 board/armltd/vexpress64/Makefile
 create mode 100644 board/armltd/vexpress64/vexpress64.c
 create mode 100644 include/configs/vexpress_aemv8a.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 6e50fc4..d142307 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1095,6 +1095,10 @@ Sergey Yanovich ynv...@gmail.com
 
lp8x4x  xscale/pxa
 
+David Feng feng...@phytium.com.cn
+
+   vexpress_aemv8a ARM ARMV8 (Quad Core)
+
 -
 
 Unknown / orphaned boards:
diff --git a/board/armltd/dts/vexpress64.dts b/board/armltd/dts/vexpress64.dts
new file mode 100644
index 000..067fea7
--- /dev/null
+++ b/board/armltd/dts/vexpress64.dts
@@ -0,0 +1,439 @@
+/*
+ * ARM Ltd. Fast Models
+ *
+ * Architecture Envelope Model (AEM) ARMv8-A
+ * ARMAEMv8AMPCT
+ *
+ * RTSM_VE_AEMv8A.lisa
+ */
+
+/dts-v1/;
+
+/memreserve/ 0x8000 0x0001;
+
+/ {
+   /* boot configurations for u-boot */
+   config {
+   /*bootdelay = 1;*/
+   kernel-offset = 0x10;
+   rootdisk-offset = 0x80;
+   bootcmd = bootm 0x10 0x80:0x200;
+   };
+};
+
+/ {
+   model = RTSM_VE_AEMv8A;
+   compatible = arm,rtsm_ve,aemv8a, arm,vexpress;
+   interrupt-parent = gic;
+   #address-cells = 2;
+   #size-cells = 2;
+
+   /* chosen */
+   /* generated by u-boot */
+
+
+   aliases {
+   serial0 = v2m_serial0;
+   serial1 = v2m_serial1;
+   serial2 = v2m_serial2;
+   serial3 = v2m_serial3;
+   };
+
+   cpus {
+   #address-cells = 1;
+   #size-cells = 0;
+
+   cpu@0 {
+   device_type = cpu;
+   compatible = arm,armv8;
+   reg = 0;
+   enable-method = spin-table;
+   cpu-release-addr = 0x0 0x8000fff8;
+   };
+   cpu@1 {
+   device_type = cpu;
+   compatible = arm,armv8;
+   reg = 1;
+   enable-method = spin-table;
+   cpu-release-addr = 0x0 0x8000fff8;
+   };
+   cpu@2 {
+   device_type = cpu;
+   compatible = arm,armv8;
+   reg = 2;
+   enable-method = spin-table;
+   cpu-release-addr = 0x0 0x8000fff8;
+   };
+   cpu@3 {
+   device_type = cpu;
+   compatible = arm,armv8;
+   reg = 3;
+   enable-method = spin-table;
+   cpu-release-addr = 0x0 0x8000fff8;
+   };
+   };
+
+   memory@8000 {
+   device_type = memory;
+   reg = 0x 0x8000 0 0x8000,
+ 0x0008 0x8000 0 0x8000;
+   };
+
+   gic: interrupt-controller@2c001000 {
+   compatible = arm,cortex-a15-gic, arm,cortex-a9-gic;
+   #interrupt-cells = 3;
+   #address-cells = 0;
+   interrupt-controller;
+   reg = 0x0 0x2c001000 0 0x1000,
+ 0x0 0x2c002000 0 0x1000,
+ 0x0 0x2c004000 0 0x2000,
+ 0x0 0x2c006000 0 0x2000;
+   interrupts = 1 9 0xf04;
+   };
+
+   timer {
+   compatible = arm,armv8-timer;
+   interrupts = 1 13 0xff01,
+1 14 0xff01,
+1 11 0xff01,
+1 10 0xff01;
+   clock-frequency = 1;
+   };
+
+   pmu {
+   compatible = arm,armv8-pmuv3;
+   interrupts = 0 60 4,
+0 61 4,
+0 62 4,
+0 63 4;
+   };
+
+   smb {
+   compatible = simple-bus;
+
+   #address-cells = 2;
+   #size-cells = 1;
+   ranges = 0 0 0 0x0800 0x0400,
+1 0 0 0x1400 0x0400,
+2 0 0 0x1800 0x0400,
+3 0 0 0x1c00 0x0400,
+4 0 0 0x0c00 0x0400,
+5 0 0 

[U-Boot] [PATCH v9 4/5] 64bit initrd start address support

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

Signed-off-by: David Feng feng...@phytium.com.cn
---
 common/fdt_support.c |   66 ++
 1 file changed, 34 insertions(+), 32 deletions(-)

diff --git a/common/fdt_support.c b/common/fdt_support.c
index b034c98..9bc5821 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -21,6 +21,34 @@
  */
 DECLARE_GLOBAL_DATA_PTR;
 
+/*
+ * Get cells len in bytes
+ * if #-cells property is 2 then len is 8
+ * otherwise len is 4
+ */
+static int get_cells_len(void *blob, char *nr_cells_name)
+{
+   const fdt32_t *cell;
+
+   cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
+   if (cell  fdt32_to_cpu(*cell) == 2)
+   return 8;
+
+   return 4;
+}
+
+/*
+ * Write a 4 or 8 byte big endian cell
+ */
+static void write_cell(u8 *addr, u64 val, int size)
+{
+   int shift = (size - 1) * 8;
+   while (size--  0) {
+   *addr++ = (val  shift)  0xff;
+   shift -= 8;
+   }
+}
+
 /**
  * fdt_getprop_u32_default - Find a node and return it's property or a default
  *
@@ -131,9 +159,9 @@ static int fdt_fixup_stdout(void *fdt, int chosenoff)
 
 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 {
-   int   nodeoffset;
+   int   nodeoffset, addr_cell_len;
int   err, j, total;
-   fdt32_t  tmp;
+   fdt64_t  tmp;
const char *path;
uint64_t addr, size;
 
@@ -170,9 +198,11 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong 
initrd_end, int force)
return err;
}
 
+   addr_cell_len = get_cells_len(fdt, #address-cells);
+
path = fdt_getprop(fdt, nodeoffset, linux,initrd-start, NULL);
if ((path == NULL) || force) {
-   tmp = cpu_to_fdt32(initrd_start);
+   write_cell((u8 *)tmp, initrd_start, addr_cell_len);
err = fdt_setprop(fdt, nodeoffset,
linux,initrd-start, tmp, sizeof(tmp));
if (err  0) {
@@ -181,7 +211,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong 
initrd_end, int force)
fdt_strerror(err));
return err;
}
-   tmp = cpu_to_fdt32(initrd_end);
+   write_cell((u8 *)tmp, initrd_end, addr_cell_len);
err = fdt_setprop(fdt, nodeoffset,
linux,initrd-end, tmp, sizeof(tmp));
if (err  0) {
@@ -343,34 +373,6 @@ void do_fixup_by_compat_u32(void *fdt, const char *compat,
do_fixup_by_compat(fdt, compat, prop, tmp, 4, create);
 }
 
-/*
- * Get cells len in bytes
- * if #-cells property is 2 then len is 8
- * otherwise len is 4
- */
-static int get_cells_len(void *blob, char *nr_cells_name)
-{
-   const fdt32_t *cell;
-
-   cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
-   if (cell  fdt32_to_cpu(*cell) == 2)
-   return 8;
-
-   return 4;
-}
-
-/*
- * Write a 4 or 8 byte big endian cell
- */
-static void write_cell(u8 *addr, u64 val, int size)
-{
-   int shift = (size - 1) * 8;
-   while (size--  0) {
-   *addr++ = (val  shift)  0xff;
-   shift -= 8;
-   }
-}
-
 #ifdef CONFIG_NR_DRAM_BANKS
 #define MEMORY_BANKS_MAX CONFIG_NR_DRAM_BANKS
 #else
-- 
1.7.9.5


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v9 0/5] arm64 patch

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

The porting has been merged with arm architecture.
Most architecture codes are placed in
arch/arm/cpu/armv8 directory. Generic board is also
supported after a few bugs are fixed.
u-boot could be running at EL1 or EL2.

Changes for v8:
  - add Signed-off-by information to patch board support of
vexpress_aemv8a which SMC9 support is integrated
from Sharma Bhupesh's patch.
  - adjust pt_regs struct and add exception state
preservation in exception.S.

Changes for v7:
  - Integrate SMC9 patch of sharma bhupesh.
  - remove v8_outer_cache* which is not need currently.
  - Change license tag.
  - Mov crt0.S/relocate.S/interrupts.c to arm/lib and
rename them with _64 suffix.
  - Make el3/el2 initializing process of start.S as
two separate routines. It could be easier to be
replaced with processor specific codes.
  - Remove exception stack save and restore routine,
it is unnecessary now.
  - simplify __weak function declaration.

Changes for v6:
  - Check the patches with checkpatch.pl and get rid of
almost all warnings. There are a few warnings still,
but I think it should be that.
  - change printf format in cmd_pxe.c, use %zd indtead
of %ld to format size_t type variable.
  - add macro PGTABLE_SIZE to identify tlb table size.

Changes for v5:
  - Make modification to inappropriate licensed file
and bugs according to ScottWood's advice.
Thanks Scott for his checking to these patches.
  - Enable u-boot's running at EL1.
  - Get rid of compiling warnings originated from cmd_pxe.c.

Changes for v4:
  - fix the generic board_f.c, remove zero_global_data
from init_sequence_f array and move it to board_init_f()
function with CONFIG_X86 switch. The previous fixup is
inaccurate.
  - Replace __ARMEB__ with __AARCH64EB__ in byteorder.h
and unaligned.h, gcc for aarch64 use __AARCH64EB__ and
__AARCH64EL__ to identify endian.
  - Some modification to README.armv8

Changes for v3:
  - merge arm64 to arm architecture.

David Feng (5):
  core support of arm64
  board support of vexpress_aemv8a
  generic board patch of manual reloc and zero gd_t
  64bit initrd start address support
  remove compiling warnings

 MAINTAINERS |4 +
 arch/arm/config.mk  |4 +
 arch/arm/cpu/armv8/Makefile |   38 +++
 arch/arm/cpu/armv8/cache.S  |  130 +
 arch/arm/cpu/armv8/cache_v8.c   |  228 
 arch/arm/cpu/armv8/config.mk|   16 ++
 arch/arm/cpu/armv8/cpu.c|   67 +
 arch/arm/cpu/armv8/exceptions.S |  115 
 arch/arm/cpu/armv8/start.S  |  236 +
 arch/arm/cpu/armv8/timer.c  |   80 ++
 arch/arm/cpu/armv8/tlb.S|   30 +++
 arch/arm/cpu/armv8/u-boot.lds   |   71 +
 arch/arm/include/asm/arch-armv8/gpio.h  |   11 +
 arch/arm/include/asm/arch-armv8/mmu.h   |  106 
 arch/arm/include/asm/byteorder.h|   12 +
 arch/arm/include/asm/cache.h|5 +
 arch/arm/include/asm/config.h   |   10 +
 arch/arm/include/asm/global_data.h  |6 +-
 arch/arm/include/asm/io.h   |   15 +-
 arch/arm/include/asm/macro.h|   20 ++
 arch/arm/include/asm/posix_types.h  |   10 +
 arch/arm/include/asm/proc-armv/ptrace.h |   21 ++
 arch/arm/include/asm/proc-armv/system.h |   59 -
 arch/arm/include/asm/system.h   |   77 ++
 arch/arm/include/asm/types.h|4 +
 arch/arm/include/asm/u-boot.h   |4 +
 arch/arm/include/asm/unaligned.h|2 +-
 arch/arm/lib/Makefile   |   14 +
 arch/arm/lib/board.c|   16 +-
 arch/arm/lib/bootm.c|   16 ++
 arch/arm/lib/crt0_64.S  |  116 
 arch/arm/lib/interrupts_64.c|  120 +
 arch/arm/lib/relocate_64.S  |   57 
 board/armltd/dts/vexpress64.dts |  439 +++
 board/armltd/vexpress64/Makefile|   27 ++
 board/armltd/vexpress64/vexpress64.c|   70 +
 boards.cfg  |1 +
 common/board_f.c|   19 +-
 common/board_r.c|   18 ++
 common/cmd_pxe.c|4 +-
 common/fdt_support.c|   66 ++---
 common/image.c  |1 +
 doc/README.armv8|   18 ++
 examples/standalone/stubs.c |   15 ++
 include/configs/vexpress_aemv8a.h   |  193 ++
 include/image.h |1 +
 46 files changed, 2540 insertions(+), 52 deletions(-)
 create mode 100644 arch/arm/cpu/armv8/Makefile
 create mode 100644 arch/arm/cpu/armv8/cache.S
 create mode 100644 arch/arm/cpu/armv8/cache_v8.c
 create mode 100644 arch/arm/cpu/armv8/config.mk
 create mode 100644 arch/arm/cpu/armv8/cpu.c
 

[U-Boot] [PATCH v9 1/5] core support of arm64

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

Signed-off-by: David Feng feng...@phytium.com.cn
---
 arch/arm/config.mk  |4 +
 arch/arm/cpu/armv8/Makefile |   38 +
 arch/arm/cpu/armv8/cache.S  |  130 +
 arch/arm/cpu/armv8/cache_v8.c   |  228 +
 arch/arm/cpu/armv8/config.mk|   16 +++
 arch/arm/cpu/armv8/cpu.c|   67 +
 arch/arm/cpu/armv8/exceptions.S |  115 +++
 arch/arm/cpu/armv8/start.S  |  236 +++
 arch/arm/cpu/armv8/timer.c  |   80 +++
 arch/arm/cpu/armv8/tlb.S|   30 
 arch/arm/cpu/armv8/u-boot.lds   |   71 ++
 arch/arm/include/asm/arch-armv8/gpio.h  |   11 ++
 arch/arm/include/asm/arch-armv8/mmu.h   |  106 ++
 arch/arm/include/asm/byteorder.h|   12 ++
 arch/arm/include/asm/cache.h|5 +
 arch/arm/include/asm/config.h   |   10 ++
 arch/arm/include/asm/global_data.h  |6 +-
 arch/arm/include/asm/io.h   |   15 +-
 arch/arm/include/asm/macro.h|   20 +++
 arch/arm/include/asm/posix_types.h  |   10 ++
 arch/arm/include/asm/proc-armv/ptrace.h |   21 +++
 arch/arm/include/asm/proc-armv/system.h |   59 +++-
 arch/arm/include/asm/system.h   |   77 ++
 arch/arm/include/asm/types.h|4 +
 arch/arm/include/asm/u-boot.h   |4 +
 arch/arm/include/asm/unaligned.h|2 +-
 arch/arm/lib/Makefile   |   14 ++
 arch/arm/lib/board.c|   16 ++-
 arch/arm/lib/bootm.c|   16 +++
 arch/arm/lib/crt0_64.S  |  116 +++
 arch/arm/lib/interrupts_64.c|  120 
 arch/arm/lib/relocate_64.S  |   57 
 common/image.c  |1 +
 doc/README.armv8|   18 +++
 examples/standalone/stubs.c |   15 ++
 include/image.h |1 +
 36 files changed, 1741 insertions(+), 10 deletions(-)
 create mode 100644 arch/arm/cpu/armv8/Makefile
 create mode 100644 arch/arm/cpu/armv8/cache.S
 create mode 100644 arch/arm/cpu/armv8/cache_v8.c
 create mode 100644 arch/arm/cpu/armv8/config.mk
 create mode 100644 arch/arm/cpu/armv8/cpu.c
 create mode 100644 arch/arm/cpu/armv8/exceptions.S
 create mode 100644 arch/arm/cpu/armv8/start.S
 create mode 100644 arch/arm/cpu/armv8/timer.c
 create mode 100644 arch/arm/cpu/armv8/tlb.S
 create mode 100644 arch/arm/cpu/armv8/u-boot.lds
 create mode 100644 arch/arm/include/asm/arch-armv8/gpio.h
 create mode 100644 arch/arm/include/asm/arch-armv8/mmu.h
 create mode 100644 arch/arm/lib/crt0_64.S
 create mode 100644 arch/arm/lib/interrupts_64.c
 create mode 100644 arch/arm/lib/relocate_64.S
 create mode 100644 doc/README.armv8

diff --git a/arch/arm/config.mk b/arch/arm/config.mk
index ce3903b..f1c6a7b 100644
--- a/arch/arm/config.mk
+++ b/arch/arm/config.mk
@@ -74,7 +74,9 @@ endif
 endif
 
 # needed for relocation
+ifndef CONFIG_ARMV8
 LDFLAGS_u-boot += -pie
+endif
 
 #
 # FIXME: binutils versions  2.22 have a bug in the assembler where
@@ -95,6 +97,8 @@ endif
 endif
 
 # check that only R_ARM_RELATIVE relocations are generated
+ifndef CONFIG_ARMV8
 ifneq ($(CONFIG_SPL_BUILD),y)
 ALL-y  += checkarmreloc
 endif
+endif
diff --git a/arch/arm/cpu/armv8/Makefile b/arch/arm/cpu/armv8/Makefile
new file mode 100644
index 000..b216f27
--- /dev/null
+++ b/arch/arm/cpu/armv8/Makefile
@@ -0,0 +1,38 @@
+#
+# (C) Copyright 2000-2003
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(CPU).o
+
+START  := start.o
+
+COBJS  += cpu.o
+COBJS  += timer.o
+COBJS  += cache_v8.o
+
+SOBJS  += exceptions.o
+SOBJS  += cache.o
+SOBJS  += tlb.o
+
+SRCS   := $(START:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
+START  := $(addprefix $(obj),$(START))
+
+all:   $(obj).depend $(START) $(LIB)
+
+$(LIB):$(OBJS)
+   $(call cmd_link_o_target, $(OBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/arch/arm/cpu/armv8/cache.S b/arch/arm/cpu/armv8/cache.S
new file mode 100644
index 000..419f169
--- /dev/null
+++ b/arch/arm/cpu/armv8/cache.S
@@ -0,0 +1,130 @@
+/*
+ * (C) Copyright 2013
+ * David Feng feng...@phytium.com.cn
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include asm-offsets.h
+#include config.h
+#include version.h
+#include asm/macro.h
+#include linux/linkage.h
+
+/*
+ * void __asm_flush_dcache_level(level)
+ *
+ * clean and invalidate one level cache.
+ *
+ * x0: cache level
+ * x1~x9: clobbered
+ */

[U-Boot] [PATCH v9 5/5] remove compiling warnings

2013-09-13 Thread fenghua
From: David Feng feng...@phytium.com.cn

Signed-off-by: David Feng feng...@phytium.com.cn
---
 common/cmd_pxe.c |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
index a2fb50a..df58522 100644
--- a/common/cmd_pxe.c
+++ b/common/cmd_pxe.c
@@ -57,7 +57,7 @@ static int format_mac_pxe(char *outbuf, size_t outbuf_len)
uchar ethaddr[6];
 
if (outbuf_len  21) {
-   printf(outbuf is too small (%d  21)\n, outbuf_len);
+   printf(outbuf is too small (%zd  21)\n, outbuf_len);
 
return -EINVAL;
}
@@ -100,7 +100,7 @@ static int get_bootfile_path(const char *file_path, char 
*bootfile_path,
path_len = (last_slash - bootfile) + 1;
 
if (bootfile_path_size  path_len) {
-   printf(bootfile_path too small. (%d  %d)\n,
+   printf(bootfile_path too small. (%zd  %zd)\n,
bootfile_path_size, path_len);
 
return -1;
-- 
1.7.9.5


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4] at91: add support for CDU9G25 board

2013-09-13 Thread Jiri Prchal
This patch adds support for our companies board CDU9G25 with Atmel AT91SAM9G25, 
128MB DDR2, 256MB NAND.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
v.2
Fixed static IP and MAC addr cofiguration by random MAC and DHCP.
Added entry to MAINTAINERS.
Fixed line lenght, trailing spaces and other cosmetics.
v.3
Removed static eth_gadget addresses.
MAC address set from serial number of F-RAM.
v.4
Changed debug to printf if used random MAC addr, print that addr.
Keep MAC addr set in enviroment.

 MAINTAINERS   |3 +
 board/cdu9g25/Makefile|   34 +++
 board/cdu9g25/cdu9g25.c   |  204 ++
 board/cdu9g25/config.mk   |1 +
 boards.cfg|1 +
 include/configs/cdu9g25.h |  216 +
 6 files changed, 459 insertions(+)
 create mode 100644 board/cdu9g25/Makefile
 create mode 100644 board/cdu9g25/cdu9g25.c
 create mode 100644 board/cdu9g25/config.mk
 create mode 100644 include/configs/cdu9g25.h

diff --git a/MAINTAINERS b/MAINTAINERS
index bd0f3a0..9d0008a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -851,6 +851,9 @@ Matt Porter mpor...@ti.com

ti814x_evm  ARM ARMV7 (TI814x Soc)

+Jiri Prchal jiri.prc...@aksignal.cz
+   cdu9g25 ARM926EJS (AT91SAM9G25 SoC)
+
 Dave Purdy david.c.pu...@gmail.com

pogo_e02ARM926EJS (Kirkwood SoC)
diff --git a/board/cdu9g25/Makefile b/board/cdu9g25/Makefile
new file mode 100644
index 000..b644a83
--- /dev/null
+++ b/board/cdu9g25/Makefile
@@ -0,0 +1,34 @@
+#
+# U-boot - Makefile
+#
+# (C) Copyright 2013
+# Jiri Prchal jiri.prc...@aksignal.cz
+# AK signal www.aksignal.cz
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+COBJS-y+= cdu9g25.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):$(obj).depend $(OBJS) $(SOBJS)
+   $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/cdu9g25/cdu9g25.c b/board/cdu9g25/cdu9g25.c
new file mode 100644
index 000..c7e78e3
--- /dev/null
+++ b/board/cdu9g25/cdu9g25.c
@@ -0,0 +1,204 @@
+/*
+ * (C) Copyright 2013
+ * Jiri Prchal jiri.prc...@aksignal.cz
+ * AK signal www.aksignal.cz
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include asm/io.h
+#include asm/arch/at91sam9x5_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_spi.h
+#include asm/arch/gpio.h
+#include asm/arch/clk.h
+#include atmel_hlcdc.h
+#include atmel_mci.h
+#include spi.h
+#include net.h
+#include netdev.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* - */
+/*
+ * Miscelaneous platform dependent initialisations
+ */
+
+static void cdu9g25_nand_hw_init(void)
+{
+   struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+   struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+   struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+   unsigned long csa;
+
+   /* Enable CS3 */
+   csa = readl(matrix-ebicsa);
+   csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA;
+   writel(csa, matrix-ebicsa);
+
+   /* Configure SMC CS3 for NAND/SmartMedia */
+   writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+   AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+   smc-cs[3].setup);
+   writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) |
+  AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6),
+  smc-cs[3].pulse);
+   writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6),
+  smc-cs[3].cycle);
+   writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+   AT91_SMC_MODE_EXNW_DISABLE |
+   AT91_SMC_MODE_DBW_8 |
+   AT91_SMC_MODE_TDF_CYCLE(1),
+   smc-cs[3].mode);
+
+   writel(1  ATMEL_ID_PIOCD, pmc-pcer);
+
+   /* Configure RDY/BSY */
+   at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+   /* Enable NandFlash */
+   at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+
+   at91_set_a_periph(AT91_PIO_PORTD, 0, 1);/* NAND OE */
+   at91_set_a_periph(AT91_PIO_PORTD, 1, 1);/* NAND WE */
+   at91_set_a_periph(AT91_PIO_PORTD, 2, 1);/* NAND ALE */
+   at91_set_a_periph(AT91_PIO_PORTD, 3, 1);/* NAND CLE */
+}
+
+int spi_cs_is_valid(unsigned int bus, unsigned int cs)

[U-Boot] [PATCH] boards.cfg: show info about boards.cfg instead of MAINTAINERS

2013-09-13 Thread Roger Meier
Signed-off-by: Roger Meier ro...@bufferoverflow.ch
---
 tools/checkpatch.pl |4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/checkpatch.pl b/tools/checkpatch.pl
index 896e2bc..88c5bc7 100755
--- a/tools/checkpatch.pl
+++ b/tools/checkpatch.pl
@@ -398,7 +398,7 @@ sub top_of_kernel_tree {
my ($root) = @_;
 
my @tree_check = (
-   COPYING, CREDITS, Kbuild, MAINTAINERS, Makefile,
+   COPYING, CREDITS, Kbuild, Makefile,
README, Documentation, arch, include, drivers,
fs, init, ipc, kernel, lib, scripts,
);
@@ -3701,7 +3701,7 @@ sub process {
 $vname has style problems, please review.
 
 If any of these errors are false positives, please report
-them to the maintainer, see CHECKPATCH in MAINTAINERS.
+them to the maintainer, see boards.cfg.
 EOM
}
 
-- 
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] powerpc SPL framework: Avoiding relocate_code

2013-09-13 Thread Prabhakar Kushwaha

On 09/12/2013 11:28 PM, Scott Wood wrote:

On Mon, 2013-09-09 at 16:43 +0530, Prabhakar Kushwaha wrote:

Hi,

   SPL framework is used to support multi-stage booting.  Where first
level boot loader is created via SPL having relocate_code() function.
I am working on a Freescale's SoC which has less internal SRAM.
I don't want to use relocate_code() as to support this function, I need
to reduce SPL bin  to SRAM/2 size.

is there way to avoid relocate_code function ?

I tried with below sequence, but it is not working for me :(

  .globlrelocate_code
relocate_code:
  mrr1,r3/* Set new stack pointer*/
  mrr9,r4/* Save copy of Init Data pointer*/
  mrr10,r5/* Save copy of Destination Address*/

  GET_GOT
#ifndef CONFIG_SPL_BUILD

--
--
#endif
  .globlin_ram
in_ram:

Well, you certainly don't want to disable it for all SPLs...


it should be disabled for those SPL which relocate itself in SRAM, for 
other no



The reason is bss variables which are mapped to 0x_ onwards
because bsssection are mapped after 0xfffc in lds. They are not
available during SPL execution.  is there way to relocate bss section in
the execution range of SPL?

Are you talking about a scenario in which the SPL is loaded into SRAM
rather than (e.g.) the NAND buffer?  In that case, why is U-Boot not
linked at the actual SRAM address?  No copy should be needed in that
case, and the BSS will not be at zero.


I am linking SPL with the address of SRAM as I want resetvec at 
0xfffc but  still I am finding bss at 0x0


in  u-boot-spl.lds we have :-

#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
.bootpg ADDR(.text) - 0x1000 :
{
KEEP(*(.bootpg))
} :text = 0x
#else
.resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
KEEP(*(.resetvec))
} = 0x
#endif

/*
 * Make sure that the bss segment isn't linked at 0x0, otherwise its
 * address won't be updated during relocation fixups.
 */
. |= 0x10;

. = ALIGN(4);
__bss_start = .;
.bss : {
*(.sbss*)
*(.bss*)
}
. = ALIGN(4);
__bss_end = .;

from above lds, we put resetvec at 0xfffc And place BSS just after 
it. Hence at 0x0.
Ideally __bss_start should not be put after 0xfffc as it is making 
relocation a requirement.


Regards,
Prabhakar




___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Lukasz Majewski
Hi Afzal,

 DFU spec mentions it as a method to upgrade firmware (software stored
 in writable non-volatile memory). It also says other potential uses of
 DFU is beyond scope of the spec.
 
 Here such a beyond the scope use is being attempted - directly pumping
 binary images from host via USB to RAM. This facility is a developer
 centric one in that it gives advantage over upgrading non-volatile
 memory for testing new images every time during development and/or
 testing.
 
 Directly putting image onto RAM would speed up upgrade process. This
 and convenience was the initial thoughts that led to doing this, speed
 improvement over MMC was only 1 second though - 6 sec on RAM as
 opposed to 7 sec on MMC in beagle bone, perhaps enabling cache and/or
 optimizing DFU framework to avoid multiple copy for ram (if worth)
 may help, and on other platforms and other boot media like NAND maybe
 improvement would be higher.
 
 And for a platform that doesn't yet have proper DFU suppport for
 non-volatile media's, DFU to RAM can be used.
 
 Another minor advantage would be to increase life of mmc/nand as it
 would be less used during development/testing.
 
 usage: image name ram start address size
 eg. kernel ram 0x8100 0x100
 
 Downloading images to RAM using DFU is not something new, this is
 acheived in openmoko also.
 
 DFU on RAM can be used for extracting RAM contents to host using dfu
 upload. Perhaps this can be extended to io for squeezing out register
 dump through usb, if it is worth.
 
 Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
 Cc: Marek Vasut ma...@denx.de
 Cc: Lukasz Majewski l.majew...@samsung.com
 Cc: Pantelis Antoniou pa...@antoniou-consulting.com
 ---
 
 v3: error used instead of printf
 v2: remove read/write enumerator define's, instead use new common ones

Acked-by: Lukasz Majewski l.majew...@samsung.com

-- 
Best regards,

Lukasz Majewski

Samsung RD Institute Poland (SRPOL) | Linux Platform Group
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH RFC] usb: Prevent using reserved registers on DM36x usb

2013-09-13 Thread Andrew Murray
The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this
bit is reserved on the DM36x. Thus this patch ensures that the
reserved bit is not accesssed.

It has been observed that some USB devices will fail to enumerate
with errors such as 'error in inquiry' without this patch.

See http://www.ti.com/litv/pdf/sprufh9a for details.

Cc: Marek Vasut ma...@denx.de
Cc: Tom Rini tr...@ti.com
Signed-off-by: Andrew Murray amur...@embedded-bits.co.uk
---
 drivers/usb/musb/musb_core.h |4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
index ec8a038..c9a9d66 100644
--- a/drivers/usb/musb/musb_core.h
+++ b/drivers/usb/musb/musb_core.h
@@ -216,7 +216,11 @@ struct musb_regs {
 #define MUSB_CSR0_P_SENTSTALL  0x0004
 
 /* CSR0 in Host mode */
+#if defined(CONFIG_SOC_DM365)
+#define MUSB_CSR0_H_DIS_PING   0x
+#else
 #define MUSB_CSR0_H_DIS_PING   0x0800
+#endif
 #define MUSB_CSR0_H_WR_DATATOGGLE  0x0400  /* Set to allow setting: */
 #define MUSB_CSR0_H_DATATOGGLE 0x0200  /* Data toggle control */
 #define MUSB_CSR0_H_NAKTIMEOUT 0x0080
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v4] at91: add support for CDU9G25 board

2013-09-13 Thread Bo Shen

Hi Jiri Prchal,
  Quickly go through the code, please take the following comments as a 
reference.


  Add Andreas in loop.

On 9/13/2013 17:00, Jiri Prchal wrote:

This patch adds support for our companies board CDU9G25 with Atmel AT91SAM9G25, 
128MB DDR2, 256MB NAND.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
v.2
Fixed static IP and MAC addr cofiguration by random MAC and DHCP.
Added entry to MAINTAINERS.
Fixed line lenght, trailing spaces and other cosmetics.
v.3
Removed static eth_gadget addresses.
MAC address set from serial number of F-RAM.
v.4
Changed debug to printf if used random MAC addr, print that addr.
Keep MAC addr set in enviroment.

  MAINTAINERS   |3 +
  board/cdu9g25/Makefile|   34 +++
  board/cdu9g25/cdu9g25.c   |  204 ++
  board/cdu9g25/config.mk   |1 +
  boards.cfg|1 +
  include/configs/cdu9g25.h |  216 +
  6 files changed, 459 insertions(+)
  create mode 100644 board/cdu9g25/Makefile
  create mode 100644 board/cdu9g25/cdu9g25.c
  create mode 100644 board/cdu9g25/config.mk
  create mode 100644 include/configs/cdu9g25.h

diff --git a/MAINTAINERS b/MAINTAINERS
index bd0f3a0..9d0008a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -851,6 +851,9 @@ Matt Porter mpor...@ti.com

ti814x_evm  ARM ARMV7 (TI814x Soc)

+Jiri Prchal jiri.prc...@aksignal.cz
+   cdu9g25 ARM926EJS (AT91SAM9G25 SoC)
+
  Dave Purdy david.c.pu...@gmail.com

pogo_e02ARM926EJS (Kirkwood SoC)


Consider to rebase to u-boot master branch, as the MAINTAINERS file is 
merged into boards.cfg file



diff --git a/board/cdu9g25/Makefile b/board/cdu9g25/Makefile
new file mode 100644
index 000..b644a83
--- /dev/null
+++ b/board/cdu9g25/Makefile
@@ -0,0 +1,34 @@
+#
+# U-boot - Makefile
+#
+# (C) Copyright 2013
+# Jiri Prchal jiri.prc...@aksignal.cz
+# AK signal www.aksignal.cz
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+COBJS-y+= cdu9g25.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):$(obj).depend $(OBJS) $(SOBJS)
+   $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/cdu9g25/cdu9g25.c b/board/cdu9g25/cdu9g25.c
new file mode 100644
index 000..c7e78e3
--- /dev/null
+++ b/board/cdu9g25/cdu9g25.c
@@ -0,0 +1,204 @@
+/*
+ * (C) Copyright 2013
+ * Jiri Prchal jiri.prc...@aksignal.cz
+ * AK signal www.aksignal.cz
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include asm/io.h
+#include asm/arch/at91sam9x5_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_spi.h
+#include asm/arch/gpio.h
+#include asm/arch/clk.h
+#include atmel_hlcdc.h
+#include atmel_mci.h
+#include spi.h
+#include net.h
+#include netdev.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* - */
+/*
+ * Miscelaneous platform dependent initialisations
+ */


I think this is no meaning to put this comment here.


+static void cdu9g25_nand_hw_init(void)
+{
+   struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+   struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+   struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+   unsigned long csa;
+
+   /* Enable CS3 */
+   csa = readl(matrix-ebicsa);
+   csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA;
+   writel(csa, matrix-ebicsa);
+
+   /* Configure SMC CS3 for NAND/SmartMedia */
+   writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+   AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+   smc-cs[3].setup);
+   writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) |
+  AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6),
+  smc-cs[3].pulse);
+   writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6),
+  smc-cs[3].cycle);
+   writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+   AT91_SMC_MODE_EXNW_DISABLE |
+   AT91_SMC_MODE_DBW_8 |
+   AT91_SMC_MODE_TDF_CYCLE(1),
+   smc-cs[3].mode);
+
+   writel(1  ATMEL_ID_PIOCD, pmc-pcer);
+
+   /* Configure RDY/BSY */
+   at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+   /* Enable NandFlash */
+   at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+
+

Re: [U-Boot] [PATCH v9 2/5] board support of vexpress_aemv8a

2013-09-13 Thread Sharma Bhupesh-B45370
Hi David,

 -Original Message-
 From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de]
 On Behalf Of feng...@phytium.com.cn
 Sent: Friday, September 13, 2013 2:09 PM
 To: u-boot@lists.denx.de
 Cc: tr...@ti.com; David Feng; Wood Scott-B07421
 Subject: [U-Boot] [PATCH v9 2/5] board support of vexpress_aemv8a
 
 From: David Feng feng...@phytium.com.cn
 
 Signed-off-by: David Feng feng...@phytium.com.cn and Sharma Bhupesh
 b45...@freescale.com
 ---

I would prefer that you add the S-o-b's in the following way (suggested in 
submitting patch guidelines)
and also correct my S-o-b:

Signed-off-by: David Feng feng...@phytium.com.cn
Signed-off-by: Bhupesh Sharma bhupesh.sha...@freescale.com

[snip..]

Regards,
Bhupesh


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Robert Hodaszi


On 2013-09-12 21:37, Fabio Estevam wrote:

On Thu, Sep 12, 2013 at 3:53 PM, Wolfgang Denk w...@denx.de wrote:

Dear Fabio Estevam,

In message caomzo5by6kdocown_srwhpe7ssmjarez2bcfxggff-_wrdg...@mail.gmail.com 
you wrote:

It makes perfect sense to allocate variable with function scope only
on the stack.  That's what the stack has been invented for.

This buffer in the fec driver will be used in DMA transfer, so maybe
that's the reason we should use malloc instead of using the stack?

What has DMA to do with that?  We're talking about alignment only.

I mentioned DMA because we align the buffer with __aligned(ARCH_DMA_MINALIGN).

Will try to see if I can reproduce the problem here, but the last time
I tried I was not able to.

Maybe the gcc version that Robert and Hector pointed out may explain
the different behaviour.

Regards,

Fabio Estevam


Ok. Then what about if I would use the stack, but align the buffer manually.

From: Robert Hodaszi robert.hoda...@digi.com
Date: Fri, 13 Sep 2013 13:07:52 +0200
Subject: [PATCH] net: fec: fix invalid temporary RX buffer alignment because
 of GCC bug

Older GCC versions don't handle well alignment on stack variables.
The temporary RX buffer is a local variable, so it is on the stack.
Because the FEC driver is using DMA for transmission, receive and
transmit buffers should be align on 64 byte. The transmit buffers are
not allocated in the driver internally, it sends the packets directly
as it gets them. So these packets should be aligned.
When the ARP layer wants to reply to an ARP request, it uses the FEC
driver's temporary RX buffer (used to pass data to the ARP layer) to
store the new packet, and pass it back to the FEC driver's send function.
Because of a GCC bug, this buffer is not aligned well, and when the
driver tries to send it, it first rounds the address down to the
alignment boundary. That causes invalid data.

To fix it, allocate more space on the stack, and align the buffer manually.

Signed-off-by: Robert Hodaszi robert.hoda...@digi.com
---
 drivers/net/fec_mxc.c |4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index f4f72b7..09d816d 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -828,7 +828,9 @@ static int fec_recv(struct eth_device *dev)
uint16_t bd_status;
uint32_t addr, size, end;
int i;
-   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
+   /* Align the receive buffer */
+   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
+   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN - 1))  
~(ARCH_DMA_MINALIGN - 1);

/*
 * Check if any critical events have happened



Best regards,
Robert Hodaszi

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Robert Hodaszi


On 2013-09-13 13:11, Robert Hodaszi wrote:


On 2013-09-12 21:37, Fabio Estevam wrote:

On Thu, Sep 12, 2013 at 3:53 PM, Wolfgang Denk w...@denx.de wrote:

Dear Fabio Estevam,

In message 
caomzo5by6kdocown_srwhpe7ssmjarez2bcfxggff-_wrdg...@mail.gmail.com 
you wrote:

It makes perfect sense to allocate variable with function scope only
on the stack.  That's what the stack has been invented for.

This buffer in the fec driver will be used in DMA transfer, so maybe
that's the reason we should use malloc instead of using the stack?

What has DMA to do with that?  We're talking about alignment only.
I mentioned DMA because we align the buffer with 
__aligned(ARCH_DMA_MINALIGN).


Will try to see if I can reproduce the problem here, but the last time
I tried I was not able to.

Maybe the gcc version that Robert and Hector pointed out may explain
the different behaviour.

Regards,

Fabio Estevam


Ok. Then what about if I would use the stack, but align the buffer 
manually.


From: Robert Hodaszi robert.hoda...@digi.com
Date: Fri, 13 Sep 2013 13:07:52 +0200
Subject: [PATCH] net: fec: fix invalid temporary RX buffer alignment 
because

 of GCC bug

Older GCC versions don't handle well alignment on stack variables.
The temporary RX buffer is a local variable, so it is on the stack.
Because the FEC driver is using DMA for transmission, receive and
transmit buffers should be align on 64 byte. The transmit buffers are
not allocated in the driver internally, it sends the packets directly
as it gets them. So these packets should be aligned.
When the ARP layer wants to reply to an ARP request, it uses the FEC
driver's temporary RX buffer (used to pass data to the ARP layer) to
store the new packet, and pass it back to the FEC driver's send function.
Because of a GCC bug, this buffer is not aligned well, and when the
driver tries to send it, it first rounds the address down to the
alignment boundary. That causes invalid data.

To fix it, allocate more space on the stack, and align the buffer 
manually.


Signed-off-by: Robert Hodaszi robert.hoda...@digi.com
---
 drivers/net/fec_mxc.c |4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index f4f72b7..09d816d 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -828,7 +828,9 @@ static int fec_recv(struct eth_device *dev)
uint16_t bd_status;
uint32_t addr, size, end;
int i;
-   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
+   /* Align the receive buffer */
+   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
+   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN - 
1))  ~(ARCH_DMA_MINALIGN - 1);


/*
 * Check if any critical events have happened



Best regards,
Robert Hodaszi



I think, I sent it again in HTML format... Sorry...


Best regards,
Robert Hodaszi

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] cosmetic: doc: uImage.FIT: fix typos

2013-09-13 Thread Masahiro Yamada
Signed-off-by: Masahiro Yamada yamad...@jp.panasonic.com
---
 doc/uImage.FIT/command_syntax_extensions.txt | 2 +-
 doc/uImage.FIT/source_file_format.txt| 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/doc/uImage.FIT/command_syntax_extensions.txt 
b/doc/uImage.FIT/command_syntax_extensions.txt
index 002818c..6c99b1c 100644
--- a/doc/uImage.FIT/command_syntax_extensions.txt
+++ b/doc/uImage.FIT/command_syntax_extensions.txt
@@ -170,7 +170,7 @@ bootm 20
 
 In case of the new uImage argument syntax, the address portion of any argument
 can be omitted. If addr3 is omitted, then it is assumed that image at
-addr2 should be used. Similarly, when addr2 is omitted, is is assumed that
+addr2 should be used. Similarly, when addr2 is omitted, it is assumed that
 image at addr1 should be used. If addr1 is omitted, it is assumed that the
 current image address is to be used. For example, consider the following
 commands:
diff --git a/doc/uImage.FIT/source_file_format.txt 
b/doc/uImage.FIT/source_file_format.txt
index 6d20707..160b2d0 100644
--- a/doc/uImage.FIT/source_file_format.txt
+++ b/doc/uImage.FIT/source_file_format.txt
@@ -62,7 +62,7 @@ c) Image building procedure
 The following picture shows how the new uImage is prepared. Input consists of
 image source file (.its) and a set of data files. Image is created with the
 help of standard U-boot mkimage tool which in turn uses dtc (device tree
-compiler) to produce image tree blob (.itb).  Resulting .itb file is is the
+compiler) to produce image tree blob (.itb).  Resulting .itb file is the
 actual binary of a new uImage.
 
 
-- 
1.8.1.2

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] mmc:sdhci: Fix card ready status timeout.

2013-09-13 Thread Przemyslaw Marczak

Dear Pantelis,

On 09/09/2013 02:58 PM, Przemyslaw Marczak wrote:

According to JEDEC eMMC specification, after data transfer
(multiple or single block) host must wait for card ready
status. This is done by waiting for command and data lines
to be at idle state after transfer. JEDEC does not specify
maximum timeout.

Before this change max timeout was 10 ms but in case of UMS
- when system does multiple read/write operations on random
card blocks - timeout causes I/O errors.
The timeout has been increased to 200ms after data transfer.
For other transfers it stays unchanged. Default values are
now defined with if defined directive so it can be redefined
at board config if needed.

Tested on Goni and Trats.

Signed-off-by: Przemyslaw Marczak p.marc...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com


Please do not apply this patch yet due to still not enough results on 
some targets.
Timeout value should depends on internal cards operations execution time 
but this time is unpredictably and that is why JEDEC not specifies it. 
Maybe u-boot sdhci driver needs some more changes to be more flexible 
for such operations. In example sdhci background operations timeout at 
kernel is specified to 4 minutes.

I need to make more research.

Regards,

--
Przemyslaw Marczak
Samsung RD Institute Poland
Samsung Electronics
p.marc...@samsung.com
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v5] at91: add support for CDU9G25 board

2013-09-13 Thread Jiri Prchal
This patch adds support for our companies board CDU9G25 with Atmel AT91SAM9G25, 
128MB DDR2, 256MB NAND.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
v.2
Fixed static IP and MAC addr cofiguration by random MAC and DHCP.
Added entry to MAINTAINERS.
Fixed line lenght, trailing spaces and other cosmetics.
v.3
Removed static eth_gadget addresses.
MAC address set from serial number of F-RAM.
v.4
Changed debug to printf if used random MAC addr, print that addr.
Keep MAC addr set in enviroment.
v.5
Changes to Bo Shen comments.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
 arch/arm/include/asm/mach-types.h |1 +
 board/AKsignal/cdu9g25/Makefile   |   34 ++
 board/AKsignal/cdu9g25/cdu9g25.c  |  202 +++
 boards.cfg|1 +
 include/configs/cdu9g25.h |  210 +
 5 files changed, 448 insertions(+)
 create mode 100644 board/AKsignal/cdu9g25/Makefile
 create mode 100644 board/AKsignal/cdu9g25/cdu9g25.c
 create mode 100644 include/configs/cdu9g25.h

diff --git a/arch/arm/include/asm/mach-types.h 
b/arch/arm/include/asm/mach-types.h
index 440b041..9b274ba 100644
--- a/arch/arm/include/asm/mach-types.h
+++ b/arch/arm/include/asm/mach-types.h
@@ -986,6 +986,7 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_VIT_IBOX 3371
 #define MACH_TYPE_DM6441_ESP   3372
 #define MACH_TYPE_AT91SAM9X5EK 3373
+#define MACH_TYPE_CDU9G25  3373
 #define MACH_TYPE_LIBRA3374
 #define MACH_TYPE_EASYCRRH 3375
 #define MACH_TYPE_TRIPEL   3376
diff --git a/board/AKsignal/cdu9g25/Makefile b/board/AKsignal/cdu9g25/Makefile
new file mode 100644
index 000..b644a83
--- /dev/null
+++ b/board/AKsignal/cdu9g25/Makefile
@@ -0,0 +1,34 @@
+#
+# U-boot - Makefile
+#
+# (C) Copyright 2013
+# Jiri Prchal jiri.prc...@aksignal.cz
+# AK signal www.aksignal.cz
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+COBJS-y+= cdu9g25.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):$(obj).depend $(OBJS) $(SOBJS)
+   $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/AKsignal/cdu9g25/cdu9g25.c b/board/AKsignal/cdu9g25/cdu9g25.c
new file mode 100644
index 000..7321a02
--- /dev/null
+++ b/board/AKsignal/cdu9g25/cdu9g25.c
@@ -0,0 +1,202 @@
+/*
+ * (C) Copyright 2013
+ * Jiri Prchal jiri.prc...@aksignal.cz
+ * AK signal www.aksignal.cz
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include asm/io.h
+#include asm/arch/at91sam9x5_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_spi.h
+#include asm/arch/gpio.h
+#include asm/arch/clk.h
+#include atmel_hlcdc.h
+#include atmel_mci.h
+#include spi.h
+#include net.h
+#include netdev.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void cdu9g25_nand_hw_init(void)
+{
+   struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+   struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+   struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+   unsigned long csa;
+
+   /* Enable CS3 */
+   csa = readl(matrix-ebicsa);
+   csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA;
+   writel(csa, matrix-ebicsa);
+
+   /* Configure SMC CS3 for NAND/SmartMedia */
+   writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+   AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+   smc-cs[3].setup);
+   writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) |
+  AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6),
+  smc-cs[3].pulse);
+   writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6),
+  smc-cs[3].cycle);
+   writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+   AT91_SMC_MODE_EXNW_DISABLE |
+   AT91_SMC_MODE_DBW_8 |
+   AT91_SMC_MODE_TDF_CYCLE(1),
+   smc-cs[3].mode);
+
+   writel(1  ATMEL_ID_PIOCD, pmc-pcer);
+
+   /* Configure RDY/BSY */
+   at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
+
+   /* Enable NandFlash */
+   at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
+
+   at91_set_a_periph(AT91_PIO_PORTD, 0, 1);/* NAND OE */
+   at91_set_a_periph(AT91_PIO_PORTD, 1, 1);/* NAND WE */
+   at91_set_a_periph(AT91_PIO_PORTD, 2, 1);/* 

Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Fabio Estevam
Hi Stefano,

On Fri, Sep 13, 2013 at 5:16 AM, Stefano Babic sba...@denx.de wrote:
 Hi Eric,

 On 12/09/2013 17:02, Eric Nelson wrote:

 This isn't needed yet in the stock (main-line) code base, since
 we haven't added any panels without detection.

 ok, thanks - I will then apply Fabio's patches for the Freescale's boards.

Cool, thanks.

 I admit that using DT also for u-boot seems a better solution. You're
 right about i.MX6 in kernel, but on the other hand I like how it is
 described for i.MX28 boards. The display-timings node contain all
 information we need. It would be nice to have the same for i.MX6.

We currently have the same in DT for mx6 as well. Check this commit,
for example:
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/imx6q-sabrelite.dts?id=722cfacd2e719b6447fb4bd5cd3372725876336d

Regards,

Fabio Estevam
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Marek Vasut
Dear Robert Hodaszi,

 On 2013-09-13 13:11, Robert Hodaszi wrote:
  On 2013-09-12 21:37, Fabio Estevam wrote:
  On Thu, Sep 12, 2013 at 3:53 PM, Wolfgang Denk w...@denx.de wrote:
  Dear Fabio Estevam,
  
  In message
  caomzo5by6kdocown_srwhpe7ssmjarez2bcfxggff-_wrdg...@mail.gmail.com
  
  you wrote:
  It makes perfect sense to allocate variable with function scope only
  on the stack.  That's what the stack has been invented for.
  
  This buffer in the fec driver will be used in DMA transfer, so maybe
  that's the reason we should use malloc instead of using the stack?
  
  What has DMA to do with that?  We're talking about alignment only.
  
  I mentioned DMA because we align the buffer with
  __aligned(ARCH_DMA_MINALIGN).
  
  Will try to see if I can reproduce the problem here, but the last time
  I tried I was not able to.
  
  Maybe the gcc version that Robert and Hector pointed out may explain
  the different behaviour.
  
  Regards,
  
  Fabio Estevam
  
  Ok. Then what about if I would use the stack, but align the buffer
  manually.
  
  From: Robert Hodaszi robert.hoda...@digi.com
  Date: Fri, 13 Sep 2013 13:07:52 +0200
  Subject: [PATCH] net: fec: fix invalid temporary RX buffer alignment
  because
  
   of GCC bug
  
  Older GCC versions don't handle well alignment on stack variables.
  The temporary RX buffer is a local variable, so it is on the stack.
  Because the FEC driver is using DMA for transmission, receive and
  transmit buffers should be align on 64 byte. The transmit buffers are
  not allocated in the driver internally, it sends the packets directly
  as it gets them. So these packets should be aligned.
  When the ARP layer wants to reply to an ARP request, it uses the FEC
  driver's temporary RX buffer (used to pass data to the ARP layer) to
  store the new packet, and pass it back to the FEC driver's send function.
  Because of a GCC bug, this buffer is not aligned well, and when the
  driver tries to send it, it first rounds the address down to the
  alignment boundary. That causes invalid data.
  
  To fix it, allocate more space on the stack, and align the buffer
  manually.
  
  Signed-off-by: Robert Hodaszi robert.hoda...@digi.com
  ---
  
   drivers/net/fec_mxc.c |4 +++-
   1 file changed, 3 insertions(+), 1 deletion(-)
  
  diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
  index f4f72b7..09d816d 100644
  --- a/drivers/net/fec_mxc.c
  +++ b/drivers/net/fec_mxc.c
  @@ -828,7 +828,9 @@ static int fec_recv(struct eth_device *dev)
  
  uint16_t bd_status;
  uint32_t addr, size, end;
  int i;
  
  -   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
  +   /* Align the receive buffer */
  +   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
  +   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN -
  1))  ~(ARCH_DMA_MINALIGN - 1);
  
  /*
  
   * Check if any critical events have happened
  
  Best regards,
  Robert Hodaszi
 
 I think, I sent it again in HTML format... Sorry...

OK, but as Wolfgang already pointed out, can you tell use what compiler exposes 
this behavior and show us the details WD requested please ?

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Marek Vasut
Dear Afzal Mohammed,

[...]

 +int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
 +{
 + char *st;
 +
 + dfu-dev_type = DFU_DEV_RAM;
 + st = strsep(s,  );
 + if (strcmp(st, ram)) {
 + error(unsupported device: %s\n, st);
 + return -ENODEV;
 + }
 +
 + dfu-layout = DFU_RAM_ADDR;
 + dfu-data.ram.start = (void *)simple_strtoul(s, s, 16);
 + dfu-data.ram.size = simple_strtoul(++s, s, 16);

This ++s, s is quite crazy ;-)

Otheriwse

Acked-by: Marek Vasut ma...@denx.de

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 0/3] dfu: ram support

2013-09-13 Thread Marek Vasut
Dear Afzal Mohammed,

 Hi,
 
 DFU spec mentions it as a method to upgrade firmware (software stored
 in writable non-volatile memory). It also says other potential uses of
 DFU is beyond scope of the spec.
 
 Here such a beyond the scope use is being attempted - directly pumping
 binary images from host via USB to RAM. This facility is a developer
 centric one in that it gives advantage over upgrading non-volatile
 memory for testing new images every time during development and/or
 testing.
 
 Directly putting image onto RAM would speed up upgrade process. This and
 convenience was the initial thoughts that led to doing this, speed
 improvement over MMC was only 1 second though - 6 sec on RAM as opposed
 to 7 sec on MMC in beagle bone, perhaps enabling cache and/or optimizing
 DFU framework to avoid multiple copy for ram (if worth) may help, and
 on other platforms and other boot media like NAND maybe improvement
 would be higher.
 
 And for a platform that doesn't yet have proper DFU suppport for
 non-volatile media's, DFU to RAM can be used.
 
 Another minor advantage would be to increase life of mmc/nand as it
 would be less used during development/testing.
 
 usage: image name ram start address size
 eg. kernel ram 0x8100 0x100
 
 Downloading images to RAM using DFU is not something new, this is
 acheived in openmoko also.
 
 DFU on RAM can be used for extracting RAM contents to host using dfu
 upload. Perhaps this can be extended to io for squeezing out register
 
 In addition to ram support, a minor unification of dfu read/write enum's
 currently duplicated in mmc/nand is done, helping ram support too.
 
 Also dfu ram support is added for am335x SoC based boards.
 
 Based on: usb master branch
 

CCing Heiko, can you please ACK/NAK ?

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH RFC] usb: Prevent using reserved registers on DM36x usb

2013-09-13 Thread Marek Vasut
Dear Andrew Murray,

 The musb driver defines and uses MUSB_CSR0_H_DIS_PING, however this
 bit is reserved on the DM36x. Thus this patch ensures that the
 reserved bit is not accesssed.
 
 It has been observed that some USB devices will fail to enumerate
 with errors such as 'error in inquiry' without this patch.
 
 See http://www.ti.com/litv/pdf/sprufh9a for details.
 
 Cc: Marek Vasut ma...@denx.de
 Cc: Tom Rini tr...@ti.com
 Signed-off-by: Andrew Murray amur...@embedded-bits.co.uk
 ---
  drivers/usb/musb/musb_core.h |4 
  1 file changed, 4 insertions(+)
 
 diff --git a/drivers/usb/musb/musb_core.h b/drivers/usb/musb/musb_core.h
 index ec8a038..c9a9d66 100644
 --- a/drivers/usb/musb/musb_core.h
 +++ b/drivers/usb/musb/musb_core.h
 @@ -216,7 +216,11 @@ struct musb_regs {
  #define MUSB_CSR0_P_SENTSTALL0x0004
 
  /* CSR0 in Host mode */
 +#if defined(CONFIG_SOC_DM365)
 +#define MUSB_CSR0_H_DIS_PING 0x
 +#else
  #define MUSB_CSR0_H_DIS_PING 0x0800
 +#endif
  #define MUSB_CSR0_H_WR_DATATOGGLE0x0400  /* Set to allow setting: */
  #define MUSB_CSR0_H_DATATOGGLE   0x0200  /* Data toggle control 
*/
  #define MUSB_CSR0_H_NAKTIMEOUT   0x0080

It would be much nicer if you avoided using this bit in musb_hcd.c instead of 
hacking it like this.

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 1/3] dfu: unify mmc/nand read/write ops enum

2013-09-13 Thread Marek Vasut
Dear Afzal Mohammed,

 MMC and NAND independently defines same enumerators for read/write.
 Unify them by defining enum in dfu header. RAM support that is being
 added newly also can make use of it.
 
 Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
 Cc: Marek Vasut ma...@denx.de
 Cc: Lukasz Majewski l.majew...@samsung.com
 Cc: Pantelis Antoniou pa...@antoniou-consulting.com
 Acked-by: Lukasz Majewski l.majew...@samsung.com
 ---

Acked-by: Marek Vasut ma...@denx.de

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v5] at91: add support for CDU9G25 board

2013-09-13 Thread Andreas Bießmann
Dear Jiri Prchal,

On 09/13/2013 03:00 PM, Jiri Prchal wrote:
 This patch adds support for our companies board CDU9G25 with Atmel 
 AT91SAM9G25, 128MB DDR2, 256MB NAND.
 
 Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
 ---
 v.2
 Fixed static IP and MAC addr cofiguration by random MAC and DHCP.
 Added entry to MAINTAINERS.
 Fixed line lenght, trailing spaces and other cosmetics.
 v.3
 Removed static eth_gadget addresses.
 MAC address set from serial number of F-RAM.
 v.4
 Changed debug to printf if used random MAC addr, print that addr.
 Keep MAC addr set in enviroment.
 v.5
 Changes to Bo Shen comments.
 
 Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
 ---
  arch/arm/include/asm/mach-types.h |1 +
  board/AKsignal/cdu9g25/Makefile   |   34 ++
  board/AKsignal/cdu9g25/cdu9g25.c  |  202 +++
  boards.cfg|1 +
  include/configs/cdu9g25.h |  210 
 +
  5 files changed, 448 insertions(+)
  create mode 100644 board/AKsignal/cdu9g25/Makefile
  create mode 100644 board/AKsignal/cdu9g25/cdu9g25.c
  create mode 100644 include/configs/cdu9g25.h
 
 diff --git a/arch/arm/include/asm/mach-types.h 
 b/arch/arm/include/asm/mach-types.h
 index 440b041..9b274ba 100644
 --- a/arch/arm/include/asm/mach-types.h
 +++ b/arch/arm/include/asm/mach-types.h
 @@ -986,6 +986,7 @@ extern unsigned int __machine_arch_type;
  #define MACH_TYPE_VIT_IBOX 3371
  #define MACH_TYPE_DM6441_ESP   3372
  #define MACH_TYPE_AT91SAM9X5EK 3373
 +#define MACH_TYPE_CDU9G25  3373

NAK, please obtain a mach type:
http://www.arm.linux.org.uk/developer/machines/?action=new

  #define MACH_TYPE_LIBRA3374
  #define MACH_TYPE_EASYCRRH 3375
  #define MACH_TYPE_TRIPEL   3376
 diff --git a/board/AKsignal/cdu9g25/Makefile b/board/AKsignal/cdu9g25/Makefile
 new file mode 100644
 index 000..b644a83
 --- /dev/null
 +++ b/board/AKsignal/cdu9g25/Makefile
 @@ -0,0 +1,34 @@
 +#
 +# U-boot - Makefile
 +#
 +# (C) Copyright 2013
 +# Jiri Prchal jiri.prc...@aksignal.cz
 +# AK signal www.aksignal.cz
 +#
 +# (C) Copyright 2000-2006
 +# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
 +#
 +# SPDX-License-Identifier:   GPL-2.0+
 +#
 +
 +include $(TOPDIR)/config.mk
 +
 +LIB  = $(obj)lib$(BOARD).o
 +
 +COBJS-y  += cdu9g25.o
 +
 +SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
 +OBJS := $(addprefix $(obj),$(COBJS-y))
 +SOBJS:= $(addprefix $(obj),$(SOBJS))
 +
 +$(LIB):  $(obj).depend $(OBJS) $(SOBJS)
 + $(call cmd_link_o_target, $(OBJS) $(SOBJS))
 +
 +#
 +
 +# defines $(obj).depend target
 +include $(SRCTREE)/rules.mk
 +
 +sinclude $(obj).depend
 +
 +#
 diff --git a/board/AKsignal/cdu9g25/cdu9g25.c 
 b/board/AKsignal/cdu9g25/cdu9g25.c
 new file mode 100644
 index 000..7321a02
 --- /dev/null
 +++ b/board/AKsignal/cdu9g25/cdu9g25.c
 @@ -0,0 +1,202 @@
 +/*
 + * (C) Copyright 2013
 + * Jiri Prchal jiri.prc...@aksignal.cz
 + * AK signal www.aksignal.cz
 + *
 + * SPDX-License-Identifier:  GPL-2.0+
 + */
 +
 +#include common.h
 +#include malloc.h
 +#include asm/io.h
 +#include asm/arch/at91sam9x5_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_spi.h
 +#include asm/arch/gpio.h
 +#include asm/arch/clk.h
 +#include atmel_hlcdc.h
 +#include atmel_mci.h
 +#include spi.h
 +#include net.h
 +#include netdev.h
 +
 +DECLARE_GLOBAL_DATA_PTR;
 +
 +static void cdu9g25_nand_hw_init(void)
 +{
 + struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
 + struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
 + struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
 + unsigned long csa;
 +
 + /* Enable CS3 */
 + csa = readl(matrix-ebicsa);
 + csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA;
 + writel(csa, matrix-ebicsa);
 +
 + /* Configure SMC CS3 for NAND/SmartMedia */
 + writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
 + AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
 + smc-cs[3].setup);
 + writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) |
 +AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6),
 +smc-cs[3].pulse);
 + writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6),
 +smc-cs[3].cycle);
 + writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
 + AT91_SMC_MODE_EXNW_DISABLE |
 + AT91_SMC_MODE_DBW_8 |
 + AT91_SMC_MODE_TDF_CYCLE(1),
 + smc-cs[3].mode);
 +
 + writel(1  ATMEL_ID_PIOCD, pmc-pcer);
 +
 + /* Configure RDY/BSY */
 + at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
 +
 + /* Enable NandFlash */
 + 

Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Stefano Babic
Hi Fabio,

On 13/09/2013 15:58, Fabio Estevam wrote:
 We currently have the same in DT for mx6 as well. Check this commit,
 for example:
 https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/imx6q-sabrelite.dts?id=722cfacd2e719b6447fb4bd5cd3372725876336d

Cool, thanks for the hint !

Regards,
Stefano Babic

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Robert Hodaszi

OK, but as Wolfgang already pointed out, can you tell use what compiler exposes
this behavior and show us the details WD requested please ?

Best regards,
Marek Vasut


You can find the informations below.

Please, use my patch or don't use it, or feel free to modify it as you 
wish, but sorry, I really don't have more time to work on this problem.


/ $ arm-linux-gcc --version//
//arm-linux-gcc (crosstool-NG 1.12.1) 4.4.6//
//Copyright (C) 2010 Free Software Foundation, Inc.//
//This is free software; see the source for copying conditions.  There 
is NO//
//warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.//

//
// $ arm-linux-ld --version//
//GNU ld (crosstool-NG 1.12.1) 2.20.1.20100303//
//Copyright 2009 Free Software Foundation, Inc.//
//This program is free software; you may redistribute it under the terms 
of//
//the GNU General Public License version 3 or (at your option) a later 
version.//

//This program has absolutely no warranty./




*Before**:

*/4003ff5c fec_recv://
//4003ff5c:   e92d44f0push{r4, r5, r6, r7, sl, lr}//
//4003ff60:   e590403cldr r4, [r0, #60]   ; 0x3c//
//4003ff64:   e24ddc06sub sp, sp, #1536   ; 0x600//
//4003ff68:   e5943000ldr r3, [r4]//
//4003ff6c:   e594600cldr r6, [r4, #12]//
//4003ff70:   e5935004ldr r5, [r3, #4]//
//4003ff74:   e594a008ldr sl, [r4, #8]//
//4003ff78:   e1a07000mov r7, r0//
//4003ff7c:   e5943000ldr r3, [r4]//
//4003ff80:   e3150101tst r5, #1073741824 ; 0x4000//
//4003ff84:   e5835004str r5, [r3, #4]//
//4003ff88:   0a07beq 4003ffac fec_recv+0x50//
//4003ff8c:   ebfffd9ebl  4003f60c fec_halt//
//4003ff90:   e5941018ldr r1, [r4, #24]//
//4003ff94:   e1a7mov r0, r7//
//4003ff98:   ebfffef1bl  4003fb64 fec_init//
//4003ff9c:   e1a01005mov r1, r5//
//4003ffa0:   e59f01a4ldr r0, [pc, #420]  ; 4004014c 
fec_recv+0x1f0//

//4003ffa4:   ebff76b7bl  4001da88 printf//
//4003ffa8:   ea1db   40040024 fec_recv+0xc8//
//4003ffac:   e355cmp r5, #0//
//4003ffb0:   aa03bge 4003ffc4 fec_recv+0x68//
//4003ffb4:   e59320c4ldr r2, [r3, #196]  ; 0xc4//
//4003ffb8:   e3822001orr r2, r2, #1//
//4003ffbc:   e5943000ldr r3, [r4]//
//4003ffc0:   e58320c4str r2, [r3, #196]  ; 0xc4//
//4003ffc4:   e3150201tst r5, #268435456  ; 0x1000//
//4003ffc8:   0a0dbeq 40040004 fec_recv+0xa8//
//4003ffcc:   e5943000ldr r3, [r4]//
//4003ffd0:   e59330c4ldr r3, [r3, #196]  ; 0xc4//
//4003ffd4:   e3130001tst r3, #1//
//4003ffd8:   0a09beq 40040004 fec_recv+0xa8//
//4003ffdc:   e1a7mov r0, r7//
//4003ffe0:   ebfffd89bl  4003f60c fec_halt//
//4003ffe4:   e5943000ldr r3, [r4]//
//4003ffe8:   e59320c4ldr r2, [r3, #196]  ; 0xc4//
//4003ffec:   e3c22001bic r2, r2, #1//
//4003fff0:   e5943000ldr r3, [r4]//
//4003fff4:   e1a7mov r0, r7//
//4003fff8:   e58320c4str r2, [r3, #196]  ; 0xc4//
//4003fffc:   e5941018ldr r1, [r4, #24]//
//4004:   ebfffed7bl  4003fb64 fec_init//
//40040004:   e1a05186lsl r5, r6, #3//
//40040008:   e08a6005add r6, sl, r5//
//4004000c:   e3c6003fbic r0, r6, #63 ; 0x3f//
//40040010:   e2801040add r1, r0, #64 ; 0x40//
//40040014:   ebff0152bl  4564 
invalidate_dcache_range//

//40040018:   e1d620b2ldrhr2, [r6, #2]//
//4004001c:   e3120902tst r2, #32768  ; 0x8000//
//40040020:   0a01beq 4004002c fec_recv+0xd0//
//40040024:   e3a05000mov r5, #0//
//40040028:   ea44b   40040140 fec_recv+0x1e4//
//4004002c:   e59f311cldr r3, [pc, #284]  ; 40040150 
fec_recv+0x1f4//

//40040030:   e0023003and r3, r2, r3//
//40040034:   e3530b02cmp r3, #2048   ; 0x800//
//40040038:   1a16bne 40040098 fec_recv+0x13c//
//4004003c:   e19a30b5ldrhr3, [sl, r5]//
//40040040:   e3530012cmp r3, #18//
//40040044:   da13ble 40040098 fec_recv+0x13c//
//40040048:   e5967004ldr r7, [r6, #4]//
//4004004c:   e19a50b5ldrhr5, [sl, r5]//
//40040050:   e2455004sub r5, r5, #4//
//40040054:   e287103fadd r1, r7, #63 ; 0x3f//
//40040058:   e0811005add r1, r1, r5//
//4004005c:   e3c7003fbic r0, 

Re: [U-Boot] [PATCH v5] at91: add support for CDU9G25 board

2013-09-13 Thread Jiří Prchal

Hi Andreas,

Dne 13.9.2013 16:10, Andreas Bießmann napsal(a):

Dear Jiri Prchal,

On 09/13/2013 03:00 PM, Jiri Prchal wrote:

This patch adds support for our companies board CDU9G25 with Atmel AT91SAM9G25, 
128MB DDR2, 256MB NAND.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
v.2
Fixed static IP and MAC addr cofiguration by random MAC and DHCP.
Added entry to MAINTAINERS.
Fixed line lenght, trailing spaces and other cosmetics.
v.3
Removed static eth_gadget addresses.
MAC address set from serial number of F-RAM.
v.4
Changed debug to printf if used random MAC addr, print that addr.
Keep MAC addr set in enviroment.
v.5
Changes to Bo Shen comments.

Signed-off-by: Jiri Prchal jiri.prc...@aksignal.cz
---
  arch/arm/include/asm/mach-types.h |1 +
  board/AKsignal/cdu9g25/Makefile   |   34 ++
  board/AKsignal/cdu9g25/cdu9g25.c  |  202 +++
  boards.cfg|1 +
  include/configs/cdu9g25.h |  210 +
  5 files changed, 448 insertions(+)
  create mode 100644 board/AKsignal/cdu9g25/Makefile
  create mode 100644 board/AKsignal/cdu9g25/cdu9g25.c
  create mode 100644 include/configs/cdu9g25.h

diff --git a/arch/arm/include/asm/mach-types.h 
b/arch/arm/include/asm/mach-types.h
index 440b041..9b274ba 100644
--- a/arch/arm/include/asm/mach-types.h
+++ b/arch/arm/include/asm/mach-types.h
@@ -986,6 +986,7 @@ extern unsigned int __machine_arch_type;
  #define MACH_TYPE_VIT_IBOX 3371
  #define MACH_TYPE_DM6441_ESP   3372
  #define MACH_TYPE_AT91SAM9X5EK 3373
+#define MACH_TYPE_CDU9G25  3373


NAK, please obtain a mach type:
http://www.arm.linux.org.uk/developer/machines/?action=new


Should I register machine? I develop DT only:
NOTE 1:If you are developing a DT-only platform, you do not need to register a 
machine type for it.
Please do not register a machine type. Thanks.
Do I need this MACH_TYPE_* at all?




  #define MACH_TYPE_LIBRA3374
  #define MACH_TYPE_EASYCRRH 3375
  #define MACH_TYPE_TRIPEL   3376
diff --git a/board/AKsignal/cdu9g25/Makefile b/board/AKsignal/cdu9g25/Makefile
new file mode 100644
index 000..b644a83
--- /dev/null
+++ b/board/AKsignal/cdu9g25/Makefile
@@ -0,0 +1,34 @@
+#
+# U-boot - Makefile
+#
+# (C) Copyright 2013
+# Jiri Prchal jiri.prc...@aksignal.cz
+# AK signal www.aksignal.cz
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier: GPL-2.0+
+#
+
+include $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+COBJS-y+= cdu9g25.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):$(obj).depend $(OBJS) $(SOBJS)
+   $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/AKsignal/cdu9g25/cdu9g25.c b/board/AKsignal/cdu9g25/cdu9g25.c
new file mode 100644
index 000..7321a02
--- /dev/null
+++ b/board/AKsignal/cdu9g25/cdu9g25.c
@@ -0,0 +1,202 @@
+/*
+ * (C) Copyright 2013
+ * Jiri Prchal jiri.prc...@aksignal.cz
+ * AK signal www.aksignal.cz
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include asm/io.h
+#include asm/arch/at91sam9x5_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_spi.h
+#include asm/arch/gpio.h
+#include asm/arch/clk.h
+#include atmel_hlcdc.h
+#include atmel_mci.h
+#include spi.h
+#include net.h
+#include netdev.h
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static void cdu9g25_nand_hw_init(void)
+{
+   struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
+   struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+   struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+   unsigned long csa;
+
+   /* Enable CS3 */
+   csa = readl(matrix-ebicsa);
+   csa |= AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA;
+   writel(csa, matrix-ebicsa);
+
+   /* Configure SMC CS3 for NAND/SmartMedia */
+   writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
+   AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
+   smc-cs[3].setup);
+   writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(5) |
+  AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(6),
+  smc-cs[3].pulse);
+   writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(6),
+  smc-cs[3].cycle);
+   writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
+   AT91_SMC_MODE_EXNW_DISABLE |
+   AT91_SMC_MODE_DBW_8 |
+   

Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Eric Nelson

Hi Fabio,

On 09/13/2013 06:58 AM, Fabio Estevam wrote:

Hi Stefano,

On Fri, Sep 13, 2013 at 5:16 AM, Stefano Babic sba...@denx.de wrote:

I admit that using DT also for u-boot seems a better solution. You're
right about i.MX6 in kernel, but on the other hand I like how it is
described for i.MX28 boards. The display-timings node contain all
information we need. It would be nice to have the same for i.MX6.


We currently have the same in DT for mx6 as well. Check this commit,
for example:
https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/imx6q-sabrelite.dts?id=722cfacd2e719b6447fb4bd5cd3372725876336d



Nice!

So, how should we get this done?

We have support for parsing individual lines of DT, and the primary
thing(s) needed by U-Boot's display are in the timing block of the
device tree, but I wonder whether it makes sense to implement a
full parser for that, or a simpler parser for fb_videomode.

Since both cfb_console in U-Boot and the of_get_fb_videomode()
routine in the kernel use fb_videomode, it should be straightforward
to hand the information off.

I don't think the outer information (the lvds-channel@0 and
ldb blocks in imx6q-sabrelite.dts) should be parsed by U-Boot
as device-tree code since that path leads to having a full
device-tree compiler that seems inappropriate.

Let me know your thoughts.


Eric
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] AES: Encryption of u-boot.img

2013-09-13 Thread bin4ry
Hi everyone,

I want to implement a minimal secure boot architecture into u-boot by
letting the u-boot.img be decrypted during SPL execution. Thus, the
u-boot.img is present on the MMC in an encrypted version. I already
implemented a basic AES-128 en-/decryption algorithm into the SPL.

Everything will be implement on a PandaBoard (OMAP4460). Now my
questions are:

1.) What would be the general architecture? u-boot.img is loaded into
external memory (DRAM)at address 0x8010. To decrypt it, the whole
file needs to be processed by SPL, which will not be able to load the
data since the SPL can not exceed a certain size (~49 kByte I guess).

- Thus, would it be somehow possible to implement the algorithm in
the SPL but let the u-boot.img data be stored in DRAM for processing?

2.) Furthermore, where could be a good place to put the actual algorithm
in? I figured that in my situation the function call flow is something
like this:

...  omap_boot_device()  boot_device()  spl_mmc_load_image() 
mmc_load_image_fat  file_fat_read()  do_fat_read()
_jump_to_image_noargs() where u-boot.img is eventually called using the
image_entry() function.


Thanks a lot,
-b


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Gerhard Sittig
On Fri, Sep 13, 2013 at 15:51 +0200, Marek Vasut wrote:
 
 Dear Afzal Mohammed,
 
 [...]
 
  +int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
  +{
  +   char *st;
  +
  +   dfu-dev_type = DFU_DEV_RAM;
  +   st = strsep(s,  );
  +   if (strcmp(st, ram)) {
  +   error(unsupported device: %s\n, st);
  +   return -ENODEV;
  +   }
  +
  +   dfu-layout = DFU_RAM_ADDR;
  +   dfu-data.ram.start = (void *)simple_strtoul(s, s, 16);
  +   dfu-data.ram.size = simple_strtoul(++s, s, 16);
 
 This ++s, s is quite crazy ;-)

Actually it's not just a neat trick, but instead it's not
guaranteed to work.  It's an inviation for problems that you
don't need.

The order in which arguments for the call get evaluated isn't
specified, so behaviour is uncertain here.  Read: the
construction happens to work by coincidence for individual
setups, but isn't correct and need not work elsewhere, and may
break in arbitrary ways at any occasion, and then is hard to
track down since things may seem to work often enough or the
bug won't show up when you are diagnosing the problem.

The code needs to get fixed before getting picked up.  Doing the
increment in a separate instruction is cheap and simple, the
terse form is wrong.


virtually yours
Gerhard Sittig
-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr. 5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: off...@denx.de
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH 2/4] powerpc/eeprom: update MAX_NUM_PORTS to adapt non-256-bytes EEPROM

2013-09-13 Thread York Sun
On 09/12/2013 11:46 PM, Shengzhou Liu wrote:
 Some boards use System EEPROM with 128-bytes instead of 256-bytes.
 Since we regard 256-bytes EEPROM as standard EEPROM with default
 value for MAX_NUM_PORTS. For those non-256-bytes EEPROM, we can
 redefine MAX_NUM_PORTS in board-specific file to override the
 default MAX_NUM_PORTS.
 
 This patch doesn't impact on previous existing boards.
 
 Signed-off-by: Shengzhou Liu shengzhou@freescale.com
 ---
 Verified with 128B and 256B EEPROM, CRC works.
 


I would appreciate it if you update the version number and put a change
log under the --- line, even there is no change. With a clear version
number and change log, reviewers will be able to identify this is a
resend and not spending much time on it.

You are also encouraged to mark previous patch as superseded.

York



___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v9 0/5] arm64 patch

2013-09-13 Thread Wolfgang Denk
Dear feng...@phytium.com.cn,

In message 1379061539-38972-1-git-send-email-feng...@phytium.com.cn you wrote:
 From: David Feng feng...@phytium.com.cn
 
 The porting has been merged with arm architecture.
 Most architecture codes are placed in
 arch/arm/cpu/armv8 directory. Generic board is also
 supported after a few bugs are fixed.
 u-boot could be running at EL1 or EL2.
 
 Changes for v8:
   - add Signed-off-by information to patch board support of
 vexpress_aemv8a which SMC9 support is integrated
 from Sharma Bhupesh's patch.
   - adjust pt_regs struct and add exception state
 preservation in exception.S.

what exactly are the changes for V9 ?

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Remember thee Ay, thou poor ghost while memory holds a seat  In  this
distracted  globe.  Remember  thee!  Yea, from the table of my memory
I'll wipe away all trivial fond  records,  All  saws  of  books,  all
forms,  all  pressures past, That youth and observation copied there.
Hamlet, I : v : 95 William Shakespeare
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Marek Vasut
Dear Wolfgang Denk,

 Dear Robert Hodaszi,
 
 In message 5232f2e7.4050...@digi.com you wrote:
  Ok. Then what about if I would use the stack, but align the buffer
  manually.
 
 Has this been tested?  Does it work?
 
  -   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
  +   /* Align the receive buffer */
  +   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
  +   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN -
  1))  ~(ARCH_DMA_MINALIGN - 1);
 
 You should use the ALIGN() macro here.

We already have this stuff in include/common.h ... ALLOC_CACHE_ALIGNED_BUFFER 
it 
is called IIRC

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] i.MX6DL/S: add drive-strength back to pads DISP0_DAT2/DAT10

2013-09-13 Thread Eric Nelson
This patch fixes a regression introduced by commit 87d720e0.

Signed-off-by: Eric Nelson eric.nel...@boundarydevices.com
---
 arch/arm/include/asm/arch-mx6/mx6dl_pins.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/arm/include/asm/arch-mx6/mx6dl_pins.h 
b/arch/arm/include/asm/arch-mx6/mx6dl_pins.h
index c3d0b70..ad537b4 100644
--- a/arch/arm/include/asm/arch-mx6/mx6dl_pins.h
+++ b/arch/arm/include/asm/arch-mx6/mx6dl_pins.h
@@ -235,7 +235,7 @@ enum {
MX6_PAD_DISP0_DAT1__GPIO_4_22   = IOMUX_PAD(0x03C8, 0x00B4, 5, 
0x, 0, 0),
MX6_PAD_DISP0_DAT1__MMDC_MMDC_DEBUG_6   = IOMUX_PAD(0x03C8, 0x00B4, 6, 
0x, 0, 0),
MX6_PAD_DISP0_DAT1__PL301_SIM_MX6DL_PER1_HADDR_12   = 
IOMUX_PAD(0x03C8, 0x00B4, 7, 0x, 0, 0),
-   MX6_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10  = IOMUX_PAD(0x03CC, 0x00B8, 0, 
0x, 0, 0),
+   MX6_PAD_DISP0_DAT10__IPU1_DISP0_DAT_10  = IOMUX_PAD(0x03CC, 0x00B8, 0, 
0x, 0, PAD_CTL_DSE_120ohm),
MX6_PAD_DISP0_DAT10__LCDIF_DAT_10   = IOMUX_PAD(0x03CC, 0x00B8, 1, 
0x, 0, PAD_CTL_DSE_120ohm),
MX6_PAD_DISP0_DAT10__USDHC1_USDHC_DEBUG_6   = IOMUX_PAD(0x03CC, 
0x00B8, 3, 0x, 0, 0),
MX6_PAD_DISP0_DAT10__SDMA_DEBUG_EVENT_CHANNEL_3 = IOMUX_PAD(0x03CC, 
0x00B8, 4, 0x, 0, 0),
@@ -309,7 +309,7 @@ enum {
MX6_PAD_DISP0_DAT19__GPIO_5_13  = IOMUX_PAD(0x03F0, 0x00DC, 5, 
0x, 0, 0),
MX6_PAD_DISP0_DAT19__MMDC_MMDC_DEBUG_24 = IOMUX_PAD(0x03F0, 0x00DC, 6, 
0x, 0, 0),
MX6_PAD_DISP0_DAT19__WEIM_WEIM_CS_3 = IOMUX_PAD(0x03F0, 0x00DC, 7, 
0x, 0, 0),
-   MX6_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2= IOMUX_PAD(0x03F4, 0x00E0, 0, 
0x, 0, 0),
+   MX6_PAD_DISP0_DAT2__IPU1_DISP0_DAT_2= IOMUX_PAD(0x03F4, 0x00E0, 0, 
0x, 0, PAD_CTL_DSE_120ohm),
MX6_PAD_DISP0_DAT2__LCDIF_DAT_2 = IOMUX_PAD(0x03F4, 0x00E0, 1, 
0x, 0, 0),
MX6_PAD_DISP0_DAT2__ECSPI3_MISO = IOMUX_PAD(0x03F4, 0x00E0, 2, 
0x, 0, 0),
MX6_PAD_DISP0_DAT2__USDHC1_USDHC_DEBUG_2= IOMUX_PAD(0x03F4, 
0x00E0, 3, 0x, 0, 0),
-- 
1.8.1.2

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Wolfgang Denk
Dear Robert Hodaszi,

In message 5232f2e7.4050...@digi.com you wrote:
 
 Ok. Then what about if I would use the stack, but align the buffer manually.

Has this been tested?  Does it work?

 -   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
 +   /* Align the receive buffer */
 +   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
 +   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN - 1))  
 ~(ARCH_DMA_MINALIGN - 1);

You should use the ALIGN() macro here.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Niklaus Wirth has lamented that, whereas Europeans pronounce his name
correctly (Ni-klows Virt), Americans invariably mangle it into (Nick-
les Worth). Which is to say that Europeans  call  him  by  name,  but
Americans call him by value.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Marek Vasut
Dear Gerhard Sittig,

 On Fri, Sep 13, 2013 at 15:51 +0200, Marek Vasut wrote:
  Dear Afzal Mohammed,
  
  [...]
  
   +int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
   +{
   + char *st;
   +
   + dfu-dev_type = DFU_DEV_RAM;
   + st = strsep(s,  );
   + if (strcmp(st, ram)) {
   + error(unsupported device: %s\n, st);
   + return -ENODEV;
   + }
   +
   + dfu-layout = DFU_RAM_ADDR;
   + dfu-data.ram.start = (void *)simple_strtoul(s, s, 16);
   + dfu-data.ram.size = simple_strtoul(++s, s, 16);
  
  This ++s, s is quite crazy ;-)
 
 Actually it's not just a neat trick, but instead it's not
 guaranteed to work.  It's an inviation for problems that you
 don't need.
 
 The order in which arguments for the call get evaluated isn't
 specified, so behaviour is uncertain here.  Read: the
 construction happens to work by coincidence for individual
 setups, but isn't correct and need not work elsewhere, and may
 break in arbitrary ways at any occasion, and then is hard to
 track down since things may seem to work often enough or the
 bug won't show up when you are diagnosing the problem.
 
 The code needs to get fixed before getting picked up.  Doing the
 increment in a separate instruction is cheap and simple, the
 terse form is wrong.

Full ACK.

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Lukasz Majewski
Hi Gerhard,

 On Fri, Sep 13, 2013 at 15:51 +0200, Marek Vasut wrote:
  
  Dear Afzal Mohammed,
  
  [...]
  
   +int dfu_fill_entity_ram(struct dfu_entity *dfu, char *s)
   +{
   + char *st;
   +
   + dfu-dev_type = DFU_DEV_RAM;
   + st = strsep(s,  );
   + if (strcmp(st, ram)) {
   + error(unsupported device: %s\n, st);
   + return -ENODEV;
   + }
   +
   + dfu-layout = DFU_RAM_ADDR;
   + dfu-data.ram.start = (void *)simple_strtoul(s, s, 16);
   + dfu-data.ram.size = simple_strtoul(++s, s, 16);
  
  This ++s, s is quite crazy ;-)
 
 Actually it's not just a neat trick, but instead it's not
 guaranteed to work.  It's an inviation for problems that you
 don't need.
 
 The order in which arguments for the call get evaluated isn't
 specified, so behaviour is uncertain here.  Read: the
 construction happens to work by coincidence for individual
 setups, but isn't correct and need not work elsewhere, and may
 break in arbitrary ways at any occasion, and then is hard to
 track down since things may seem to work often enough or the
 bug won't show up when you are diagnosing the problem.
 
 The code needs to get fixed before getting picked up.  Doing the
 increment in a separate instruction is cheap and simple, the
 terse form is wrong.

It was me, who by some obscure reason introduced this faulty (non
standard) code. 

And probably Afzal copied it from dfu_mmc.c file.

So f...g embarrassing...  

However the fix for that code at dfu_mmc.c file was already posted to
ML.

 
 
 virtually yours
 Gerhard Sittig



-- 
Best regards,

Lukasz Majewski

Samsung RD Institute Poland (SRPOL) | Linux Platform Group
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH RFC 0/22] i.MX6: Update pad declarations for multiple-arch binaries

2013-09-13 Thread Stefano Babic
Hi Eric,

Thanks for your analyses

On 13/09/2013 19:01, Eric Nelson wrote:

 I recommend that we simply adopt the main-line kernel naming,
 and work up a couple of initial patches:

I fully agree - this makes also code more maintainable if we will be in
sync with kernel.

 
 1. simply replace all of the names with their main-line
 equivalent, and
 2. remove all of the unused (NO_PAD_I,NO_MUX_I) pad
 declarations
 

Agree.

 Each of these should be easy to inspect for correctness
 and then we can focus on how to handle the differences
 and produce binaries that support both variants.

I think you proposed the right way to go on ;-)

Best regards,
Stefano Babic

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] AES: Encryption of u-boot.img

2013-09-13 Thread Michael Trimarchi
Hi

On Fri, Sep 13, 2013 at 4:57 PM, bin4ry 0xbin...@gmail.com wrote:
 Hi everyone,

 I want to implement a minimal secure boot architecture into u-boot by
 letting the u-boot.img be decrypted during SPL execution. Thus, the
 u-boot.img is present on the MMC in an encrypted version. I already
 implemented a basic AES-128 en-/decryption algorithm into the SPL.

 Everything will be implement on a PandaBoard (OMAP4460). Now my
 questions are:

 1.) What would be the general architecture? u-boot.img is loaded into
 external memory (DRAM)at address 0x8010. To decrypt it, the whole
 file needs to be processed by SPL, which will not be able to load the
 data since the SPL can not exceed a certain size (~49 kByte I guess).

 - Thus, would it be somehow possible to implement the algorithm in
 the SPL but let the u-boot.img data be stored in DRAM for processing?

 2.) Furthermore, where could be a good place to put the actual algorithm
 in? I figured that in my situation the function call flow is something
 like this:

 ...  omap_boot_device()  boot_device()  spl_mmc_load_image() 
 mmc_load_image_fat  file_fat_read()  do_fat_read()

...  omap_boot_device()  boot_device()  spl_mmc_load_image()
file_fat_read()  do_fat_read()

I don't understand you can decrypt it after load. Why just verify the signature?

Michael


_jump_to_image_noargs() where u-boot.img is eventually called using the
 image_entry() function.


 Thanks a lot,
 -b


 ___
 U-Boot mailing list
 U-Boot@lists.denx.de
 http://lists.denx.de/mailman/listinfo/u-boot
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] powerpc/mpc85xx: Add workaround for erratum A006379

2013-09-13 Thread York Sun
Erratum A006379 says CPCHDBCR0 bit field [10:14] has incorrect default
value after POR. The workaround is to set this field before enabling
CPC to 0x1e.

Signed-off-by: York Sun york...@freescale.com
---
 arch/powerpc/cpu/mpc85xx/cmd_errata.c |8 
 arch/powerpc/cpu/mpc85xx/cpu_init.c   |   11 +++
 arch/powerpc/include/asm/config_mpc85xx.h |5 +
 arch/powerpc/include/asm/immap_85xx.h |1 +
 4 files changed, 25 insertions(+)

diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c 
b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
index c441bd2..a78e227 100644
--- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c
+++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c
@@ -245,6 +245,14 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, 
char * const argv[])
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006593
puts(Work-around for Erratum A006593 enabled\n);
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A006379
+   if (
+#ifdef CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV2
+   ((svr  0xff) == CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV2) ||
+#endif
+   ((svr  0xff) == CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV))
+   puts(Work-around for Erratum A006379 enabled\n);
+#endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_SEC_A003571
if (IS_SVR_REV(svr, 1, 0))
puts(Work-around for Erratum A003571 enabled\n);
diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c 
b/arch/powerpc/cpu/mpc85xx/cpu_init.c
index 6036333..aff8cec 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu_init.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c
@@ -126,6 +126,7 @@ void config_8560_ioports (volatile ccsr_cpm_t * cpm)
 #ifdef CONFIG_SYS_FSL_CPC
 static void enable_cpc(void)
 {
+__maybe_unused u32 svr = get_svr();
int i;
u32 size = 0;
 
@@ -160,6 +161,16 @@ static void enable_cpc(void)
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006593
setbits_be32(cpc-cpchdbcr0, 1  (31 - 21));
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A006379
+   if (
+#ifdef CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV2
+   ((svr  0xff) == CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV2) ||
+#endif
+   ((svr  0xff) == CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV)) {
+   setbits_be32(cpc-cpchdbcr0,
+CPC_HDBCR0_SPLRU_LEVEL_EN);
+   }
+#endif
 
out_be32(cpc-cpccsr0, CPC_CSR0_CE | CPC_CSR0_PE);
/* Read back to sync write */
diff --git a/arch/powerpc/include/asm/config_mpc85xx.h 
b/arch/powerpc/include/asm/config_mpc85xx.h
index bec8966..83684cf 100644
--- a/arch/powerpc/include/asm/config_mpc85xx.h
+++ b/arch/powerpc/include/asm/config_mpc85xx.h
@@ -593,6 +593,8 @@
 #define CONFIG_SYS_FSL_ERRATUM_A004468
 #define CONFIG_SYS_FSL_ERRATUM_A_004934
 #define CONFIG_SYS_FSL_ERRATUM_A005871
+#define CONFIG_SYS_FSL_ERRATUM_A006379
+#define CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV 0x10
 #define CONFIG_SYS_FSL_ERRATUM_A006593
 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe00
 #define CONFIG_SYS_FSL_PCI_VER_3_X
@@ -617,6 +619,9 @@
 #define CONFIG_SYS_FSL_USB1_PHY_ENABLE
 #define CONFIG_SYS_FSL_ERRATUM_A_004934
 #define CONFIG_SYS_FSL_ERRATUM_A005871
+#define CONFIG_SYS_FSL_ERRATUM_A006379
+#define CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV 0x10
+#define CONFIG_SYS_FSL_ERRATUM_A006379_SVR_REV20x20
 #define CONFIG_SYS_FSL_ERRATUM_A006593
 #define CONFIG_SYS_CCSRBAR_DEFAULT 0xfe00
 
diff --git a/arch/powerpc/include/asm/immap_85xx.h 
b/arch/powerpc/include/asm/immap_85xx.h
index 3a10d77..a938143 100644
--- a/arch/powerpc/include/asm/immap_85xx.h
+++ b/arch/powerpc/include/asm/immap_85xx.h
@@ -1671,6 +1671,7 @@ typedef struct cpc_corenet {
 #define CPC_HDBCR0_CDQ_SPEC_DIS0x0800
 #define CPC_HDBCR0_TAG_ECC_SCRUB_DIS   0x0100
 #define CPC_HDBCR0_DATA_ECC_SCRUB_DIS  0x0040
+#define CPC_HDBCR0_SPLRU_LEVEL_EN  0x003c
 #endif /* CONFIG_SYS_FSL_CPC */
 
 /* Global Utilities Block */
-- 
1.7.9.5


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4 0/3] dfu ram support

2013-09-13 Thread Afzal Mohammed
Hi,

DFU spec mentions it as a method to upgrade firmware (software stored
in writable non-volatile memory). It also says other potential uses of
DFU is beyond scope of the spec.

Here such a beyond the scope use is being attempted - directly pumping
binary images from host via USB to RAM. This facility is a developer
centric one in that it gives advantage over upgrading non-volatile
memory for testing new images every time during development and/or
testing.

Directly putting image onto RAM would speed up upgrade process. This and
convenience was the initial thoughts that led to doing this, speed
improvement over MMC was only 1 second though - 6 sec on RAM as opposed
to 7 sec on MMC in beagle bone, perhaps enabling cache and/or optimizing
DFU framework to avoid multiple copy for ram (if worth) may help, and
on other platforms and other boot media like NAND maybe improvement
would be higher.

And for a platform that doesn't yet have proper DFU suppport for
non-volatile media's, DFU to RAM can be used.

Another minor advantage would be to increase life of mmc/nand as it
would be less used during development/testing.

usage: image name ram start address size
eg. kernel ram 0x8100 0x100

Downloading images to RAM using DFU is not something new, this is
acheived in openmoko also.

DFU on RAM can be used for extracting RAM contents to host using dfu
upload. Perhaps this can be extended to io for squeezing out register
dump through usb, if it is worth.

In addition to ram support, a minor unification of dfu read/write enum's
currently duplicated in mmc/nand is done, helping ram support too.

Also dfu ram support is added for am335x SoC based boards.

Based on: usb master branch

Regards
Afzal

v4:
avoid doing prefix increment in argument of simple_strtoul()
collect more tags
v3: collected tags, error used instead of printf
v2: unified read/write dfu ops enum, added am335x support


Afzal Mohammed (3):
  dfu: unify mmc/nand read/write ops enum
  dfu: ram support
  am335x_evm: enable DFU RAM

 drivers/dfu/Makefile |  1 +
 drivers/dfu/dfu.c|  7 ++--
 drivers/dfu/dfu_mmc.c|  9 ++
 drivers/dfu/dfu_nand.c   |  7 +---
 drivers/dfu/dfu_ram.c| 77 
 include/configs/am335x_evm.h |  6 
 include/dfu.h| 23 +
 7 files changed, 115 insertions(+), 15 deletions(-)
 create mode 100644 drivers/dfu/dfu_ram.c

-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4 1/3] dfu: unify mmc/nand read/write ops enum

2013-09-13 Thread Afzal Mohammed
MMC and NAND independently defines same enumerators for read/write.
Unify them by defining enum in dfu header. RAM support that is being
added newly also can make use of it.

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Heiko Schocher h...@denx.de
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
Acked-by: Lukasz Majewski l.majew...@samsung.com
Acked-by: Marek Vasut ma...@denx.de
---

v4: collect more tag
v3: collected tag
v2: new

 drivers/dfu/dfu_mmc.c  | 9 ++---
 drivers/dfu/dfu_nand.c | 7 +--
 include/dfu.h  | 5 +
 3 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
index 0871a77..f942758 100644
--- a/drivers/dfu/dfu_mmc.c
+++ b/drivers/dfu/dfu_mmc.c
@@ -13,16 +13,11 @@
 #include div64.h
 #include dfu.h
 
-enum dfu_mmc_op {
-   DFU_OP_READ = 1,
-   DFU_OP_WRITE,
-};
-
 static unsigned char __aligned(CONFIG_SYS_CACHELINE_SIZE)
dfu_file_buf[CONFIG_SYS_DFU_MAX_FILE_SIZE];
 static long dfu_file_buf_len;
 
-static int mmc_block_op(enum dfu_mmc_op op, struct dfu_entity *dfu,
+static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
u64 offset, void *buf, long *len)
 {
char cmd_buf[DFU_CMD_BUF_SIZE];
@@ -65,7 +60,7 @@ static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, 
long *len)
return 0;
 }
 
-static int mmc_file_op(enum dfu_mmc_op op, struct dfu_entity *dfu,
+static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
void *buf, long *len)
 {
char cmd_buf[DFU_CMD_BUF_SIZE];
diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c
index 0ec12cf..edbf5a9 100644
--- a/drivers/dfu/dfu_nand.c
+++ b/drivers/dfu/dfu_nand.c
@@ -19,12 +19,7 @@
 #include jffs2/load_kernel.h
 #include nand.h
 
-enum dfu_nand_op {
-   DFU_OP_READ = 1,
-   DFU_OP_WRITE,
-};
-
-static int nand_block_op(enum dfu_nand_op op, struct dfu_entity *dfu,
+static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu,
u64 offset, void *buf, long *len)
 {
loff_t start, lim;
diff --git a/include/dfu.h b/include/dfu.h
index 392cef1..6a3e253 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -29,6 +29,11 @@ enum dfu_layout {
DFU_FS_EXT4,
 };
 
+enum dfu_op {
+   DFU_OP_READ = 1,
+   DFU_OP_WRITE,
+};
+
 struct mmc_internal_data {
/* RAW programming */
unsigned int lba_start;
-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4 2/3] dfu: ram support

2013-09-13 Thread Afzal Mohammed
DFU spec mentions it as a method to upgrade firmware (software stored
in writable non-volatile memory). It also says other potential uses of
DFU is beyond scope of the spec.

Here such a beyond the scope use is being attempted - directly pumping
binary images from host via USB to RAM. This facility is a developer
centric one in that it gives advantage over upgrading non-volatile
memory for testing new images every time during development and/or
testing.

Directly putting image onto RAM would speed up upgrade process. This and
convenience was the initial thoughts that led to doing this, speed
improvement over MMC was only 1 second though - 6 sec on RAM as opposed
to 7 sec on MMC in beagle bone, perhaps enabling cache and/or optimizing
DFU framework to avoid multiple copy for ram (if worth) may help, and
on other platforms and other boot media like NAND maybe improvement
would be higher.

And for a platform that doesn't yet have proper DFU suppport for
non-volatile media's, DFU to RAM can be used.

Another minor advantage would be to increase life of mmc/nand as it
would be less used during development/testing.

usage: image name ram start address size
eg. kernel ram 0x8100 0x100

Downloading images to RAM using DFU is not something new, this is
acheived in openmoko also.

DFU on RAM can be used for extracting RAM contents to host using dfu
upload. Perhaps this can be extended to io for squeezing out register
dump through usb, if it is worth.

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Heiko Schocher h...@denx.de
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
Cc: Gerhard Sittig g...@denx.de
Acked-by: Marek Vasut ma...@denx.de
Acked-by: Lukasz Majewski l.majew...@samsung.com
---

v4:
avoid doing prefix increment in argument of simple_strtoul()
collect more tags
v3: error used instead of printf
v2: remove read/write enumerator define's, instead use new common ones

 drivers/dfu/Makefile  |  1 +
 drivers/dfu/dfu.c |  7 +++--
 drivers/dfu/dfu_ram.c | 77 +++
 include/dfu.h | 18 
 4 files changed, 101 insertions(+), 2 deletions(-)
 create mode 100644 drivers/dfu/dfu_ram.c

diff --git a/drivers/dfu/Makefile b/drivers/dfu/Makefile
index fca370a..de9e44e 100644
--- a/drivers/dfu/Makefile
+++ b/drivers/dfu/Makefile
@@ -12,6 +12,7 @@ LIB   = $(obj)libdfu.o
 COBJS-$(CONFIG_DFU_FUNCTION) += dfu.o
 COBJS-$(CONFIG_DFU_MMC) += dfu_mmc.o
 COBJS-$(CONFIG_DFU_NAND) += dfu_nand.o
+COBJS-$(CONFIG_DFU_RAM) += dfu_ram.o
 
 SRCS:= $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS-y))
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 689f5db..56b21c7 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -348,6 +348,9 @@ static int dfu_fill_entity(struct dfu_entity *dfu, char *s, 
int alt,
} else if (strcmp(interface, nand) == 0) {
if (dfu_fill_entity_nand(dfu, s))
return -1;
+   } else if (strcmp(interface, ram) == 0) {
+   if (dfu_fill_entity_ram(dfu, s))
+   return -1;
} else {
printf(%s: Device %s not (yet) supported!\n,
   __func__,  interface);
@@ -397,14 +400,14 @@ int dfu_config_entities(char *env, char *interface, int 
num)
 
 const char *dfu_get_dev_type(enum dfu_device_type t)
 {
-   const char *dev_t[] = {NULL, eMMC, OneNAND, NAND };
+   const char *dev_t[] = {NULL, eMMC, OneNAND, NAND, RAM };
return dev_t[t];
 }
 
 const char *dfu_get_layout(enum dfu_layout l)
 {
const char *dfu_layout[] = {NULL, RAW_ADDR, FAT, EXT2,
-  EXT3, EXT4 };
+  EXT3, EXT4, RAM_ADDR };
return dfu_layout[l];
 }
 
diff --git a/drivers/dfu/dfu_ram.c b/drivers/dfu/dfu_ram.c
new file mode 100644
index 000..335a8e1
--- /dev/null
+++ b/drivers/dfu/dfu_ram.c
@@ -0,0 +1,77 @@
+/*
+ * (C) Copyright 2013
+ * Afzal Mohammed afzal.mohd...@gmail.com
+ *
+ * Reference: dfu_mmc.c
+ * Copyright (C) 2012 Samsung Electronics
+ * author: Lukasz Majewski l.majew...@samsung.com
+ *
+ * SPDX-License-Identifier:GPL-2.0+
+ */
+
+#include common.h
+#include malloc.h
+#include errno.h
+#include dfu.h
+
+static int dfu_transfer_medium_ram(enum dfu_op op, struct dfu_entity *dfu,
+  u64 offset, void *buf, long *len)
+{
+   if (dfu-layout != DFU_RAM_ADDR) {
+   error(unsupported layout: %s\n, dfu_get_layout(dfu-layout));
+   return  -EINVAL;
+   }
+
+   if (offset  dfu-data.ram.size) {
+   error(request exceeds allowed area\n);
+   return -EINVAL;
+   }
+
+   if (op == DFU_OP_WRITE)
+   memcpy(dfu-data.ram.start + offset, buf, *len);
+   else
+   memcpy(buf, dfu-data.ram.start + offset, *len);
+
+   return 

[U-Boot] Help with a PPCXXX port

2013-09-13 Thread txcotrader
I'm trying to port a custom board running a AMCC 460SX processor to a more
recent version of U-Boot. I'm digging around the configuration registers
trying to figure out why my initial printout is showing:

U-Boot 2013.03932a-dirty (Sep 12 2013 - 14:57:13)

CPU:   AMCC PowerPC 460SX Rev. A at 231.291 MHz (PLB=33 OPB=16 EBC=4)
   Security support
   Bootstrap Option A - Boot ROM Location EBC (8 bits)
   Internal PCI arbiter enabled
   32 kche 32 kB D-Cache

While the older version is:
U-Boot 1.3.4 (Oct 20 2012 - 11:14:42)

CPU:   AMCC PowerPC 460SX Rev. B at 800 MHz (PLB=200 MHz, OPB=100 MHz,
EBC=100 MHz, DDR=400 MHz)
   Bootstrap Option A - Boot ROM Location EBC (16 bits)
   Internal PCI arbiter disabled
   32 kB I-Cache 32 kB D-Cache

The Rev, Clock Frequency, PLB, OPB, EBC and DDR values are either different
or non-existent. I'm going to continue to dig, but if anyone is willing to
provide some guidance it would be greatly appreciated.

Thanks!



--
View this message in context: 
http://u-boot.10912.n7.nabble.com/Help-with-a-PPCXXX-port-tp163128.html
Sent from the U-Boot mailing list archive at Nabble.com.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] net: fec: Avoid MX28 bus sync issue

2013-09-13 Thread Wolfgang Denk
Dear Marek Vasut,

In message 201309131824.52506.ma...@denx.de you wrote:
 
   -   uchar buff[FEC_MAX_PKT_SIZE] __aligned(ARCH_DMA_MINALIGN);
   +   /* Align the receive buffer */
   +   uchar buff_unaligned[FEC_MAX_PKT_SIZE + (ARCH_DMA_MINALIGN - 1)];
   +   uchar *buff = ((uint32_t)buff_unaligned + (ARCH_DMA_MINALIGN -
   1))  ~(ARCH_DMA_MINALIGN - 1);
  
  You should use the ALIGN() macro here.
 
 We already have this stuff in include/common.h ... ALLOC_CACHE_ALIGNED_BUFFER 
 it 
 is called IIRC

That's ALLOC_CACHE_ALIGN_BUFFER.   Thanks.

Wolfgang Denk

-- 
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
Anyone who isn't confused here doesn't really know what's going on.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH RFC 0/22] i.MX6: Update pad declarations for multiple-arch binaries

2013-09-13 Thread Otavio Salvador
On Fri, Sep 13, 2013 at 2:01 PM, Eric Nelson
eric.nel...@boundarydevices.com wrote:
 On 09/01/2013 11:21 AM, Eric Nelson wrote:
...
 Shawn appears to have implemented things in a clean way
 for the main-line kernel:

 https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/imx6q-pinfunc.h?id=c56009b2f6134e5943a03cf26e4d7fce9745d56b

 I recommend that we simply adopt the main-line kernel naming,
 and work up a couple of initial patches:

 1. simply replace all of the names with their main-line
 equivalent, and
 2. remove all of the unused (NO_PAD_I,NO_MUX_I) pad
 declarations

 Each of these should be easy to inspect for correctness
 and then we can focus on how to handle the differences
 and produce binaries that support both variants.

 Let me know your thoughts.
...

I fully support this idea; this easy:

* comparing code against Linux kernel;
* backporting code from Linux kernel;
* correctness (as we don't need to change it every time we add something new);
* avoid continuous inspection of this during U-Boot work (often we
need to double check the pins are known and which name has been used);

Regards,


-- 
Otavio Salvador O.S. Systems
http://www.ossystems.com.brhttp://code.ossystems.com.br
Mobile: +55 (53) 9981-7854Mobile: +1 (347) 903-9750
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Afzal Mohammed
+ Gerhard

On Fri, Sep 13, 2013 at 10:35:45PM +0530, Afzal Mohammed wrote:
 Hi Gerhard, Marek,
 
 On Fri, Sep 13, 2013 at 05:37:36PM +0200, Gerhard Sittig wrote:
  On Fri, Sep 13, 2013 at 15:51 +0200, Marek Vasut wrote:
 
+   dfu-data.ram.size = simple_strtoul(++s, s, 16);
   
   This ++s, s is quite crazy ;-)
 
  Actually it's not just a neat trick, but instead it's not
  guaranteed to work.  It's an inviation for problems that you
  don't need.
  
  The order in which arguments for the call get evaluated isn't
  specified, so behaviour is uncertain here.  Read: the
  construction happens to work by coincidence for individual
  setups, but isn't correct and need not work elsewhere, and may
  break in arbitrary ways at any occasion, and then is hard to
  track down since things may seem to work often enough or the
  bug won't show up when you are diagnosing the problem.
  
  The code needs to get fixed before getting picked up.  Doing the
  increment in a separate instruction is cheap and simple, the
  terse form is wrong.
 
 Yes wrong me, I realize that result is compiler dependent and not
 guaranteed to work always, v4 posted taking care of the above.
 
 Regards
 Afzal
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/3] dfu: ram support

2013-09-13 Thread Afzal Mohammed
Hi Gerhard, Marek,

On Fri, Sep 13, 2013 at 05:37:36PM +0200, Gerhard Sittig wrote:
 On Fri, Sep 13, 2013 at 15:51 +0200, Marek Vasut wrote:

   + dfu-data.ram.size = simple_strtoul(++s, s, 16);
  
  This ++s, s is quite crazy ;-)

 Actually it's not just a neat trick, but instead it's not
 guaranteed to work.  It's an inviation for problems that you
 don't need.
 
 The order in which arguments for the call get evaluated isn't
 specified, so behaviour is uncertain here.  Read: the
 construction happens to work by coincidence for individual
 setups, but isn't correct and need not work elsewhere, and may
 break in arbitrary ways at any occasion, and then is hard to
 track down since things may seem to work often enough or the
 bug won't show up when you are diagnosing the problem.
 
 The code needs to get fixed before getting picked up.  Doing the
 increment in a separate instruction is cheap and simple, the
 terse form is wrong.

Yes wrong me, I realize that result is compiler dependent and not
guaranteed to work always, v4 posted taking care of the above.

Regards
Afzal
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Eric Nelson

Hi Fabio,

On 09/13/2013 11:11 AM, Fabio Estevam wrote:

Hi Eric,

On Fri, Sep 13, 2013 at 11:51 AM, Eric Nelson
eric.nel...@boundarydevices.com wrote:


Nice!

So, how should we get this done?

We have support for parsing individual lines of DT, and the primary
thing(s) needed by U-Boot's display are in the timing block of the
device tree, but I wonder whether it makes sense to implement a
full parser for that, or a simpler parser for fb_videomode.


Looks like the parser for fb_videomode is enough.

I am not familiar with the usage of device tree in U-boot yet.

How do other SoC families handle the video display-timings in dt
currently in U-boot?



AFAIK, with a full device-tree blob, but without any means of
updating it, which ends up in the same place as the compiled-in
settings.

In order to configure for a new kernel, you have to compile
the DTB and save it to the boot media.

This is a perfectly reasonable thing to do late in the development
process, but makes connecting new panels cumbersome.

Regards,


Eric
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] Fix wrong sdhci host control register read and write

2013-09-13 Thread Juhyun (Justin) Oh
The patch fixes the improper read and write of sdhci
host control register for sdma transfer.

The problem comes when reading and writing 1 byte long
host control register with the sdhci_readl() and
sdhci_writel(). The misuse of these functions overwrite
the value of the next registers which are in 4 bytes boundary.

This patch replaces four byte register read/write functions
with one byte read/write ones. Beside, it eliminates
unnecessary bit operation. i.e. or-ing zero against a variable.

Signed-off-by: Juhyun (Justin) Oh juhyun...@sigmadesigns.com
---
 drivers/mmc/sdhci.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c
index 4261991..9740cca 100644
--- a/drivers/mmc/sdhci.c
+++ b/drivers/mmc/sdhci.c
@@ -68,10 +68,9 @@ static int sdhci_transfer_data(struct sdhci_host *host, 
struct mmc_data *data,
unsigned int stat, rdy, mask, timeout, block = 0;
 #ifdef CONFIG_MMC_SDMA
unsigned char ctrl;
-   ctrl = sdhci_readl(host, SDHCI_HOST_CONTROL);
+   ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
ctrl = ~SDHCI_CTRL_DMA_MASK;
-   ctrl |= SDHCI_CTRL_SDMA;
-   sdhci_writel(host, ctrl, SDHCI_HOST_CONTROL);
+   sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
 #endif

timeout = 100;
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 1/2] mx6sabresd: Avoid hang when HDMI cable is not connected

2013-09-13 Thread Fabio Estevam
Hi Eric,

On Fri, Sep 13, 2013 at 11:51 AM, Eric Nelson
eric.nel...@boundarydevices.com wrote:

 Nice!

 So, how should we get this done?

 We have support for parsing individual lines of DT, and the primary
 thing(s) needed by U-Boot's display are in the timing block of the
 device tree, but I wonder whether it makes sense to implement a
 full parser for that, or a simpler parser for fb_videomode.

Looks like the parser for fb_videomode is enough.

I am not familiar with the usage of device tree in U-boot yet.

How do other SoC families handle the video display-timings in dt
currently in U-boot?

Regards,

Fabio Estevam
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] i.MX6DL/S: add drive-strength back to pads DISP0_DAT2/DAT10

2013-09-13 Thread Otavio Salvador
On Fri, Sep 13, 2013 at 1:19 PM, Eric Nelson
eric.nel...@boundarydevices.com wrote:
 This patch fixes a regression introduced by commit 87d720e0.

 Signed-off-by: Eric Nelson eric.nel...@boundarydevices.com

Acked-by: Otavio Salvador ota...@ossystems.com.br


-- 
Otavio Salvador O.S. Systems
http://www.ossystems.com.brhttp://code.ossystems.com.br
Mobile: +55 (53) 9981-7854Mobile: +1 (347) 903-9750
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH RFC 0/22] i.MX6: Update pad declarations for multiple-arch binaries

2013-09-13 Thread Eric Nelson

On 09/01/2013 11:21 AM, Eric Nelson wrote:

Hi Stefano,

On 09/01/2013 10:08 AM, Stefano Babic wrote:

Hi Otavio,

On 31/08/2013 23:55, Otavio Salvador wrote:

On Sat, Aug 31, 2013 at 6:38 PM, Eric Nelson
eric.nel...@boundarydevices.com wrote:

The primary reason this patch set is sent as an RFC is the overall
feeling that there must be a better way and the fact that none of
these pads is actually used by any current code in U-Boot and the
vast majority of these changes will never do so (OBSERVABILITY
pads, for instance).


I think it is better to have all the pads there so we don't need to
always recheck if the pad is known or not and make changes on this all
the time.



I am not sure I have understood your sentence: what do you mean with
there ? Are you suggesting another place for the pads ?



Note that not all of the defined pad options are currently present
in these headers, including some that are being used by some down-stream
boards:
 
https://github.com/boundarydevices/u-boot-imx6/commit/b9a39fd1756ab95554f4c49b9cf1cde73a9dbda9

I'm taking a look at the XML files distributed as a part of the
IOMux tool to see if they can be used to produce a more complete set.



I finally took some time to walk through the XML files that are a
part of the IOMux tool (scraped through strings).

They seem to be more complete than any of the other canonical
sources, but only slightly so.

AFAIK, there are six main repositories of this pin-mux declarations.

-- Freescale's 2009.08 U-Boot has files mx6_pins.h for Dual/Quad,
and mx6dl_pins.h for Solo/Dual-Lite:

http://git.freescale.com/git/cgit.cgi/imx/uboot-imx.git/tree/include/asm-arm/arch-mx6?h=imx_v2009.08_3.0.35_4.1.0

-- Main-line U-Boot has files mx6q_pins.h for Quad/Dual and mx6dl_pins.h
for Dual-Lite/Solo:

http://git.denx.de/u-boot.git/?p=u-boot.git;a=tree;f=arch/arm/include/asm/arch-mx6;h=bec3aaf4de0813965b19bb6cf8a43b1c78f5e7f1;hb=HEAD

-- The main-line Linux kernel has files imx6q-pinfunc.h for Quad/Dual
and imx6dl-pinfunc.h for Dual-Lite/Solo:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts?id=refs/tags/v3.11

-- Freescale's 3.5.7 tree appears to share the headers with main-line.

http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/boot/dts?h=imx_3.5.7_1.0.0_alpha

-- Freescale's 3.0.35 tree has files iomux-mx6q.h for Quad/Dual and
iomux-mx6dl.h for Dual-Lite/Solo:
	 
http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/tree/arch/arm/plat-mxc/include/mach


Freescale's IOMux tool has two embedded XML files that describe all
of the pads, mux and pad registers :

https://www.freescale.com/webapp/sps/download/license.jsp?colCode=IMX6_IOMUX_TOOLappType=file1

The two U-Boot trees and the 3.0.35 Linux kernel appear to have
the same origins, and each seem to have extra declarations for
things that are unlikely to be used or are completely useless
like this declaration:

   MX6_PAD_DRAM_D40__MMDC_DRAM_D_40
  = IOMUX_PAD(NO_PAD_I, NO_MUX_I, 0, 0x, 0, 0),

If a pad has no mux or pad register, I don't think we need a
declaration.

The main-line Linux kernel appears to have been generated from
the IOMux tool (or a similar ancestor), though there are a number
of subtle differences, especially in the use of the _B suffix
on some declarations.

Comparing the two (IOMux and main-line) showed that some
pin muxing options aren't represented in main-line yet
and there are some declarations in main-line that I'm not
sure how to produce from the XML (those involving input-select
registers).

Shawn appears to have implemented things in a clean way
for the main-line kernel:

https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/arch/arm/boot/dts/imx6q-pinfunc.h?id=c56009b2f6134e5943a03cf26e4d7fce9745d56b

I recommend that we simply adopt the main-line kernel naming,
and work up a couple of initial patches:

1. simply replace all of the names with their main-line
equivalent, and
2. remove all of the unused (NO_PAD_I,NO_MUX_I) pad
declarations

Each of these should be easy to inspect for correctness
and then we can focus on how to handle the differences
and produce binaries that support both variants.

Let me know your thoughts.

Regards,


Eric
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v4 3/3] am335x_evm: enable DFU RAM

2013-09-13 Thread Afzal Mohammed
Enable DFU for RAM, provide example dfu_alt_info

Signed-off-by: Afzal Mohammed afzal.mohd...@gmail.com
Cc: Heiko Schocher h...@denx.de
Cc: Tom Rini tr...@ti.com
Cc: Marek Vasut ma...@denx.de
Cc: Lukasz Majewski l.majew...@samsung.com
Cc: Pantelis Antoniou pa...@antoniou-consulting.com
Reviewed-by: Lukasz Majewski l.majew...@samsung.com
---

v3: collected tag
v2: new

 include/configs/am335x_evm.h | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 3de30fc..978fdf9 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -100,6 +100,7 @@
loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0 \
importbootenv=echo Importing environment from mmc ...;  \
env import -t $loadaddr $filesize\0 \
+   dfu_alt_info_ram= DFU_ALT_INFO_RAM \0 \
ramargs=setenv bootargs console=${console}  \
${optargs}  \
root=${ramroot}  \
@@ -321,6 +322,11 @@
kernel part 0 8; \
rootfs part 0 9
 #endif
+#define CONFIG_DFU_RAM
+#define DFU_ALT_INFO_RAM \
+   kernel ram 0x8020 0xD8; \
+   fdt ram 0x80F8 0x8; \
+   ramdisk ram 0x8100 0x400
 
 /*
  * Default to using SPI for environment, etc.
-- 
1.8.2.135.g7b592fa

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v9 0/5] arm64 patch

2013-09-13 Thread FengHua



 -原始邮件-
 发件人: Wolfgang Denk w...@denx.de
 发送时间: 2013年9月14日 星期六
 收件人: feng...@phytium.com.cn
 抄送: u-boot@lists.denx.de, tr...@ti.com, albert.u.b...@aribaud.net, 
 scottw...@freescale.com
 主题: Re: [PATCH v9 0/5] arm64 patch
 
 Dear feng...@phytium.com.cn,
 
 In message 1379061539-38972-1-git-send-email-feng...@phytium.com.cn you 
 wrote:
  From: David Feng feng...@phytium.com.cn
  
  The porting has been merged with arm architecture.
  Most architecture codes are placed in
  arch/arm/cpu/armv8 directory. Generic board is also
  supported after a few bugs are fixed.
  u-boot could be running at EL1 or EL2.
  
  Changes for v8:
- add Signed-off-by information to patch board support of
  vexpress_aemv8a which SMC9 support is integrated
  from Sharma Bhupesh's patch.
- adjust pt_regs struct and add exception state
  preservation in exception.S.
 
 what exactly are the changes for V9 ?
 
The number is incorrect, the changes for v8 is actually for v9,
I will correct it in the next.

 Best regards, 
 
 Wolfgang Denk
 
 -- 
 DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
 HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
 Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: w...@denx.de
 Remember thee Ay, thou poor ghost while memory holds a seat  In  this
 distracted  globe.  Remember  thee!  Yea, from the table of my memory
 I'll wipe away all trivial fond  records,  All  saws  of  books,  all
 forms,  all  pressures past, That youth and observation copied there.
 Hamlet, I : v : 95 William Shakespeare






___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] Pull request: u-boot-mpc85xx

2013-09-13 Thread Tom Rini
On Thu, Sep 12, 2013 at 10:36:45AM -0700, York Sun wrote:

 Tom,
 
 The following changes since commit 985a71d15b8bd9cfbeae1ac1b08a5319abfd246c:
 
   Merge branch 'master' of git://www.denx.de/git/u-boot-ppc4xx
 (2013-09-09 09:59:30 -0400)
 
 are available in the git repository at:
 
 
   git://git.denx.de/u-boot-mpc85xx.git master
 
 for you to fetch changes up to 954a1a4776d135f2c6ee5276a96c0da71744cd6d:
 
   powerpc/mpc85xx: Add workaround for erratum A-005125 (2013-09-10
 14:31:47 -0700)
 
 
 Shaohui Xie (1):
   powerpc/p2041: fix I2C controller's offset
 
 York Sun (1):
   powerpc/mpc85xx: Add workaround for erratum A-005125
 
  arch/powerpc/cpu/mpc85xx/cmd_errata.c |3 +++
  arch/powerpc/cpu/mpc85xx/start.S  |8 
  arch/powerpc/include/asm/config_mpc85xx.h |   21 +
  include/configs/P2041RDB.h|4 ++--
  4 files changed, 34 insertions(+), 2 deletions(-)

Applied to u-boot/master, thanks!

-- 
Tom


signature.asc
Description: Digital signature
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot