Add support for GE PPD
Subsystems (7)
v5 cover Add support for GE PPD
*** Resend due to previous use of unsubscribed email address ***
This series adds support for the GE PPD. The initial patches in this series resolve issues found during development and testing, extend existing support and add new support for devices in the PPD. The final patch in the series adds the board support for the PPD.
Ian Ray (2):
ext4: recover from filesystem corruption when reading
bootcount: add support for bootcounter on EXT filesystem
Martyn Welch (3):
pwm: imx: Enable PWM support on i.MX53
arm: mx5: Add more register definitions
board: ge: make VPD code common
Nandor Han (2):
imx: mxc_i2c: tweak the i2c transfer method
rtc: add support for s35392a
Peter Senna Tschudin (1):
mx53: Add Board support for GE PPD
README | 7 + arch/arm/include/asm/arch-mx5/crm_regs.h | 8 + arch/arm/include/asm/arch-mx5/imx-regs.h | 50 ++++ arch/arm/mach-imx/mx5/Kconfig | 7 + board/ge/bx50v3/Makefile | 2 +- board/ge/bx50v3/bx50v3.c | 2 +- board/ge/bx50v3/vpd_reader.c | 228 --------------- board/ge/bx50v3/vpd_reader.h | 25 -- board/ge/common/Makefile | 7 + board/ge/common/vpd_reader.c | 197 +++++++++++++ board/ge/common/vpd_reader.h | 17 ++ board/ge/mx53ppd/Kconfig | 17 ++ board/ge/mx53ppd/MAINTAINERS | 7 + board/ge/mx53ppd/Makefile | 12 + board/ge/mx53ppd/imximage.cfg | 87 ++++++ board/ge/mx53ppd/mx53ppd.c | 457 +++++++++++++++++++++++++++++++ board/ge/mx53ppd/mx53ppd_video.c | 135 +++++++++ board/ge/mx53ppd/ppd_gpio.h | 96 +++++++ configs/mx53ppd_defconfig | 39 +++ drivers/Kconfig | 2 + drivers/bootcount/Kconfig | 58 ++++ drivers/bootcount/Makefile | 1 + drivers/bootcount/bootcount_ext.c | 62 +++++ drivers/i2c/mxc_i2c.c | 25 +- drivers/pwm/pwm-imx-util.c | 2 + drivers/rtc/Kconfig | 6 + drivers/rtc/Makefile | 1 + drivers/rtc/s35392a.c | 365 ++++++++++++++++++++++++ fs/ext4/ext4_common.c | 10 + fs/ext4/ext4fs.c | 10 +- include/configs/mx53ppd.h | 248 +++++++++++++++++ lib/Kconfig | 3 + 32 files changed, 1927 insertions(+), 266 deletions(-) delete mode 100644 board/ge/bx50v3/vpd_reader.c delete mode 100644 board/ge/bx50v3/vpd_reader.h create mode 100644 board/ge/common/Makefile create mode 100644 board/ge/common/vpd_reader.c create mode 100644 board/ge/common/vpd_reader.h create mode 100644 board/ge/mx53ppd/Kconfig create mode 100644 board/ge/mx53ppd/MAINTAINERS create mode 100644 board/ge/mx53ppd/Makefile create mode 100644 board/ge/mx53ppd/imximage.cfg create mode 100644 board/ge/mx53ppd/mx53ppd.c create mode 100644 board/ge/mx53ppd/mx53ppd_video.c create mode 100644 board/ge/mx53ppd/ppd_gpio.h create mode 100644 configs/mx53ppd_defconfig create mode 100644 drivers/bootcount/Kconfig create mode 100644 drivers/bootcount/bootcount_ext.c create mode 100644 drivers/rtc/s35392a.c create mode 100644 include/configs/mx53ppd.h
Signature · 1 line
2.1.4
PATCH v5 1/8 imx: mxc_i2c: tweak the i2c transfer method
From: Nandor Han <[email protected]>
Tweak the i2c transfer to work for devices that want to read data without addressing a register.
---
Changes for v2:
- Replacing '!= -1' with '>= 0'.
drivers/i2c/mxc_i2c.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)
drivers/i2c/mxc_i2c.c +15 -10
@@ -317,16 +317,19 @@ static int i2c_init_transfer_(struct mxc_i2c_bus *i2c_bus, u8 chip, temp |=I2CR_MTX |I2CR_TX_NO_AK ;writeb (temp, base + (I2CR << reg_shift)); -/* write slave address */ - ret =tx_byte (i2c_bus, chip <<1 ); -if (ret <0 ) -return ret; - -while (alen--) { - ret =tx_byte (i2c_bus, (addr >> (alen *8 )) &0xff ); +if (alen >=0 ) { +/* write slave address */ + ret =tx_byte (i2c_bus, chip <<1 );if (ret <0 )return ret; + +while (alen--) { + ret =tx_byte (i2c_bus, (addr >> (alen *8 )) &0xff ); +if (ret <0 ) +return ret; + } } +return 0 ; }
@@ -537,9 +540,11 @@ static int bus_i2c_read(struct mxc_i2c_bus *i2c_bus, u8 chip, u32 addr,if (ret <0 )return ret; - temp =readb (base + (I2CR << reg_shift)); - temp |=I2CR_RSTA ; -writeb (temp, base + (I2CR << reg_shift)); +if (alen >=0 ) { + temp =readb (base + (I2CR << reg_shift)); + temp |=I2CR_RSTA ; +writeb (temp, base + (I2CR << reg_shift)); + } ret =tx_byte (i2c_bus, (chip <<1 ) |1 );if (ret <0 ) {
Signature · 1 line
2.1.4
PATCH v5 2/8 ext4: recover from filesystem corruption when reading
In reply to Martyn WelchFrom: Ian Ray <[email protected]>
Some fixes when reading EXT files and directory entries were identified after using e2fuzz to corrupt an EXT3 filesystem:
- Stop reading directory entries if the offset becomes badly aligned.
- Avoid overwriting memory by clamping the length used to zero the buffer in ext4fs_read_file. Also sanity check blocksize.
--- fs/ext4/ext4_common.c | 10 ++++++++++ fs/ext4/ext4fs.c | 10 +++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)
fs/ext4/ext4_common.c +10 -0
@@ -660,6 +660,11 @@ static int search_dir(struct ext2_inode *parent_inode, char *dirname) offset =0 ; do { + if (offset & 3) { + printf("Badly aligned ext2_dirent\n"); + break; + } + dir = (struct ext2_dirent *)(block_buffer + offset); direntname = (char*)(dir) + sizeof(struct ext2_dirent);
@@ -880,6 +885,11 @@ static int unlink_filename(char *filename, unsigned int blknr) offset =0 ; do { + if (offset & 3) { + printf("Badly aligned ext2_dirent\n"); + break; + } + previous_dir = dir; dir = (struct ext2_dirent *)(block_buffer + offset); direntname = (char *)(dir) + sizeof(struct ext2_dirent);
fs/ext4/ext4fs.c +9 -1
@@ -64,6 +64,9 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,char *delayed_buf =NULL ;short status; +if (blocksize <=0 ) +return -1 ; +/* Adjust len so it we can't read past the end of the file. */ if (len + pos > filesize) len = (filesize - pos);
@@ -127,6 +130,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, (blockend >> log2blksz); } }else { +int n;if (previous_block_number !=-1 ) {/* spill */ status = ext4fs_devread(delayed_start,
@@ -137,7 +141,11 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,return -1 ; previous_block_number =-1 ; } -memset (buf,0 , blocksize - skipfirst); +/* Zero no more than `len' bytes. */ + n = blocksize - skipfirst; +if (n > len) + n = len; +memset (buf,0 , n); } buf += blocksize - skipfirst; }
Signature · 1 line
2.1.4
PATCH v5 2/8 ext4: recover from filesystem corruption when reading
Quoted 71 lines · Martyn Welch
From: Ian Ray <[email protected]>
Some fixes when reading EXT files and directory entries were identified after using e2fuzz to corrupt an EXT3 filesystem:
- Stop reading directory entries if the offset becomes badly aligned.
- Avoid overwriting memory by clamping the length used to zero the buffer in
ext4fs_read_file. Also sanity check blocksize.Signed-off-by Ian Ray <[email protected]>Signed-off-by Martyn Welch <[email protected]>--- fs/ext4/ext4_common.c | 10 ++++++++++ fs/ext4/ext4fs.c | 10 +++++++++- 2 files changed, 19 insertions(+), 1 deletion(-)fs/ext4/ext4_common.c +10
-0@@ -660,6 +660,11 @@ static int search_dir(struct ext2_inode *parent_inode, char *dirname) offset =0 ; do { + if (offset & 3) { + printf("Badly aligned ext2_dirent\n"); + break; + } + dir = (struct ext2_dirent *)(block_buffer + offset); direntname = (char*)(dir) + sizeof(struct ext2_dirent);@@ -880,6 +885,11 @@ static int unlink_filename(char *filename, unsigned int blknr) offset =0 ; do { + if (offset & 3) { + printf("Badly aligned ext2_dirent\n"); + break; + } + previous_dir = dir; dir = (struct ext2_dirent *)(block_buffer + offset); direntname = (char *)(dir) + sizeof(struct ext2_dirent);fs/ext4/ext4fs.c +4
-0@@ -64,6 +64,9 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,char *delayed_buf =NULL ;short status; +if (blocksize <=0 ) +return -1 ; +/* Adjust len so it we can't read past the end of the file. */ if (len + pos > filesize) len = (filesize - pos);@@ -127,6 +130,7 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, (blockend >> log2blksz); } }else { +int n;if (previous_block_number !=-1 ) {/* spill */ status = ext4fs_devread(delayed_start,@@ -137,7 +141,11 @@ int ext4fs_read_file(struct ext2fs_node *node, loff_t pos,return -1 ; previous_block_number =-1 ;
fs/ext4/ext4fs.c int ext4fs_read_file(struct ext2fs_node *node, loff_t pos, · line 151
Quoted 10 lines
fs/ext4/ext4fs.c +5
-1} -memset (buf,0 , blocksize - skipfirst); +/* Zero no more than `len' bytes. */ + n = blocksize - skipfirst; +if (n > len) + n = len; +memset (buf,0 , n); } buf += blocksize - skipfirst; }
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v5 3/8 pwm: imx: Enable PWM support on i.MX53
In reply to Martyn WelchAdd missing parts for i.MX53 PWM support
---
Changes for v4:
- Removed ifdef.
arch/arm/include/asm/arch-mx5/imx-regs.h | 17 +++++++++++++++++ drivers/pwm/pwm-imx-util.c | 2 ++ 2 files changed, 19 insertions(+)
arch/arm/include/asm/arch-mx5/imx-regs.h +17 -0
@@ -508,6 +508,23 @@ struct fuse_bank4_regs { };#endif +#define PWMCR_PRESCALER (x) (((x - 1) & 0xFFF) << 4) +#define PWMCR_DOZEEN (1 << 24) +#define PWMCR_WAITEN (1 << 23) +#define PWMCR_DBGEN (1 << 22) +#define PWMCR_CLKSRC_IPG_HIGH (2 << 16) +#define PWMCR_CLKSRC_IPG (1 << 16) +#define PWMCR_EN (1 << 0) + +struct pwm_regs { +u32 cr; +u32 sr; +u32 ir; +u32 sar; +u32 pr; +u32 cnr; +}; +#endif /* __ASSEMBLER__*/ #endif /* __ASM_ARCH_MX5_IMX_REGS_H__ */
drivers/pwm/pwm-imx-util.c +2 -0
@@ -23,10 +23,12 @@ struct pwm_regs *pwm_id_to_reg(int pwm_id)return (struct pwm_regs *)PWM1_BASE_ADDR ;case 1 :return (struct pwm_regs *)PWM2_BASE_ADDR ; +#ifdef CONFIG_MX6 case 2 :return (struct pwm_regs *)PWM3_BASE_ADDR ;case 3 :return (struct pwm_regs *)PWM4_BASE_ADDR ; +#endif #ifdef CONFIG_MX6SX case 4 :return (struct pwm_regs *)PWM5_BASE_ADDR ;
Signature · 1 line
2.1.4
PATCH v5 3/8 pwm: imx: Enable PWM support on i.MX53
Quoted 49 lines · Martyn Welch
Add missing parts for i.MX53 PWM support
Acked-by Nandor Han <[email protected]>Signed-off-by Martyn Welch <[email protected]>Cc Stefano Babic <[email protected]>---
Changes for v4:
- Removed ifdef.arch/arm/include/asm/arch-mx5/imx-regs.h | 17 +++++++++++++++++ drivers/pwm/pwm-imx-util.c | 2 ++ 2 files changed, 19 insertions(+)arch/arm/include/asm/arch-mx5/imx-regs.h +17
-0@@ -508,6 +508,23 @@ struct fuse_bank4_regs { };#endif +#define PWMCR_PRESCALER (x) (((x - 1) & 0xFFF) << 4) +#define PWMCR_DOZEEN (1 << 24) +#define PWMCR_WAITEN (1 << 23) +#define PWMCR_DBGEN (1 << 22) +#define PWMCR_CLKSRC_IPG_HIGH (2 << 16) +#define PWMCR_CLKSRC_IPG (1 << 16) +#define PWMCR_EN (1 << 0) + +struct pwm_regs { +u32 cr; +u32 sr; +u32 ir; +u32 sar; +u32 pr; +u32 cnr; +}; +#endif /* __ASSEMBLER__*/ #endif /* __ASM_ARCH_MX5_IMX_REGS_H__ */ drivers/pwm/pwm-imx-util.c +0
-0@@ -23,10 +23,12 @@ struct pwm_regs *pwm_id_to_reg(int pwm_id)return (struct pwm_regs *)PWM1_BASE_ADDR ;case 1 :
drivers/pwm/pwm-imx-util.c struct pwm_regs *pwm_id_to_reg(int pwm_id) · line 34
Quoted 10 lines
drivers/pwm/pwm-imx-util.c +2
-0return (struct pwm_regs *)PWM2_BASE_ADDR ; +#ifdef CONFIG_MX6 case 2 :return (struct pwm_regs *)PWM3_BASE_ADDR ;case 3 :return (struct pwm_regs *)PWM4_BASE_ADDR ; +#endif #ifdef CONFIG_MX6SX case 4 :return (struct pwm_regs *)PWM5_BASE_ADDR ;
Best regards,
Stefano
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v5 4/8 arm: mx5: Add more register definitions
In reply to Martyn WelchAdd register definitions require for video configuration.
---
Changes in v5:
- Reduced checkpatch warnings.
arch/arm/include/asm/arch-mx5/crm_regs.h | 8 ++++++++ arch/arm/include/asm/arch-mx5/imx-regs.h | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+)
arch/arm/include/asm/arch-mx5/crm_regs.h +8 -0
@@ -210,6 +210,14 @@ struct mxc_ccm_reg {#define MXC_CCM_CSCMR1_SSI_EXT2_COM_CLK_SEL (0x1 << 1)#define MXC_CCM_CSCMR1_SSI_EXT1_COM_CLK_SEL 0x1 +/* Define the bits in register CSCMR2 */ +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_OFFSET 26 +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_MASK (0x7 << 26) +#define MXC_CCM_CSCMR2_DI0_CLK_SEL (v) (((v) & 0x7) << 26) +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_RD (r) (((r) >> 26) & 0x7) + +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_LDB_DI0_CLK 5 +/* Define the bits in register CSCDR2 */ #define MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET 25#define MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK (0x7 << 25)
arch/arm/include/asm/arch-mx5/imx-regs.h +33 -0
@@ -416,6 +416,39 @@ struct iomuxc { };#endif +#define IOMUXC_GPR2_BITMAP_SPWG 0 +#define IOMUXC_GPR2_BITMAP_JEIDA 1 + +#define IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET 6 +#define IOMUXC_GPR2_BIT_MAPPING_CH0_MASK (1 << IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) +#define IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA << \ + IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) +#define IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG (IOMUXC_GPR2_BITMAP_SPWG << \ + IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) + +#define IOMUXC_GPR2_DATA_WIDTH_18 0 +#define IOMUXC_GPR2_DATA_WIDTH_24 1 + +#define IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET 5 +#define IOMUXC_GPR2_DATA_WIDTH_CH0_MASK (1 << IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) +#define IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT (IOMUXC_GPR2_DATA_WIDTH_18 << \ + IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) +#define IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT (IOMUXC_GPR2_DATA_WIDTH_24 << \ + IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) + +#define IOMUXC_GPR2_MODE_DISABLED 0 +#define IOMUXC_GPR2_MODE_ENABLED_DI0 1 +#define IOMUXC_GPR2_MODE_ENABLED_DI1 3 + +#define IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET 0 +#define IOMUXC_GPR2_LVDS_CH0_MODE_MASK (3 << IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +#define IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +#define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0 << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +#define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1 << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +/* System Reset Controller (SRC) */ struct src {u32 scr;
Signature · 1 line
2.1.4
PATCH v5 4/8 arm: mx5: Add more register definitions
Quoted 68 lines · Martyn Welch
Add register definitions require for video configuration.
Signed-off-by Nandor Han <[email protected]>Signed-off-by Martyn Welch <[email protected]>Reviewed-by Stefano Babic <[email protected]>Cc Stefano Babic <[email protected]>---
Changes in v5:
- Reduced checkpatch warnings.arch/arm/include/asm/arch-mx5/crm_regs.h | 8 ++++++++ arch/arm/include/asm/arch-mx5/imx-regs.h | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+)arch/arm/include/asm/arch-mx5/crm_regs.h +8
-0@@ -210,6 +210,14 @@ struct mxc_ccm_reg {#define MXC_CCM_CSCMR1_SSI_EXT2_COM_CLK_SEL (0x1 << 1)#define MXC_CCM_CSCMR1_SSI_EXT1_COM_CLK_SEL 0x1 +/* Define the bits in register CSCMR2 */ +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_OFFSET 26 +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_MASK (0x7 << 26) +#define MXC_CCM_CSCMR2_DI0_CLK_SEL (v) (((v) & 0x7) << 26) +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_RD (r) (((r) >> 26) & 0x7) + +#define MXC_CCM_CSCMR2_DI0_CLK_SEL_LDB_DI0_CLK 5 +/* Define the bits in register CSCDR2 */ #define MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET 25#define MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK (0x7 << 25)arch/arm/include/asm/arch-mx5/imx-regs.h +26
-0@@ -416,6 +416,39 @@ struct iomuxc { };#endif +#define IOMUXC_GPR2_BITMAP_SPWG 0 +#define IOMUXC_GPR2_BITMAP_JEIDA 1 + +#define IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET 6 +#define IOMUXC_GPR2_BIT_MAPPING_CH0_MASK (1 << IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) +#define IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA << \ + IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) +#define IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG (IOMUXC_GPR2_BITMAP_SPWG << \ + IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) + +#define IOMUXC_GPR2_DATA_WIDTH_18 0 +#define IOMUXC_GPR2_DATA_WIDTH_24 1 + +#define IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET 5 +#define IOMUXC_GPR2_DATA_WIDTH_CH0_MASK (1 << IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) +#define IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT (IOMUXC_GPR2_DATA_WIDTH_18 << \ + IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) +#define IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT (IOMUXC_GPR2_DATA_WIDTH_24 << \ + IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) + +#define IOMUXC_GPR2_MODE_DISABLED 0 +#define IOMUXC_GPR2_MODE_ENABLED_DI0 1 +#define IOMUXC_GPR2_MODE_ENABLED_DI1 3 + +#define IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET 0 +#define IOMUXC_GPR2_LVDS_CH0_MODE_MASK (3 << IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET)
arch/arm/include/asm/arch-mx5/imx-regs.h struct iomuxc { · line 454
Quoted 10 lines
arch/arm/include/asm/arch-mx5/imx-regs.h +7
-0+#define IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +#define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0 << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +#define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1 << \ + IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) +/* System Reset Controller (SRC) */ struct src {u32 scr;
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v5 5/8 bootcount: add support for bootcounter on EXT filesystem
In reply to Martyn WelchFrom: Ian Ray <[email protected]>
Add support for bootcounter on an EXT filesystem.
Sync configuration whitelist.
---
Changes for v2:
- Adding Kconfig for EXT bootcount.
Changes for v3:
- Add over-arching BOOTCOUNT Kconfig entry.
Changes for v5:
- Improved BOOTCOUNT_EXT description.
- Fixed checkpatch issues.
README | 7 +++++ drivers/Kconfig | 2 ++ drivers/bootcount/Kconfig | 58 ++++++++++++++++++++++++++++++++++++ drivers/bootcount/Makefile | 1 + drivers/bootcount/bootcount_ext.c | 62 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 130 insertions(+) create mode 100644 drivers/bootcount/Kconfig create mode 100644 drivers/bootcount/bootcount_ext.c
README +7 -0
@@ -2362,6 +2362,13 @@ The following options need to be configured: CONFIG_SYS_BOOTCOUNT_ADDR = i2c addr which is used for the bootcounter. CONFIG_BOOTCOUNT_ALEN = address len + CONFIG_BOOTCOUNT_EXT + enable support for the bootcounter in EXT filesystem + CONFIG_SYS_BOOTCOUNT_ADDR = RAM address used for read + and write. + CONFIG_SYS_BOOTCOUNT_EXT_INTERFACE = interface + CONFIG_SYS_BOOTCOUNT_EXT_DEVPART = device and part + CONFIG_SYS_BOOTCOUNT_EXT_NAME = filename - Show boot progress: CONFIG_SHOW_BOOT_PROGRESS
drivers/Kconfig +2 -0
@@ -10,6 +10,8 @@ source "drivers/ata/Kconfig" source "drivers/block/Kconfig" +source "drivers/bootcount/Kconfig" + source "drivers/clk/Kconfig" source "drivers/cpu/Kconfig"
drivers/bootcount/Kconfig new file +58 -0
58 lines not on this page · raw message
drivers/bootcount/Makefile +1 -0
@@ -9,3 +9,4 @@ obj-$(CONFIG_BOOTCOUNT_AM33XX) += bootcount_davinci.o obj-$(CONFIG_BOOTCOUNT_RAM) += bootcount_ram.o obj-$(CONFIG_BOOTCOUNT_ENV) += bootcount_env.o obj-$(CONFIG_BOOTCOUNT_I2C) += bootcount_i2c.o +obj-$(CONFIG_BOOTCOUNT_EXT) += bootcount_ext.o
drivers/bootcount/bootcount_ext.c new file +62 -0
62 lines not on this page · raw message
Signature · 1 line
2.1.4
PATCH v5 6/8 rtc: add support for s35392a
In reply to Martyn WelchFrom: Nandor Han <[email protected]>
Add support for S35392A RTC. The driver supports both U-Boot driver models.
---
Changes for v5:
- Fixed checkpatch issues.
drivers/rtc/Kconfig | 6 + drivers/rtc/Makefile | 1 + drivers/rtc/s35392a.c | 365 ++++++++++++++++++++++++++++++++++++++++++++++++++ lib/Kconfig | 3 + 4 files changed, 375 insertions(+) create mode 100644 drivers/rtc/s35392a.c
drivers/rtc/Kconfig +6 -0
@@ -30,4 +30,10 @@ config RTC_DS1307 Support for Dallas Semiconductor (now Maxim) DS1307 and DS1338/9 and compatible Real Time Clock devices. +config RTC_S35392A + bool "Enable S35392A driver" + select BITREVERSE + help + Enable s35392a driver which provides rtc get and set function. + endmenu
drivers/rtc/Makefile +1 -0
@@ -49,5 +49,6 @@ obj-$(CONFIG_RTC_RS5C372A) += rs5c372.o obj-$(CONFIG_RTC_RV3029) += rv3029.o obj-$(CONFIG_RTC_RX8025) += rx8025.o obj-$(CONFIG_RTC_S3C24X0) += s3c24x0_rtc.o +obj-$(CONFIG_RTC_S35392A) += s35392a.o obj-$(CONFIG_SANDBOX) += sandbox_rtc.o obj-$(CONFIG_RTC_X1205) += x1205.o
drivers/rtc/s35392a.c new file +365 -0
365 lines not on this page · raw message
lib/Kconfig +3 -0
@@ -80,6 +80,9 @@ config TPL_TINY_MEMSET config RBTREE bool +config BITREVERSE + bool "Bit reverse library from Linux" + source lib/dhry/Kconfig menu "Security support"
Signature · 1 line
2.1.4
PATCH v5 7/8 board: ge: make VPD code common
In reply to Martyn WelchThe VPD data is used on a number of GE products. Move the parsing code to a common location so that we can share this code.
---
Changes in v4:
- New patch.
Changes in v5:
- Fixed checkpatch issues.
board/ge/bx50v3/Makefile | 2 +-
board/ge/bx50v3/bx50v3.c | 2 +- board/ge/bx50v3/vpd_reader.c | 228 ------------------------------------------- board/ge/bx50v3/vpd_reader.h | 25 ----- board/ge/common/Makefile | 7 ++ board/ge/common/vpd_reader.c | 197 +++++++++++++++++++++++++++++++++++++ board/ge/common/vpd_reader.h | 17 ++++ 7 files changed, 223 insertions(+), 255 deletions(-) delete mode 100644 board/ge/bx50v3/vpd_reader.c delete mode 100644 board/ge/bx50v3/vpd_reader.h create mode 100644 board/ge/common/Makefile create mode 100644 board/ge/common/vpd_reader.c create mode 100644 board/ge/common/vpd_reader.h
board/ge/bx50v3/Makefile +1 -1
@@ -5,4 +5,4 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-y := bx50v3.o vpd_reader.o +obj-y := bx50v3.o
board/ge/bx50v3/bx50v3.c +1 -1
@@ -28,7 +28,7 @@#include <input.h> #include <pwm.h> #include <stdlib.h> -#include "vpd_reader.h" +#include "../common/vpd_reader.h" DECLARE_GLOBAL_DATA_PTR ;#ifndef CONFIG_SYS_I2C_EEPROM_ADDR
board/ge/bx50v3/vpd_reader.c deleted +0 -228
228 lines not on this page · raw message
board/ge/bx50v3/vpd_reader.h deleted +0 -25
@@ -1,25 +0,0 @@ -/* -* Copyright 2016 General Electric Company -* -* SPDX-License-Identifier: GPL-2.0+ -*/ - -#include "common.h" - -/* -* Read VPD from given data, verify content, and call callback -* for each vital product data block. -* -* Returns Non-zero on error. Negative numbers encode errno. -*/ -int vpd_reader ( -size_t size, -uint8_t * data, -void * userdata, -int (*fn)( -void * userdata, -uint8_t id, -uint8_t version, -uint8_t type, -size_t size, -uint8_t const * data));
board/ge/common/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Copyright 2017 General Electric Company +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := vpd_reader.o
board/ge/common/vpd_reader.c new file +197 -0
197 lines not on this page · raw message
board/ge/common/vpd_reader.h new file +17 -0
@@ -0,0 +1,17 @@ +/* +* Copyright 2016 General Electric Company +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include "common.h" + +/* +* Read VPD from given data, verify content, and call callback +* for each vital product data block. +* +* Returns Non-zero on error. Negative numbers encode errno. +*/ +int vpd_reader (size_t size,u8 *data,void *userdata, +int (*fn)(void *userdata,u8 id,u8 version,u8 type, +size_t size,u8 const *data));
Signature · 1 line
2.1.4
PATCH v5 7/8 board: ge: make VPD code common
Quoted 543 lines · Martyn Welch
The VPD data is used on a number of GE products. Move the parsing code to a common location so that we can share this code.
Signed-off-by Martyn Welch <[email protected]>---
Changes in v4:
- New patch.Changes in v5:
- Fixed checkpatch issues.board/ge/bx50v3/Makefile | 2 +-
board/ge/bx50v3/bx50v3.c | 2 +- board/ge/bx50v3/vpd_reader.c | 228 ------------------------------------------- board/ge/bx50v3/vpd_reader.h | 25 ----- board/ge/common/Makefile | 7 ++ board/ge/common/vpd_reader.c | 197 +++++++++++++++++++++++++++++++++++++ board/ge/common/vpd_reader.h | 17 ++++ 7 files changed, 223 insertions(+), 255 deletions(-) delete mode 100644 board/ge/bx50v3/vpd_reader.c delete mode 100644 board/ge/bx50v3/vpd_reader.h create mode 100644 board/ge/common/Makefile create mode 100644 board/ge/common/vpd_reader.c create mode 100644 board/ge/common/vpd_reader.hboard/ge/bx50v3/Makefile +1
-1@@ -5,4 +5,4 @@ # SPDX-License-Identifier: GPL-2.0+ # -obj-y := bx50v3.o vpd_reader.o +obj-y := bx50v3.oboard/ge/bx50v3/bx50v3.c +1
-1@@ -28,7 +28,7 @@#include <input.h> #include <pwm.h> #include <stdlib.h> -#include "vpd_reader.h" +#include "../common/vpd_reader.h" DECLARE_GLOBAL_DATA_PTR ;#ifndef CONFIG_SYS_I2C_EEPROM_ADDR board/ge/bx50v3/vpd_reader.c deleted +0
-228@@ -1,228 +0,0 @@ -/* -* Copyright 2016 General Electric Company -* -* SPDX-License-Identifier: GPL-2.0+ -*/ - -#include "vpd_reader.h" - -#include <linux/bch.h> -#include <stdlib.h> - - -/* BCH configuration */ - -const struct { -int header_ecc_capability_bits; -int data_ecc_capability_bits; -unsigned int prim_poly; -struct { -int min; -int max; - } galois_field_order; -} bch_configuration = { - .header_ecc_capability_bits =4 , - .data_ecc_capability_bits =16 , - .prim_poly =0 , - .galois_field_order = { - .min =5 , - .max =15 , - }, -}; - -static int calculate_galois_field_order (size_t source_length) -{ -int gfo = bch_configuration.galois_field_order.min; - -for (; gfo < bch_configuration.galois_field_order.max && - ((((1 << gfo) -1 ) - ((int )source_length *8 )) <0 ); - gfo++) { - } - -if (gfo == bch_configuration.galois_field_order.max) { -return -1 ; - } - -return gfo +1 ; -} - -static int verify_bch (int ecc_bits,unsigned int prim_poly, -uint8_t * data,size_t data_length, -const uint8_t * ecc,size_t ecc_length) -{ -int gfo =calculate_galois_field_order (data_length); -if (gfo <0 ) { -return -1 ; - } - -struct bch_control * bch =init_bch (gfo, ecc_bits, prim_poly); -if (!bch) { -return -1 ; - } - -if (bch->ecc_bytes != ecc_length) { -free_bch (bch); -return -1 ; - } - -unsigned * errloc = (unsigned *)calloc (data_length,sizeof (unsigned )); -int errors =decode_bch ( - bch, data, data_length, ecc,NULL ,NULL , errloc); -free_bch (bch); -if (errors <0 ) { -free (errloc); -return -1 ; - } - -if (errors >0 ) { -for (int n =0 ; n < errors; n++) { -if (errloc[n] >=8 * data_length) { -/* n-th error located in ecc (no need for data correction) */ - }else { -/* n-th error located in data */ - data[errloc[n] /8 ] ^=1 << (errloc[n] %8 ); - } - } - } - -free (errloc); -return 0 ; -} - - -static const int ID =0 ; -static const int LEN =1 ; -static const int VER =2 ; -static const int TYP =3 ; -static const int BLOCK_SIZE =4 ; - -static const uint8_t HEADER_BLOCK_ID =0x00 ; -static const uint8_t HEADER_BLOCK_LEN =18 ; -static const uint32_t HEADER_BLOCK_MAGIC =0xca53ca53 ; -static const size_t HEADER_BLOCK_VERIFY_LEN =14 ; -static const size_t HEADER_BLOCK_ECC_OFF =14 ; -static const size_t HEADER_BLOCK_ECC_LEN =4 ; - -static const uint8_t ECC_BLOCK_ID =0xFF ; - -int vpd_reader ( -size_t size, -uint8_t * data, -void * userdata, -int (*fn)( -void * userdata, -uint8_t id, -uint8_t version, -uint8_t type, -size_t size, -uint8_t const * data)) -{ -if ( size <HEADER_BLOCK_LEN - || data ==NULL - || fn ==NULL ) { -return -EINVAL ; - } - -/* -* +--------------------+--------------------+--//--+--------------------+ -* | header block | data block | ... | ecc block | -* +--------------------+--------------------+--//--+--------------------+ -* : : : -* +------+-------+-----+ +------+-------------+ -* | id | magic | ecc | | ... | ecc | -* | len | off | | +------+-------------+ -* | ver | size | | : -* | type | | | : -* +------+-------+-----+ : -* : : : : -* <----- [1] ----> <----------- [2] -----------> -* -* Repair (if necessary) the contents of header block [1] by using a -* 4 byte ECC located at the end of the header block. A successful -* return value means that we can trust the header. -*/ -int ret =verify_bch ( - bch_configuration.header_ecc_capability_bits, - bch_configuration.prim_poly, - data, -HEADER_BLOCK_VERIFY_LEN , - &data[HEADER_BLOCK_ECC_OFF ], -HEADER_BLOCK_ECC_LEN ); -if (ret <0 ) { -return ret; - } - -/* Validate header block { id, length, version, type }. */ -if ( data[ID ] !=HEADER_BLOCK_ID - || data[LEN ] !=HEADER_BLOCK_LEN - || data[VER ] !=0 - || data[TYP ] !=0 - ||ntohl (*(uint32_t *)(&data[4 ])) !=HEADER_BLOCK_MAGIC ) { -return -EINVAL ; - } - -uint32_t offset =ntohl (*(uint32_t *)(&data[8 ])); -uint16_t size_bits =ntohs (*(uint16_t *)(&data[12 ])); - -/* Check that ECC header fits. */ -if (offset +3 >= size) { -return -EINVAL ; - } - -/* Validate ECC block. */ -uint8_t * ecc = &data[offset]; -if ( ecc[ID ] !=ECC_BLOCK_ID - || ecc[LEN ] <BLOCK_SIZE - || ecc[LEN ] + offset > size - || ecc[LEN ] -BLOCK_SIZE != size_bits /8 - || ecc[VER ] !=1 - || ecc[TYP ] !=1 ) { -return -EINVAL ; - } - -/* -* Use the header block to locate the ECC block and verify the data -* blocks [2] against the ecc block ECC. -*/ - ret =verify_bch ( - bch_configuration.data_ecc_capability_bits, - bch_configuration.prim_poly, - &data[data[LEN ]], - offset - data[LEN ], - &data[offset +BLOCK_SIZE ], - ecc[LEN ] -BLOCK_SIZE ); -if (ret <0 ) { -return ret; - } - -/* Stop after ECC. Ignore possible zero padding. */ - size = offset; - -for (;;) { -/* Move to next block. */ - size -= data[LEN ]; - data += data[LEN ]; - -if (size ==0 ) { -/* Finished iterating through blocks. */ -return 0 ; - } - -if ( size <BLOCK_SIZE - || data[LEN ] <BLOCK_SIZE ) { -/* Not enough data for a header, or short header. */ -return -EINVAL ; - } - - ret =fn ( - userdata, - data[ID ], - data[VER ], - data[TYP ], - data[LEN ] -BLOCK_SIZE , - &data[BLOCK_SIZE ]); -if (ret) { -return ret; - } - } -}board/ge/bx50v3/vpd_reader.h deleted +0
-25@@ -1,25 +0,0 @@ -/* -* Copyright 2016 General Electric Company -* -* SPDX-License-Identifier: GPL-2.0+ -*/ - -#include "common.h" - -/* -* Read VPD from given data, verify content, and call callback -* for each vital product data block. -* -* Returns Non-zero on error. Negative numbers encode errno. -*/ -int vpd_reader ( -size_t size, -uint8_t * data, -void * userdata, -int (*fn)( -void * userdata, -uint8_t id, -uint8_t version, -uint8_t type, -size_t size, -uint8_t const * data));board/ge/common/Makefile new file +7
-0@@ -0,0 +1,7 @@ +# +# Copyright 2017 General Electric Company +# +# SPDX-License-Identifier: GPL-2.0+ +# + +obj-y := vpd_reader.oboard/ge/common/vpd_reader.c new file +197
-0@@ -0,0 +1,197 @@ +/* +* Copyright 2016 General Electric Company +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include "vpd_reader.h" + +#include <linux/bch.h> +#include <stdlib.h> + +/* BCH configuration */ + +const struct { +int header_ecc_capability_bits; +int data_ecc_capability_bits; +unsigned int prim_poly; +struct { +int min; +int max; + } galois_field_order; +} bch_configuration = { + .header_ecc_capability_bits =4 , + .data_ecc_capability_bits =16 , + .prim_poly =0 , + .galois_field_order = { + .min =5 , + .max =15 , + }, +}; + +static int calculate_galois_field_order (size_t source_length) +{ +int gfo = bch_configuration.galois_field_order.min; + +for (; gfo < bch_configuration.galois_field_order.max && + ((((1 << gfo) -1 ) - ((int )source_length *8 )) <0 ); + gfo++) { + } + +if (gfo == bch_configuration.galois_field_order.max) +return -1 ; + +return gfo +1 ; +} + +static int verify_bch (int ecc_bits,unsigned int prim_poly,u8 *data, +size_t data_length,const u8 *ecc,size_t ecc_length) +{ +int gfo =calculate_galois_field_order (data_length); + +if (gfo <0 ) +return -1 ; + +struct bch_control *bch =init_bch (gfo, ecc_bits, prim_poly); + +if (!bch) +return -1 ; + +if (bch->ecc_bytes != ecc_length) { +free_bch (bch); +return -1 ; + } + +unsigned int *errloc = (unsigned int *)calloc (data_length, +sizeof (unsigned int )); +int errors =decode_bch (bch, data, data_length, ecc,NULL ,NULL , + errloc); + +free_bch (bch); +if (errors <0 ) { +free (errloc); +return -1 ; + } + +if (errors >0 ) { +for (int n =0 ; n < errors; n++) { +if (errloc[n] >=8 * data_length) { +/* +* n-th error located in ecc (no need for data +* correction) +*/ + }else { +/* n-th error located in data */ + data[errloc[n] /8 ] ^=1 << (errloc[n] %8 ); + } + } + } + +free (errloc); +return 0 ; +} + +static const int ID ; +static const int LEN =1 ; +static const int VER =2 ; +static const int TYP =3 ; +static const int BLOCK_SIZE =4 ; + +static const u8 HEADER_BLOCK_ID ; +static const u8 HEADER_BLOCK_LEN =18 ; +static const u32 HEADER_BLOCK_MAGIC =0xca53ca53 ; +static const size_t HEADER_BLOCK_VERIFY_LEN =14 ; +static const size_t HEADER_BLOCK_ECC_OFF =14 ; +static const size_t HEADER_BLOCK_ECC_LEN =4 ; + +static const u8 ECC_BLOCK_ID =0xFF ; + +int vpd_reader (size_t size,u8 *data,void *userdata, +int (*fn)(void *userdata,u8 id,u8 version,u8 type, +size_t size,u8 const *data)) +{ +if (size <HEADER_BLOCK_LEN || !data || !fn) +return -EINVAL ; + +/* +* +--------------------+----------------+--//--+--------------------+ +* | header block | data block | ... | ecc block | +* +--------------------+----------------+--//--+--------------------+ +* : : : +* +------+-------+-----+ +------+-------------+ +* | id | magic | ecc | | ... | ecc | +* | len | off | | +------+-------------+ +* | ver | size | | : +* | type | | | : +* +------+-------+-----+ : +* : : : : +* <----- [1] ----> <--------- [2] ---------> +* +* Repair (if necessary) the contents of header block [1] by using a +* 4 byte ECC located at the end of the header block. A successful +* return value means that we can trust the header. +*/ +int ret =verify_bch (bch_configuration.header_ecc_capability_bits, + bch_configuration.prim_poly, data, +HEADER_BLOCK_VERIFY_LEN , + &data[HEADER_BLOCK_ECC_OFF ],HEADER_BLOCK_ECC_LEN ); +if (ret <0 ) +return ret; + +/* Validate header block { id, length, version, type }. */ +if (data[ID ] !=HEADER_BLOCK_ID || data[LEN ] !=HEADER_BLOCK_LEN || + data[VER ] !=0 || data[TYP ] !=0 || +ntohl (*(u32 *)(&data[4 ])) !=HEADER_BLOCK_MAGIC ) +return -EINVAL ; + +u32 offset =ntohl (*(u32 *)(&data[8 ])); +u16 size_bits =ntohs (*(u16 *)(&data[12 ])); + +/* Check that ECC header fits. */ +if (offset +3 >= size) +return -EINVAL ; + +/* Validate ECC block. */ +u8 *ecc = &data[offset]; + +if (ecc[ID ] !=ECC_BLOCK_ID || ecc[LEN ] <BLOCK_SIZE || + ecc[LEN ] + offset > size || + ecc[LEN ] -BLOCK_SIZE != size_bits /8 || ecc[VER ] !=1 || + ecc[TYP ] !=1 ) +return -EINVAL ; + +/* +* Use the header block to locate the ECC block and verify the data +* blocks [2] against the ecc block ECC. +*/ + ret =verify_bch (bch_configuration.data_ecc_capability_bits, + bch_configuration.prim_poly, &data[data[LEN ]], + offset - data[LEN ], &data[offset +BLOCK_SIZE ], + ecc[LEN ] -BLOCK_SIZE ); +if (ret <0 ) +return ret; + +/* Stop after ECC. Ignore possible zero padding. */ + size = offset; + +for (;;) { +/* Move to next block. */ + size -= data[LEN ]; + data += data[LEN ]; + +if (size ==0 ) { +/* Finished iterating through blocks. */ +return 0 ; + } + +if (size <BLOCK_SIZE || data[LEN ] <BLOCK_SIZE ) { +/* Not enough data for a header, or short header. */ +return -EINVAL ; + } + + ret =fn (userdata, data[ID ], data[VER ], data[TYP ], + data[LEN ] -BLOCK_SIZE , &data[BLOCK_SIZE ]); +if (ret) +return ret; + } +}board/ge/common/vpd_reader.h new file +7
-0@@ -0,0 +1,17 @@ +/* +* Copyright 2016 General Electric Company +* +* SPDX-License-Identifier: GPL-2.0+ +*/ + +#include "common.h"
board/ge/common/vpd_reader.h line 17
Quoted 10 lines
board/ge/common/vpd_reader.h new file +10
-0+ +/* +* Read VPD from given data, verify content, and call callback +* for each vital product data block. +* +* Returns Non-zero on error. Negative numbers encode errno. +*/ +int vpd_reader (size_t size,u8 *data,void *userdata, +int (*fn)(void *userdata,u8 id,u8 version,u8 type, +size_t size,u8 const *data));
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
v5 cover Add support for GE PPD
In reply to Martyn WelchHi Martyn,
Quoted 1 line
*** Resend due to previous use of unsubscribed email address ***
Just a small remark.
You may consider using patman to get the list of u-boot community peers to be CC'ed for your patch. Or at least look for a custodian (in MAINTAINERS) responsible to IMX (NXP) SoC part of u-boot (in this case Stefano Babic or Fabio Estevam).
The problem with sending code only to u-boot ML is that it may be overlooked by people, who are the best candidates to review it.
Quoted 69 lines
This series adds support for the GE PPD. The initial patches in this series resolve issues found during development and testing, extend existing support and add new support for devices in the PPD. The final patch in the series adds the board support for the PPD.
Ian Ray (2):
ext4: recover from filesystem corruption when reading
bootcount: add support for bootcounter on EXT filesystemMartyn Welch (3):
pwm: imx: Enable PWM support on i.MX53
arm: mx5: Add more register definitions
board: ge: make VPD code commonNandor Han (2):
imx:mxc_i2c: tweak the i2c transfer method
rtc: add support for s35392aPeter Senna Tschudin (1):
mx53: Add Board support for GE PPDREADME | 7 + arch/arm/include/asm/arch-mx5/crm_regs.h | 8 + arch/arm/include/asm/arch-mx5/imx-regs.h | 50 ++++ arch/arm/mach-imx/mx5/Kconfig | 7 + board/ge/bx50v3/Makefile | 2 +- board/ge/bx50v3/bx50v3.c | 2 +- board/ge/bx50v3/vpd_reader.c | 228 --------------- board/ge/bx50v3/vpd_reader.h | 25 -- board/ge/common/Makefile | 7 + board/ge/common/vpd_reader.c | 197 +++++++++++++ board/ge/common/vpd_reader.h | 17 ++ board/ge/mx53ppd/Kconfig | 17 ++ board/ge/mx53ppd/MAINTAINERS | 7 + board/ge/mx53ppd/Makefile | 12 + board/ge/mx53ppd/imximage.cfg | 87 ++++++ board/ge/mx53ppd/mx53ppd.c | 457 +++++++++++++++++++++++++++++++ board/ge/mx53ppd/mx53ppd_video.c | 135 +++++++++ board/ge/mx53ppd/ppd_gpio.h | 96 +++++++ configs/mx53ppd_defconfig | 39 +++ drivers/Kconfig | 2 + drivers/bootcount/Kconfig | 58 ++++ drivers/bootcount/Makefile | 1 + drivers/bootcount/bootcount_ext.c | 62 +++++ drivers/i2c/mxc_i2c.c | 25 +- drivers/pwm/pwm-imx-util.c | 2 + drivers/rtc/Kconfig | 6 + drivers/rtc/Makefile | 1 + drivers/rtc/s35392a.c | 365++++++++++++++++++++++++
fs/ext4/ext4_common.c|
10 +fs/ext4/ext4fs.c| 10 +-include/configs/mx53ppd.h| 248 +++++++++++++++++
lib/Kconfig | 3 + 32 files changed,
1927 insertions(+), 266 deletions(-) delete mode 100644board/ge/bx50v3/vpd_reader.cdelete mode 100644board/ge/bx50v3/vpd_reader.hcreate mode 100644 board/ge/common/Makefile create mode 100644board/ge/common/vpd_reader.ccreate mode 100644board/ge/common/vpd_reader.hcreate mode 100644 board/ge/mx53ppd/Kconfig create mode 100644 board/ge/mx53ppd/MAINTAINERS create mode 100644 board/ge/mx53ppd/Makefile create mode 100644 board/ge/mx53ppd/imximage.cfg create mode 100644board/ge/mx53ppd/mx53ppd.ccreate mode 100644board/ge/mx53ppd/mx53ppd_video.ccreate mode 100644board/ge/mx53ppd/ppd_gpio.hcreate mode 100644 configs/mx53ppd_defconfig create mode 100644drivers/bootcount/Kconfig
Quoted 4 lines
create mode 100644 drivers/bootcount/bootcount_ext.c create mode 100644 drivers/rtc/s35392a.c create mode 100644 include/configs/mx53ppd.h
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171109/e2321c45/attachment.sig>
v5 cover Add support for GE PPD
Quoted 11 lines · Lukasz Majewski
Hi Martyn,
Quoted 1 line
*** Resend due to previous use of unsubscribed email address ***
Just a small remark.
You may consider using patman to get the list of u-boot community peers to be CC'ed for your patch. Or at least look for a custodian (in
MAINTAINERS) responsible to IMX (NXP) SoC part of u-boot (in this case Stefano Babic or Fabio Estevam).
Ah, OK, I ran get_maintainers and CCed anyone specifically flagged as a maintainer (which is what I understood to be good practice from the U-Boot wiki).
I'll bear this in mind and CC those that have made significant contributions next time.
Quoted 88 lines
The problem with sending code only to u-boot ML is that it may be overlooked by people, who are the best candidates to review it.
Quoted 69 lines
This series adds support for the GE PPD. The initial patches in this series resolve issues found during development and testing, extend existing support and add new support for devices in the PPD. The final patch in the series adds the board support for the PPD.
Ian Ray (2):
ext4: recover from filesystem corruption when reading
bootcount: add support for bootcounter on EXT filesystemMartyn Welch (3):
pwm: imx: Enable PWM support on i.MX53
arm: mx5: Add more register definitions
board: ge: make VPD code commonNandor Han (2):
imx:mxc_i2c: tweak the i2c transfer method
rtc: add support for s35392aPeter Senna Tschudin (1):
mx53: Add Board support for GE PPDREADME | 7 + arch/arm/include/asm/arch-mx5/crm_regs.h | 8 + arch/arm/include/asm/arch-mx5/imx-regs.h | 50 ++++ arch/arm/mach-imx/mx5/Kconfig | 7 + board/ge/bx50v3/Makefile | 2 +- board/ge/bx50v3/bx50v3.c | 2 +- board/ge/bx50v3/vpd_reader.c | 228 --------------- board/ge/bx50v3/vpd_reader.h | 25 -- board/ge/common/Makefile | 7 + board/ge/common/vpd_reader.c | 197 +++++++++++++ board/ge/common/vpd_reader.h | 17 ++ board/ge/mx53ppd/Kconfig | 17 ++ board/ge/mx53ppd/MAINTAINERS | 7 + board/ge/mx53ppd/Makefile | 12 + board/ge/mx53ppd/imximage.cfg | 87 ++++++ board/ge/mx53ppd/mx53ppd.c | 457 +++++++++++++++++++++++++++++++ board/ge/mx53ppd/mx53ppd_video.c | 135 +++++++++ board/ge/mx53ppd/ppd_gpio.h | 96 +++++++ configs/mx53ppd_defconfig | 39 +++ drivers/Kconfig | 2 + drivers/bootcount/Kconfig | 58 ++++ drivers/bootcount/Makefile | 1 + drivers/bootcount/bootcount_ext.c | 62 +++++ drivers/i2c/mxc_i2c.c | 25 +- drivers/pwm/pwm-imx-util.c | 2 + drivers/rtc/Kconfig | 6 + drivers/rtc/Makefile | 1 + drivers/rtc/s35392a.c | 365++++++++++++++++++++++++
fs/ext4/ext4_common.c|
10 +fs/ext4/ext4fs.c| 10 +-include/configs/mx53ppd.h| 248 +++++++++++++++++
lib/Kconfig | 3 + 32 files changed,
1927 insertions(+), 266 deletions(-) delete mode 100644board/ge/bx50v3/vpd_reader.cdelete mode 100644board/ge/bx50v3/vpd_reader.hcreate mode 100644 board/ge/common/Makefile create mode 100644board/ge/common/vpd_reader.ccreate mode 100644board/ge/common/vpd_reader.hcreate mode 100644 board/ge/mx53ppd/Kconfig create mode 100644 board/ge/mx53ppd/MAINTAINERS create mode 100644 board/ge/mx53ppd/Makefile create mode 100644 board/ge/mx53ppd/imximage.cfg create mode 100644board/ge/mx53ppd/mx53ppd.ccreate mode 100644board/ge/mx53ppd/mx53ppd_video.ccreate mode 100644board/ge/mx53ppd/ppd_gpio.hcreate mode 100644 configs/mx53ppd_defconfig create mode 100644drivers/bootcount/KconfigQuoted 4 lines
create mode 100644 drivers/bootcount/bootcount_ext.c create mode 100644 drivers/rtc/s35392a.c create mode 100644 include/configs/mx53ppd.hBest regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de