Skip to contentSkip to conversation

Fixes on gdsys boards and some new functionality

PATCH Superseded dirk.eibach at gdsys.cc 6 participants 21 messages Jul 3, 2014 – Jul 4, 2014 I2C

v3 of 4 Superseded Latest is v4 →

lore
Share & tools
lore
#0 lore raw

v3 cover Fixes on gdsys boards and some new functionality

From: Dirk Eibach <[email protected]>

Changes in v3:
- describe ihs_i2c in README

Changes in v2:
- make sha256 support optional
- move ihs_i2c to drivers/i2c
- split unrelated changes
- use defines for I2C bus numbers

Dirk Eibach (13):
board: controlcenterd: Fix pci access
board: gdsys: Adapt sdhc_boot.c to mmc_get_env_addr API change
board: controlcenterd: Use new API for setting i2c bus
board: iocon: Support DisplayPort hardware
i2c: IHS I2C master driver
board: gdsys: Fix dlvision-10g I2C configuration
board: gdsys: Increase iocon and dlv10g version string
board: gdsys: Configure bridge on DP501 to support DDC only
board: gdsys: Make gdsys osd hardware detection more robust
board: gdsys: Enable scrambling on DP501
board: iocon: Modify iocon hardware startup
board: gdsys: Remove commands to reduce footprint
fit: make sha256 support optional

 README                                |  15 +++
 board/gdsys/405ep/iocon.c             |  14 ++-
 board/gdsys/common/Makefile           |   2 +-
 board/gdsys/common/dp501.c            |  35 ++++--
 board/gdsys/common/osd.c              | 189 +++++++++++++++----------------
 board/gdsys/p1022/controlcenterd-id.c |  13 ++-
 board/gdsys/p1022/controlcenterd.c    |   6 +-
 board/gdsys/p1022/sdhc_boot.c         |   2 +-
 drivers/i2c/Makefile                  |   1 +
 drivers/i2c/ihs_i2c.c                 | 203 ++++++++++++++++++++++++++++++++++
 include/configs/controlcenterd.h      |   7 +-
 include/configs/dlvision-10g.h        |  29 ++++-
 include/configs/io.h                  |   8 +-
 include/configs/iocon.h               |  35 ++++--
 include/configs/neo.h                 |   9 +-
 include/gdsys_fpga.h                  |  25 ++---
 include/image.h                       |   5 +
 17 files changed, 449 insertions(+), 149 deletions(-)
 create mode 100644 drivers/i2c/ihs_i2c.c
Signature · 1 line
1.8.3
#1 lore raw

PATCH v3 1/13 board: controlcenterd: Fix pci access

From: Dirk Eibach <[email protected]>

readl was called with values instead of pointers to these values. Why this ever did work is a mystery...

---

Changes in v3: None
Changes in v2: None

 board/gdsys/p1022/controlcenterd.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
board/gdsys/p1022/controlcenterd.c +3 -3
index 8ccd9ce..0a3517d 100644
@@ -386,9 +386,9 @@ static void hydra_initialize(void)
 		fpga = pci_map_bar(devno, PCI_BASE_ADDRESS_0,
 			PCI_REGION_MEM);
 
-		versions = readl(fpga->versions);
-		fpga_version = readl(fpga->fpga_version);
-		fpga_features = readl(fpga->fpga_features);
+		versions = readl(&fpga->versions);
+		fpga_version = readl(&fpga->fpga_version);
+		fpga_features = readl(&fpga->fpga_features);
 
 		hardware_version = versions & 0xf;
 		feature_uart_channels = (fpga_features >> 6) & 0x1f;
Signature · 1 line
1.8.3
#2 lore raw

PATCH v3 2/13 board: gdsys: Adapt sdhc_boot.c to mmc_get_env_addr API change

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

---

Changes in v3: None
Changes in v2: None

 board/gdsys/p1022/sdhc_boot.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
board/gdsys/p1022/sdhc_boot.c +1 -1
index e432318..fd0e910 100644
@@ -32,7 +32,7 @@
 #define ESDHC_BOOT_IMAGE_SIZE	0x48
 #define ESDHC_BOOT_IMAGE_ADDR	0x50
 
-int mmc_get_env_addr(struct mmc *mmc, u32 *env_addr)
+int mmc_get_env_addr(struct mmc *mmc, int copy, u32 *env_addr)
 {
 	u8 *tmp_buf;
 	u32 blklen, code_offset, code_len, n;
Signature · 1 line
1.8.3
#3 lore raw

PATCH v3 3/13 board: controlcenterd: Use new API for setting i2c bus

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

---

Changes in v3: None
Changes in v2:
- use defines for I2C bus numbers

 board/gdsys/p1022/controlcenterd-id.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
board/gdsys/p1022/controlcenterd-id.c +9 -4
index 3fca3c5..419fc2e 100644
@@ -86,6 +86,11 @@ enum {
 	ESDHC_BOOT_IMAGE_ENTRY_OFS	= 0x60,
 };
 
+enum {
+	I2C_SOC_0 = 0,
+	I2C_SOC_1 = 1,
+};
+
 struct key_program {
 	uint32_t magic;
 	uint32_t code_crc;
@@ -1156,7 +1161,7 @@ static void ccdm_hang(void)
 	int j;
 #endif
 
-	I2C_SET_BUS(0);
+	I2C_SET_BUS(I2C_SOC_0);
 	pca9698_direction_output(0x22, 0, 0); /* Finder */
 	pca9698_direction_output(0x22, 4, 0); /* Status */
 
@@ -1189,8 +1194,8 @@ int startup_ccdm_id_module(void)
 	int result = 0;
 	unsigned int orig_i2c_bus;
 
-	orig_i2c_bus = I2C_GET_BUS();
-	I2C_SET_BUS(1);
+	orig_i2c_bus = i2c_get_bus_num();
+	i2c_set_bus_num(I2C_SOC_1);
 
 	/* goto end; */
 
@@ -1216,7 +1221,7 @@ int startup_ccdm_id_module(void)
 failure:
 	result = 1;
 end:
-	I2C_SET_BUS(orig_i2c_bus);
+	i2c_set_bus_num(orig_i2c_bus);
 	if (result)
 		ccdm_hang();
 
Signature · 1 line
1.8.3
#4 lore raw

PATCH v3 4/13 board: iocon: Support DisplayPort hardware

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

There is a new iocon hardware flavor, supporting DisplayPort finally.

---

Changes in v3: None
Changes in v2: None

 board/gdsys/405ep/iocon.c   |  12 +++++
 board/gdsys/common/Makefile |   2 +-
 board/gdsys/common/dp501.c  |  33 +++++++++----
 board/gdsys/common/osd.c    | 112 ++++++++++++++++----------------------------
 include/configs/iocon.h     |   9 +++-
 5 files changed, 83 insertions(+), 85 deletions(-)
board/gdsys/405ep/iocon.c +12 -0
index 7a98e41..079dfb2 100644
@@ -15,6 +15,7 @@
 #include "405ep.h"
 #include <gdsys_fpga.h>
 
+#include "../common/dp501.h"
 #include "../common/osd.h"
 #include "../common/mclink.h"
 
@@ -98,6 +99,8 @@ enum {
 unsigned int mclink_fpgacount;
 struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
 
+int dp501_i2c[] = CONFIG_SYS_DP501_I2C;
+
 static int setup_88e1518(const char *bus, unsigned char addr);
 
 int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
@@ -371,9 +374,18 @@ int last_stage_init(void)
 	u16 fpga_features;
 	int feature_carrier_speed = fpga_features & (1<<4);
 	bool ch0_rgmii2_present = false;
+	int old_bus = i2c_get_bus_num();
 
 	FPGA_GET_REG(0, fpga_features, &fpga_features);
 
+	/* Turn on Parade DP501 */
+	pca9698_direction_output(0x20, 9, 1);
+	udelay(500000);
+
+	i2c_set_bus_num(dp501_i2c[0]);
+	dp501_powerup(0x08);
+	i2c_set_bus_num(old_bus);
+
 	if (!legacy)
 		ch0_rgmii2_present = !pca9698_get_value(0x20, 30);
 
board/gdsys/common/Makefile +1 -1
index fb841e0..7f8b427 100644
@@ -8,6 +8,6 @@
 obj-$(CONFIG_SYS_FPGA_COMMON) += fpga.o
 obj-$(CONFIG_IO) += miiphybb.o
 obj-$(CONFIG_IO64) += miiphybb.o
-obj-$(CONFIG_IOCON) += osd.o mclink.o
+obj-$(CONFIG_IOCON) += osd.o mclink.o dp501.o
 obj-$(CONFIG_DLVISION_10G) += osd.o
 obj-$(CONFIG_CONTROLCENTERD) += dp501.o
board/gdsys/common/dp501.c +23 -10
index 52f3ea1..e00e589 100644
@@ -60,8 +60,31 @@ void dp501_powerup(u8 addr)
 	i2c_reg_write(addr, 0x71, 0x20); /* Enable Aux burst write */
 	dp501_setbits(addr, 0x78, 0x30); /* Disable HPD2 IRQ */
 	dp501_clrbits(addr, 0x2f, 0x40); /* Link FIFO reset selection */
+
+#ifdef CONFIG_SYS_DP501_VCAPCTRL0
+	i2c_reg_write(addr, 0x24, CONFIG_SYS_DP501_VCAPCTRL0);
+#else
 	i2c_reg_write(addr, 0x24, 0xc0); /* SDR mode 0, ext. H/VSYNC */
+#endif
+
+#ifdef CONFIG_SYS_DP501_DIFFERENTIAL
+	i2c_reg_write(addr + 2, 0x24, 0x10); /* clock input differential */
+	i2c_reg_write(addr + 2, 0x25, 0x04);
+	i2c_reg_write(addr + 2, 0x26, 0x10);
+#else
 	i2c_reg_write(addr + 2, 0x24, 0x02); /* clock input single ended */
+#endif
+
+	i2c_reg_write(addr + 2, 0x00, 0x18); /* driving strength */
+	i2c_reg_write(addr + 2, 0x03, 0x06); /* driving strength */
+	i2c_reg_write(addr, 0x2c, 0x00); /* configure N value */
+	i2c_reg_write(addr, 0x2d, 0x00); /* configure N value */
+	i2c_reg_write(addr, 0x2e, 0x0c); /* configure N value */
+	i2c_reg_write(addr, 0x76, 0xff); /* clear all interrupt */
+	dp501_setbits(addr, 0x78, 0x03); /* clear all interrupt */
+	i2c_reg_write(addr, 0x75, 0xf8); /* aux channel reset */
+	i2c_reg_write(addr, 0x75, 0x00); /* clear aux channel reset */
+	i2c_reg_write(addr, 0x87, 0x70); /* set retry counter as 7 */
 
 	if (dp501_detect_cable_adapter(addr)) {
 		printf("DVI/HDMI cable adapter detected\n");
@@ -69,16 +92,6 @@ void dp501_powerup(u8 addr)
 		dp501_clrbits(addr, 0x00, 0x08); /* DVI/HDMI HDCP operation */
 	} else {
 		printf("no DVI/HDMI cable adapter detected\n");
-		i2c_reg_write(addr + 2, 0x00, 0x18); /* driving strength */
-		i2c_reg_write(addr + 2, 0x03, 0x06); /* driving strength */
-		i2c_reg_write(addr, 0x2c, 0x00); /* configure N value */
-		i2c_reg_write(addr, 0x2d, 0x00); /* configure N value */
-		i2c_reg_write(addr, 0x2e, 0x0c); /* configure N value */
-		i2c_reg_write(addr, 0x76, 0xff); /* clear all interrupt */
-		dp501_setbits(addr, 0x78, 0x03); /* clear all interrupt */
-		i2c_reg_write(addr, 0x75, 0xf8); /* aux channel reset */
-		i2c_reg_write(addr, 0x75, 0x00); /* clear aux channel reset */
-		i2c_reg_write(addr, 0x87, 0x70); /* set retry counter as 7 */
 		dp501_setbits(addr, 0x00, 0x08); /* for DP HDCP operation */
 
 		dp501_link_training(addr);
board/gdsys/common/osd.c +40 -72

196 lines not on this page · raw message

include/configs/iocon.h +7 -2
index f36c2a3..5636f38 100644
@@ -121,7 +121,9 @@
 #define CONFIG_SYS_I2C_SOFT_SPEED_4		50000
 #define CONFIG_SYS_I2C_SOFT_SLAVE_4		0x7F
 
+#define CONFIG_SYS_ICS8N3QV01_I2C		{1, 2, 3, 4}
 #define CONFIG_SYS_CH7301_I2C			{1, 2, 3, 4}
+#define CONFIG_SYS_DP501_I2C			{1, 2, 3, 4}
 
 #ifndef __ASSEMBLY__
 void fpga_gpio_set(unsigned int bus, int pin);
@@ -146,6 +148,8 @@ int fpga_gpio_get(unsigned int bus, int pin);
 			fpga_gpio_set(I2C_ADAP_HWNR, 0x0020); \
 		else \
 			fpga_gpio_clear(I2C_ADAP_HWNR, 0x0020); \
+		while (!!fpga_gpio_get(I2C_ADAP_HWNR, 0x0020) != !!bit) \
+			; \
 	} while (0)
 #define I2C_DELAY	udelay(25)	/* 1/4 I2C clock duration */
 
@@ -153,7 +157,6 @@ int fpga_gpio_get(unsigned int bus, int pin);
  * OSD hardware
  */
 #define CONFIG_SYS_MPC92469AC
-#define CONFIG_SYS_CH7301
 
 /*
  * FLASH organization
@@ -282,9 +285,11 @@ int fpga_gpio_get(unsigned int bus, int pin);
 /*
  * OSD Setup
  */
+#define CONFIG_SYS_ICS8N3QV01
 #define CONFIG_SYS_MPC92469AC
-#define CONFIG_SYS_CH7301
 #define CONFIG_SYS_OSD_SCREENS		1
+#define CONFIG_SYS_DP501_DIFFERENTIAL
+#define CONFIG_SYS_DP501_VCAPCTRL0	0x01 /* DDR mode 0, DE for H/VSYNC */
 
 #define CONFIG_BITBANGMII		/* bit-bang MII PHY management */
 #define CONFIG_BITBANGMII_MULTI
Signature · 1 line
1.8.3
#5 lore raw

PATCH v3 5/13 i2c: IHS I2C master driver

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

IHS I2C master support was merely a hack in the osd driver. Now it is a proper u-boot I2C framework driver, supporting the v2.00 master features.

---

Changes in v3:
- describe ihs_i2c in README

Changes in v2:
- move ihs_i2c to drivers/i2c
- split unrelated changes

 README                         |  15 +++
 drivers/i2c/Makefile           |   1 +
 drivers/i2c/ihs_i2c.c          | 204 +++++++++++++++++++++++++++++++++++++++++
 include/configs/dlvision-10g.h |  11 +++
 include/configs/iocon.h        |  23 ++++-
 include/gdsys_fpga.h           |  25 +++--
 6 files changed, 261 insertions(+), 18 deletions(-)
 create mode 100644 drivers/i2c/ihs_i2c.c
README +15 -0
index a248ab5..1fc8f00 100644
@@ -2268,6 +2268,21 @@ CBFS (Coreboot Filesystem) support
 		    9 i2c buses for Exynos4 and 1 for S3C24X0 SoCs from Samsung)
 		    with a fix speed from 100000 and the slave addr 0!
 
+		- drivers/i2c/ihs_i2c.c
+		  - activate this driver with CONFIG_SYS_I2C_IHS
+		  - CONFIG_SYS_I2C_IHS_CH0 activate hardware channel 0
+		  - CONFIG_SYS_I2C_IHS_SPEED_0 speed channel 0
+		  - CONFIG_SYS_I2C_IHS_SLAVE_0 slave addr channel 0
+		  - CONFIG_SYS_I2C_IHS_CH1 activate hardware channel 1
+		  - CONFIG_SYS_I2C_IHS_SPEED_1 speed channel 1
+		  - CONFIG_SYS_I2C_IHS_SLAVE_1 slave addr channel 1
+		  - CONFIG_SYS_I2C_IHS_CH2 activate hardware channel 2
+		  - CONFIG_SYS_I2C_IHS_SPEED_2 speed channel 2
+		  - CONFIG_SYS_I2C_IHS_SLAVE_2 slave addr channel 2
+		  - CONFIG_SYS_I2C_IHS_CH3 activate hardware channel 3
+		  - CONFIG_SYS_I2C_IHS_SPEED_3 speed channel 3
+		  - CONFIG_SYS_I2C_IHS_SLAVE_3 slave addr channel 3
+
 		additional defines:
 
 		CONFIG_SYS_NUM_I2C_BUSES
drivers/i2c/Makefile +1 -0
index e33586d..96bd45d 100644
@@ -18,6 +18,7 @@ obj-$(CONFIG_SYS_I2C) += i2c_core.o
 obj-$(CONFIG_SYS_I2C_DAVINCI) += davinci_i2c.o
 obj-$(CONFIG_SYS_I2C_FSL) += fsl_i2c.o
 obj-$(CONFIG_SYS_I2C_FTI2C010) += fti2c010.o
+obj-$(CONFIG_SYS_I2C_IHS) += ihs_i2c.o
 obj-$(CONFIG_SYS_I2C_KONA) += kona_i2c.o
 obj-$(CONFIG_SYS_I2C_MXC) += mxc_i2c.o
 obj-$(CONFIG_SYS_I2C_OMAP24XX) += omap24xx_i2c.o
drivers/i2c/ihs_i2c.c new file +204 -0

204 lines not on this page · raw message

include/configs/dlvision-10g.h +11 -0
index 7877897..05a97bf 100644
@@ -99,7 +99,18 @@
  */
 #define CONFIG_SYS_I2C_PPC4XX_SPEED_0		100000
 
+#define CONFIG_SYS_I2C_IHS
+#define CONFIG_SYS_I2C_IHS_CH0
+#define CONFIG_SYS_I2C_IHS_SPEED_0		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_0		0x7F
+#define CONFIG_SYS_I2C_IHS_CH1
+#define CONFIG_SYS_I2C_IHS_SPEED_1		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_1		0x7F
+
+#define CONFIG_SYS_SPD_BUS_NUM		2
+
 /* Temp sensor/hwmon/dtt */
+#define CONFIG_SYS_DTT_BUS_NUM	2
 #define CONFIG_DTT_LM63		1	/* National LM63	*/
 #define CONFIG_DTT_SENSORS	{ 0x4c, 0x4e, 0x18 } /* Sensor addresses */
 #define CONFIG_DTT_PWM_LOOKUPTABLE	\
include/configs/iocon.h +18 -5
index 5636f38..36b4b55 100644
@@ -99,12 +99,27 @@
 #define CONFIG_SYS_I2C_PPC4XX_CH0
 #define CONFIG_SYS_I2C_PPC4XX_SPEED_0		400000
 #define CONFIG_SYS_I2C_PPC4XX_SLAVE_0		0x7F
+#define CONFIG_SYS_I2C_IHS
 
 #define CONFIG_SYS_I2C_SPEED		400000
+#define CONFIG_SYS_SPD_BUS_NUM		4
 
 #define CONFIG_PCA953X			/* NXP PCA9554 */
 #define CONFIG_PCA9698			/* NXP PCA9698 */
 
+#define CONFIG_SYS_I2C_IHS_CH0
+#define CONFIG_SYS_I2C_IHS_SPEED_0		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_0		0x7F
+#define CONFIG_SYS_I2C_IHS_CH1
+#define CONFIG_SYS_I2C_IHS_SPEED_1		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_1		0x7F
+#define CONFIG_SYS_I2C_IHS_CH2
+#define CONFIG_SYS_I2C_IHS_SPEED_2		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_2		0x7F
+#define CONFIG_SYS_I2C_IHS_CH3
+#define CONFIG_SYS_I2C_IHS_SPEED_3		50000
+#define CONFIG_SYS_I2C_IHS_SLAVE_3		0x7F
+
 /*
  * Software (bit-bang) I2C driver configuration
  */
@@ -121,9 +136,9 @@
 #define CONFIG_SYS_I2C_SOFT_SPEED_4		50000
 #define CONFIG_SYS_I2C_SOFT_SLAVE_4		0x7F
 
-#define CONFIG_SYS_ICS8N3QV01_I2C		{1, 2, 3, 4}
-#define CONFIG_SYS_CH7301_I2C			{1, 2, 3, 4}
-#define CONFIG_SYS_DP501_I2C			{1, 2, 3, 4}
+#define CONFIG_SYS_ICS8N3QV01_I2C		{5, 6, 7, 8}
+#define CONFIG_SYS_CH7301_I2C			{5, 6, 7, 8}
+#define CONFIG_SYS_DP501_I2C			{0, 1, 2, 3}
 
 #ifndef __ASSEMBLY__
 void fpga_gpio_set(unsigned int bus, int pin);
@@ -148,8 +163,6 @@ int fpga_gpio_get(unsigned int bus, int pin);
 			fpga_gpio_set(I2C_ADAP_HWNR, 0x0020); \
 		else \
 			fpga_gpio_clear(I2C_ADAP_HWNR, 0x0020); \
-		while (!!fpga_gpio_get(I2C_ADAP_HWNR, 0x0020) != !!bit) \
-			; \
 	} while (0)
 #define I2C_DELAY	udelay(25)	/* 1/4 I2C clock duration */
 
include/gdsys_fpga.h +12 -13
index 85ddbcb..276a01e 100644
@@ -43,10 +43,12 @@ struct ihs_gpio {
 };
 
 struct ihs_i2c {
-	u16 write_mailbox;
+	u16 interrupt_status;
+	u16 interrupt_enable;
 	u16 write_mailbox_ext;
-	u16 read_mailbox;
+	u16 write_mailbox;
 	u16 read_mailbox_ext;
+	u16 read_mailbox;
 };
 
 struct ihs_osd {
@@ -84,7 +86,6 @@ struct ihs_fpga {
 #endif
 
 #ifdef CONFIG_IO64
-
 struct ihs_fpga_channel {
 	u16 status_int;
 	u16 config_int;
@@ -121,9 +122,9 @@ struct ihs_fpga {
 	u16 reserved_0[6];	/* 0x0008 */
 	struct ihs_gpio gpio;	/* 0x0014 */
 	u16 mpc3w_control;	/* 0x001a */
-	u16 reserved_1[19];	/* 0x001c */
-	u16 videocontrol;	/* 0x0042 */
-	u16 reserved_2[14];	/* 0x0044 */
+	u16 reserved_1[18];	/* 0x001c */
+	struct ihs_i2c i2c;	/* 0x0040 */
+	u16 reserved_2[10];	/* 0x004c */
 	u16 mc_int;		/* 0x0060 */
 	u16 mc_int_en;		/* 0x0062 */
 	u16 mc_status;		/* 0x0064 */
@@ -150,15 +151,13 @@ struct ihs_fpga {
 	u16 fpga_features;	/* 0x0006 */
 	u16 reserved_0[10];	/* 0x0008 */
 	u16 extended_interrupt; /* 0x001c */
-	u16 reserved_1[9];	/* 0x001e */
-	struct ihs_i2c i2c;	/* 0x0030 */
-	u16 reserved_2[16];	/* 0x0038 */
+	u16 reserved_1[29];	/* 0x001e */
 	u16 mpc3w_control;	/* 0x0058 */
-	u16 reserved_3[34];	/* 0x005a */
-	u16 videocontrol;	/* 0x009e */
-	u16 reserved_4[176];	/* 0x00a0 */
+	u16 reserved_2[3];	/* 0x005a */
+	struct ihs_i2c i2c;	/* 0x0060 */
+	u16 reserved_3[205];	/* 0x0066 */
 	struct ihs_osd osd;	/* 0x0200 */
-	u16 reserved_5[761];	/* 0x020e */
+	u16 reserved_4[761];	/* 0x020e */
 	u16 videomem[31736];	/* 0x0800 */
 };
 #endif
Signature · 1 line
1.8.3
#6 lore raw

PATCH v3 5/13 i2c: IHS I2C master driver

Hello Dirk,

Am 03.07.2014 08:27, schrieb dirk.eibach at gdsys.cc:

Quoted 17 lines

From: Dirk Eibach<[email protected]>

IHS I2C master support was merely a hack in the osd driver. Now it is a proper u-boot I2C framework driver, supporting the v2.00 master features.

---

Changes in v3:
- describe ihs_i2c in README

Changes in v2:
- move ihs_i2c to drivers/i2c
- split unrelated changes

Quoted 8 lines
  README                         |  15 +++
  drivers/i2c/Makefile           |   1 +
  drivers/i2c/ihs_i2c.c          | 204 +++++++++++++++++++++++++++++++++++++++++
  include/configs/dlvision-10g.h |  11 +++
  include/configs/iocon.h        |  23 ++++-
  include/gdsys_fpga.h           |  25 +++--
  6 files changed, 261 insertions(+), 18 deletions(-)

create mode 100644 drivers/i2c/ihs_i2c.c

Thanks!

bye,
Heiko

Signature · 2 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#7 lore raw

PATCH v3 6/13 board: gdsys: Fix dlvision-10g I2C configuration

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

PPC4xx config options were not complete. ICS8N3QV01 and SIL1178 needed some more configuration.

---

Changes in v3: None
Changes in v2: None

 include/configs/dlvision-10g.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
include/configs/dlvision-10g.h +8 -2
index 05a97bf..16895bf 100644
@@ -97,7 +97,10 @@
 /*
  * I2C stuff
  */
+#define CONFIG_SYS_I2C_PPC4XX
+#define CONFIG_SYS_I2C_PPC4XX_CH0
 #define CONFIG_SYS_I2C_PPC4XX_SPEED_0		100000
+#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0		0x7F
 
 #define CONFIG_SYS_I2C_IHS
 #define CONFIG_SYS_I2C_IHS_CH0
@@ -118,6 +121,11 @@
 		  { 54, 27 }, { 56, 31 }, { 58, 36 }, { 60, 40 } }
 #define CONFIG_DTT_TACH_LIMIT	0xa10
 
+#define CONFIG_SYS_ICS8N3QV01
+#define CONFIG_SYS_ICS8N3QV01_I2C	{0, 1}
+#define CONFIG_SYS_SIL1178
+#define CONFIG_SYS_SIL1178_I2C		{0, 1}
+
 /* EBC peripherals */
 
 #define CONFIG_SYS_FLASH_BASE		0xFC000000
@@ -317,9 +325,7 @@
 /*
  * OSD Setup
  */
-#define CONFIG_SYS_ICS8N3QV01
 #define CONFIG_SYS_MPC92469AC
-#define CONFIG_SYS_SIL1178
 #define CONFIG_SYS_OSD_SCREENS		CONFIG_SYS_FPGA_COUNT
 
 #endif	/* __CONFIG_H */
Signature · 1 line
1.8.3
#8 lore raw

PATCH v3 7/13 board: gdsys: Increase iocon and dlv10g version string

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

---

Changes in v3: None
Changes in v2: None

 include/configs/dlvision-10g.h | 2 +-
 include/configs/iocon.h        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
include/configs/dlvision-10g.h +1 -1
index 16895bf..c2289ce 100644
@@ -17,7 +17,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME		dlvsion-10g
-#define CONFIG_IDENT_STRING	" dlvision-10g 0.05"
+#define CONFIG_IDENT_STRING	" dlvision-10g 0.06"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
include/configs/iocon.h +1 -1
index 36b4b55..1aebab3 100644
@@ -17,7 +17,7 @@
  * Include common defines/options for all AMCC eval boards
  */
 #define CONFIG_HOSTNAME		iocon
-#define CONFIG_IDENT_STRING	" iocon 0.05"
+#define CONFIG_IDENT_STRING	" iocon 0.06"
 #include "amcc-common.h"
 
 #define CONFIG_BOARD_EARLY_INIT_F
Signature · 1 line
1.8.3
#9 lore raw

PATCH v3 8/13 board: gdsys: Configure bridge on DP501 to support DDC only

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

The I2C bridge on DP501 supports EDID, MCCS and HDCP by default. Allow EDID only to avoid I2C address conflicts.

---

Changes in v3: None
Changes in v2: None

 board/gdsys/common/dp501.c       | 1 +
 include/configs/controlcenterd.h | 7 ++++---
 2 files changed, 5 insertions(+), 3 deletions(-)
board/gdsys/common/dp501.c +1 -0
index e00e589..7958bae 100644
@@ -54,6 +54,7 @@ static void dp501_link_training(u8 addr)
 void dp501_powerup(u8 addr)
 {
 	dp501_clrbits(addr, 0x0a, 0x30); /* power on encoder */
+	dp501_setbits(addr, 0x0a, 0x0e); /* block HDCP and MCCS on I2C bride*/
 	i2c_reg_write(addr, 0x27, 0x30); /* Hardware auto detect DVO timing */
 	dp501_setbits(addr, 0x72, 0x80); /* DPCD read enable */
 	dp501_setbits(addr, 0x30, 0x20); /* RS polynomial select */
include/configs/controlcenterd.h +4 -3
index 868813f..ec3145f 100644
@@ -199,9 +199,10 @@
 #define CONFIG_SYS_FSL_I2C2_SPEED	400000
 #define CONFIG_SYS_FSL_I2C2_SLAVE	0x7F
 #define CONFIG_SYS_FSL_I2C2_OFFSET	0x3100
-/* Probing DP501 I2C-Bridge will hang */
-#define CONFIG_SYS_I2C_NOPROBES		{ {0, 0x30}, {0, 0x37}, {0, 0x3a}, \
-					  {0, 0x3b}, {0, 0x50} }
+
+#ifndef CONFIG_TRAILBLAZER
+#define CONFIG_CMD_I2C
+#endif
 
 #define CONFIG_PCA9698			/* NXP PCA9698 */
 
Signature · 1 line
1.8.3
#10 lore raw

PATCH v3 9/13 board: gdsys: Make gdsys osd hardware detection more robust

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

---

Changes in v3: None
Changes in v2: None

 board/gdsys/405ep/iocon.c      |  17 ++-----
 board/gdsys/common/osd.c       | 113 +++++++++++++++++++++++++++--------------
 drivers/i2c/ihs_i2c.c          |   1 -
 include/configs/dlvision-10g.h |   2 -
 include/configs/iocon.h        |   6 ---
 5 files changed, 79 insertions(+), 60 deletions(-)
board/gdsys/405ep/iocon.c +5 -12
index 079dfb2..6ae15e1 100644
@@ -15,7 +15,6 @@
 #include "405ep.h"
 #include <gdsys_fpga.h>
 
-#include "../common/dp501.h"
 #include "../common/osd.h"
 #include "../common/mclink.h"
 
@@ -99,8 +98,6 @@ enum {
 unsigned int mclink_fpgacount;
 struct ihs_fpga *fpga_ptr[] = CONFIG_SYS_FPGA_PTR;
 
-int dp501_i2c[] = CONFIG_SYS_DP501_I2C;
-
 static int setup_88e1518(const char *bus, unsigned char addr);
 
 int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data)
@@ -374,20 +371,16 @@ int last_stage_init(void)
 	u16 fpga_features;
 	int feature_carrier_speed = fpga_features & (1<<4);
 	bool ch0_rgmii2_present = false;
-	int old_bus = i2c_get_bus_num();
 
 	FPGA_GET_REG(0, fpga_features, &fpga_features);
 
-	/* Turn on Parade DP501 */
-	pca9698_direction_output(0x20, 9, 1);
-	udelay(500000);
-
-	i2c_set_bus_num(dp501_i2c[0]);
-	dp501_powerup(0x08);
-	i2c_set_bus_num(old_bus);
+	if (!legacy) {
+		/* Turn on Parade DP501 */
+		pca9698_direction_output(0x20, 9, 1);
+		udelay(500000);
 
-	if (!legacy)
 		ch0_rgmii2_present = !pca9698_get_value(0x20, 30);
+	}
 
 	print_fpga_info(0, ch0_rgmii2_present);
 	osd_probe(0);
board/gdsys/common/osd.c +74 -39

168 lines not on this page · raw message

drivers/i2c/ihs_i2c.c +0 -1
index ecc5856..fe66ce2 100644
@@ -34,7 +34,6 @@ static int wait_for_int(bool read)
 	       | (read ? I2CINT_RECEIVE_EV : I2CINT_TRANSMIT_EV)))) {
 		udelay(10);
 		if (ctr++ > 5000) {
-			printf("I2C timeout\n");
 			return 1;
 		}
 		FPGA_GET_REG(I2C_ADAP_HWNR, i2c.interrupt_status, &val);
include/configs/dlvision-10g.h +0 -2
index c2289ce..08ab5c3 100644
@@ -121,9 +121,7 @@
 		  { 54, 27 }, { 56, 31 }, { 58, 36 }, { 60, 40 } }
 #define CONFIG_DTT_TACH_LIMIT	0xa10
 
-#define CONFIG_SYS_ICS8N3QV01
 #define CONFIG_SYS_ICS8N3QV01_I2C	{0, 1}
-#define CONFIG_SYS_SIL1178
 #define CONFIG_SYS_SIL1178_I2C		{0, 1}
 
 /* EBC peripherals */
include/configs/iocon.h +0 -6
index 1aebab3..1836d12 100644
@@ -167,11 +167,6 @@ int fpga_gpio_get(unsigned int bus, int pin);
 #define I2C_DELAY	udelay(25)	/* 1/4 I2C clock duration */
 
 /*
- * OSD hardware
- */
-#define CONFIG_SYS_MPC92469AC
-
-/*
  * FLASH organization
  */
 #define CONFIG_SYS_FLASH_CFI		/* The flash is CFI compatible	*/
@@ -298,7 +293,6 @@ int fpga_gpio_get(unsigned int bus, int pin);
 /*
  * OSD Setup
  */
-#define CONFIG_SYS_ICS8N3QV01
 #define CONFIG_SYS_MPC92469AC
 #define CONFIG_SYS_OSD_SCREENS		1
 #define CONFIG_SYS_DP501_DIFFERENTIAL
Signature · 1 line
1.8.3
#11 lore raw

PATCH v3 10/13 board: gdsys: Enable scrambling on DP501

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

For proper displayport performance, scrambling has to be enabled, but is turned off on DP501 by default.

---

Changes in v3: None
Changes in v2: None

 board/gdsys/common/dp501.c | 1 +
 1 file changed, 1 insertion(+)
board/gdsys/common/dp501.c +1 -0
index 7958bae..7eb15ed 100644
@@ -61,6 +61,7 @@ void dp501_powerup(u8 addr)
 	i2c_reg_write(addr, 0x71, 0x20); /* Enable Aux burst write */
 	dp501_setbits(addr, 0x78, 0x30); /* Disable HPD2 IRQ */
 	dp501_clrbits(addr, 0x2f, 0x40); /* Link FIFO reset selection */
+	dp501_clrbits(addr, 0x60, 0x20); /* Enable scrambling */
 
 #ifdef CONFIG_SYS_DP501_VCAPCTRL0
 	i2c_reg_write(addr, 0x24, CONFIG_SYS_DP501_VCAPCTRL0);
Signature · 1 line
1.8.3
#12 lore raw

PATCH v3 11/13 board: iocon: Modify iocon hardware startup

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

To avoid peer "ChReceivePathStatus"-messages on iocon startup, initialize PHYs as soon as possible.

---

Changes in v3: None
Changes in v2: None

 board/gdsys/405ep/iocon.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
board/gdsys/405ep/iocon.c +4 -5
index 6ae15e1..1bac970 100644
@@ -377,14 +377,10 @@ int last_stage_init(void)
 	if (!legacy) {
 		/* Turn on Parade DP501 */
 		pca9698_direction_output(0x20, 9, 1);
-		udelay(500000);
 
 		ch0_rgmii2_present = !pca9698_get_value(0x20, 30);
 	}
 
-	print_fpga_info(0, ch0_rgmii2_present);
-	osd_probe(0);
-
 	/* wait for FPGA done */
 	for (k = 0; k < ARRAY_SIZE(mclink_controllers); ++k) {
 		unsigned int ctr = 0;
@@ -413,13 +409,16 @@ int last_stage_init(void)
 		}
 	}
 
-	/* wait for slave-PLLs to be up and running */
+	/* give slave-PLLs and Parade DP501 some time to be up and running */
 	udelay(500000);
 
 	mclink_fpgacount = CONFIG_SYS_MCLINK_MAX;
 	slaves = mclink_probe();
 	mclink_fpgacount = 0;
 
+	print_fpga_info(0, ch0_rgmii2_present);
+	osd_probe(0);
+
 	if (slaves <= 0)
 		return 0;
 
Signature · 1 line
1.8.3
#13 lore raw

PATCH v3 12/13 board: gdsys: Remove commands to reduce footprint

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

Commit "2842c1c fit: add sha256 support" badly increased memory footprint, so some of our boards did not build anymore. Since monitor base must not be changed I removed some commands to save memory.

Maybe making sha256 optional for fit would be an option for the future since it really has some beefy footprint.

---

Changes in v3: None
Changes in v2: None

 include/configs/dlvision-10g.h | 7 ++++++-
 include/configs/io.h           | 7 ++++++-
 include/configs/iocon.h        | 4 ++++
 include/configs/neo.h          | 8 ++++++--
 4 files changed, 22 insertions(+), 4 deletions(-)
include/configs/dlvision-10g.h +6 -1
index 08ab5c3..2567a22 100644
@@ -64,9 +64,14 @@
 /*
  * Commands additional to the ones defined in amcc-common.h
  */
-#define CONFIG_CMD_CACHE
 #define CONFIG_CMD_DTT
+#undef CONFIG_CMD_DHCP
+#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
+#undef CONFIG_CMD_ELF
+#undef CONFIG_CMD_I2C
+#undef CONFIG_CMD_IRQ
+#undef CONFIG_CMD_NFS
 
 /*
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
include/configs/io.h +6 -1
index 9da6cc6..649c0fb 100644
@@ -64,9 +64,14 @@
 /*
  * Commands additional to the ones defined in amcc-common.h
  */
-#define CONFIG_CMD_CACHE
 #define CONFIG_CMD_DTT
+#undef CONFIG_CMD_DHCP
+#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
+#undef CONFIG_CMD_ELF
+#undef CONFIG_CMD_I2C
+#undef CONFIG_CMD_IRQ
+#undef CONFIG_CMD_NFS
 
 /*
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
include/configs/iocon.h +4 -0
index 1836d12..35ba1bd 100644
@@ -64,6 +64,10 @@
 #define CONFIG_CMD_CACHE
 #define CONFIG_CMD_FPGAD
 #undef CONFIG_CMD_EEPROM
+#undef CONFIG_CMD_ELF
+#undef CONFIG_CMD_I2C
+#undef CONFIG_CMD_IRQ
+#undef CONFIG_CMD_NFS
 
 /*
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
include/configs/neo.h +6 -2
index d549985..75dc862 100644
@@ -61,10 +61,14 @@
 /*
  * Commands additional to the ones defined in amcc-common.h
  */
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_DATE
 #define CONFIG_CMD_DTT
+#undef CONFIG_CMD_DHCP
+#undef CONFIG_CMD_DIAG
 #undef CONFIG_CMD_EEPROM
+#undef CONFIG_CMD_ELF
+#undef CONFIG_CMD_I2C
+#undef CONFIG_CMD_IRQ
+#undef CONFIG_CMD_NFS
 
 /*
  * SDRAM configuration (please see cpu/ppc/sdram.[ch])
Signature · 1 line
1.8.3
#14 lore raw

PATCH v3 13/13 fit: make sha256 support optional

In reply to dirk.eibach at gdsys.cc

From: Dirk Eibach <[email protected]>

sha256 has some beefy memory footprint.
Make it optional for constrained systems.

---

Changes in v3: None
Changes in v2:
- make sha256 support optional

 include/configs/dlvision-10g.h | 1 +
 include/configs/io.h           | 1 +
 include/configs/iocon.h        | 1 +
 include/configs/neo.h          | 1 +
 include/image.h                | 5 +++++
 5 files changed, 9 insertions(+)
include/configs/dlvision-10g.h +1 -0
index 2567a22..6153a40 100644
@@ -40,6 +40,7 @@
 /* new uImage format support */
 #define CONFIG_FIT
 #define CONFIG_FIT_VERBOSE	/* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_DISABLE_SHA256
 
 #define CONFIG_ENV_IS_IN_FLASH	/* use FLASH for environment vars */
 
include/configs/io.h +1 -0
index 649c0fb..8e32c25 100644
@@ -40,6 +40,7 @@
 /* new uImage format support */
 #define CONFIG_FIT
 #define CONFIG_FIT_VERBOSE	/* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_DISABLE_SHA256
 
 #define CONFIG_ENV_IS_IN_FLASH	/* use FLASH for environment vars */
 
include/configs/iocon.h +1 -0
index 35ba1bd..ae05bcb 100644
@@ -39,6 +39,7 @@
 /* new uImage format support */
 #define CONFIG_FIT
 #define CONFIG_FIT_VERBOSE	/* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_DISABLE_SHA256
 
 #define CONFIG_ENV_IS_IN_FLASH	/* use FLASH for environment vars */
 
include/configs/neo.h +1 -0
index 75dc862..4937730 100644
@@ -37,6 +37,7 @@
 /* new uImage format support */
 #define CONFIG_FIT
 #define CONFIG_FIT_VERBOSE	/* enable fit_format_{error,warning}() */
+#define CONFIG_FIT_DISABLE_SHA256
 
 #define CONFIG_ENV_IS_IN_FLASH	/* use FLASH for environment vars */
 
include/image.h +5 -0
index b71e4ba..61d5885 100644
@@ -72,6 +72,11 @@ struct lmb;
 #  define IMAGE_ENABLE_SHA256	1
 # endif
 
+#ifdef CONFIG_FIT_DISABLE_SHA256
+#undef CONFIG_SHA256
+#undef IMAGE_ENABLE_SHA256
+#endif
+
 #ifndef IMAGE_ENABLE_CRC32
 #define IMAGE_ENABLE_CRC32	0
 #endif
Signature · 1 line
1.8.3
#15 lore raw

PATCH v3 13/13 fit: make sha256 support optional

Hello Dirk,

Am 03.07.2014 08:27, schrieb dirk.eibach at gdsys.cc:

Quoted 13 lines

From: Dirk Eibach<[email protected]>

sha256 has some beefy memory footprint.
Make it optional for constrained systems.

---

Changes in v3: None
Changes in v2:
- make sha256 support optional

Quoted 6 lines
  include/configs/dlvision-10g.h | 1 +
  include/configs/io.h           | 1 +
  include/configs/iocon.h        | 1 +
  include/configs/neo.h          | 1 +
  include/image.h                | 5 +++++
  5 files changed, 9 insertions(+)

Sorry, some nitpick. As you introduce here the new define "CONFIG_FIT_DISABLE_SHA256", can you please add a short description in the README, thanks!

bye,
Heiko

Signature · 2 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#16 lore raw

PATCH v3 13/13 fit: make sha256 support optional

Hi,

Quoted 26 lines · Heiko Schocher

Hello Dirk,

Am 03.07.2014 08:27, schrieb dirk.eibach at gdsys.cc:

Quoted 13 lines

From: Dirk Eibach<[email protected]>

sha256 has some beefy memory footprint.
Make it optional for constrained systems.

---

Changes in v3: None
Changes in v2:
- make sha256 support optional

Quoted 6 lines
  include/configs/dlvision-10g.h | 1 +
  include/configs/io.h           | 1 +
  include/configs/iocon.h        | 1 +
  include/configs/neo.h          | 1 +
  include/image.h                | 5 +++++
  5 files changed, 9 insertions(+)
Quoted 2 lines

Sorry, some nitpick. As you introduce here the new define "CONFIG_FIT_DISABLE_SHA256", can you please add a short description in the README, thanks!

I wonder if it would be better to make the option off by default? You could perhaps use the existing CONFIG_SHA256 option, and check in image.h to enable/disable support.

Heiko what do you think?

Regards.
Simon

#17 lore raw

PATCH v3 13/13 fit: make sha256 support optional

Quoted 29 lines · Simon Glass

Hi,

Quoted 26 lines · Heiko Schocher

Hello Dirk,

Am 03.07.2014 08:27, schrieb dirk.eibach at gdsys.cc:

Quoted 19 lines

From: Dirk Eibach<[email protected]>

sha256 has some beefy memory footprint.
Make it optional for constrained systems.

---

Changes in v3: None
Changes in v2:
- make sha256 support optional

  include/configs/dlvision-10g.h | 1 +
  include/configs/io.h           | 1 +
  include/configs/iocon.h        | 1 +
  include/configs/neo.h          | 1 +
  include/image.h                | 5 +++++
  5 files changed, 9 insertions(+)
Quoted 8 lines
Quoted 2 lines

Sorry, some nitpick. As you introduce here the new define "CONFIG_FIT_DISABLE_SHA256", can you please add a short description in the README, thanks!

I wonder if it would be better to make the option off by default? You could perhaps use the existing CONFIG_SHA256 option, and check in image.h to enable/disable support.

Heiko what do you think?

I think I like this unless there's a problem...

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140703/6ae56289/attachment.pgp>
#18 lore raw

PATCH v3 13/13 fit: make sha256 support optional

Hello Dirk, Tom, Simon,

Am 03.07.2014 21:17, schrieb Tom Rini:

Quoted 30 lines · Simon Glass
Quoted 29 lines

Hi,

Quoted 26 lines · Heiko Schocher

Hello Dirk,

Am 03.07.2014 08:27, schrieb dirk.eibach at gdsys.cc:

Quoted 19 lines

From: Dirk Eibach<[email protected]>

sha256 has some beefy memory footprint.
Make it optional for constrained systems.

---

Changes in v3: None
Changes in v2:
- make sha256 support optional

   include/configs/dlvision-10g.h | 1 +
   include/configs/io.h           | 1 +
   include/configs/iocon.h        | 1 +
   include/configs/neo.h          | 1 +
   include/image.h                | 5 +++++
   5 files changed, 9 insertions(+)
Quoted 8 lines
Quoted 8 lines
Quoted 2 lines

Sorry, some nitpick. As you introduce here the new define "CONFIG_FIT_DISABLE_SHA256", can you please add a short description in the README, thanks!

I wonder if it would be better to make the option off by default? You could perhaps use the existing CONFIG_SHA256 option, and check in image.h to enable/disable support.

Heiko what do you think?

Yes, that would be good, it would safe a lot of code ...

Quoted 1 line

I think I like this unless there's a problem...

... IIRC, as I did the sha256-rsa2048, sha256-rsa4096 adaptions, I had this in mind, but there was a problem or just forgot it to do it at the end ... so I just tried to compile the ids8313 board with having this options off by default, precisly on current mainline I did:

$ git diff
include/image.h +3 -0
index 0a072f5..389423e 100644
@@ -72,6 +72,9 @@ struct lmb;
  #  define IMAGE_ENABLE_SHA256  1
  # endif
 
+#undef CONFIG_SHA256
+#undef IMAGE_ENABLE_SHA256
+
  #ifndef IMAGE_ENABLE_CRC32
  #define IMAGE_ENABLE_CRC32     0
  #endif

-------------------------------------------------------

make mrproper
make ids8313_config
make CROSS_COMPILE=powerpc-linux- env
make CROSS_COMPILE=powerpc-linux- cross_tools

works without errors, but

$ ./MAKEALL ids8313
Configuring for ids8313 - Board: ids8313, Options: SYS_TEXT_BASE=0xFFF00000
powerpc-linux-size: './u-boot': No such file
lib/built-in.o: In function `sha256_calculate':
/home/hs/ids/u-boot/lib/rsa/rsa-checksum.c:159: undefined reference to `sha256_starts'
/home/hs/ids/u-boot/lib/rsa/rsa-checksum.c:161: undefined reference to `sha256_update'
/home/hs/ids/u-boot/lib/rsa/rsa-checksum.c:162: undefined reference to `sha256_finish'
make: *** [u-boot] Fehler 1

same for am335x_boneblack_vboot, sandbox.

So there must be also looked at this sha256_calculate() in lib/rsa/rsa-checksum.c and common/image-sig.c checksum_algos[] and image_sig_algos[] must be adjusted, reworked ...

If we do this for CONFIG_SHA256 I vote for doing this for all checksum algorithms ... and we must look to the boards, which use FIT support, that we enable all options bayk they use again.

bye,
Heiko

Signature · 2 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
#19 lore raw

PATCH v3 13/13 fit: make sha256 support optional

In reply to Tom Rini

Whatever we do: we have some broken boards, so please let us fix it before next release.
I am off on vacation now. If necessary simply drop this patch from the series.

Cheers
Dirk