[U-Boot] [PATCH 1/6] powerpc/85xx: Add 36-bit address map support to P1022DS

From: Jiang Yutang b14898@freescale.com
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- board/freescale/p1022ds/p1022ds.c | 3 ++ boards.cfg | 1 + include/configs/P1022DS.h | 46 ++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletions(-)
diff --git a/board/freescale/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c index 62beafa..6f20dc3 100644 --- a/board/freescale/p1022ds/p1022ds.c +++ b/board/freescale/p1022ds/p1022ds.c @@ -53,6 +53,9 @@ int checkboard(void) u8 sw;
puts("Board: P1022DS "); +#ifdef CONFIG_PHYS_64BIT + puts("(36-bit addrmap) "); +#endif
printf("Sys ID: 0x%02x, Sys Ver: 0x%02x, FPGA Ver: 0x%02x, ", in_8(&pixis->id), in_8(&pixis->arch), in_8(&pixis->scver)); diff --git a/boards.cfg b/boards.cfg index 263c1e6..2622f78 100644 --- a/boards.cfg +++ b/boards.cfg @@ -523,6 +523,7 @@ P1020RDB_NAND powerpc mpc85xx p1_p2_rdb freesca P1020RDB_SDCARD powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P1020RDB,SDCARD P1020RDB_SPIFLASH powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P1020RDB,SPIFLASH P1022DS powerpc mpc85xx p1022ds freescale +P1022DS_36BIT powerpc mpc85xx p1022ds freescale - P1022DS:36BIT P2010RDB powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB P2010RDB_36BIT powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB,36BIT P2010RDB_36BIT_SDCARD powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB,36BIT,SDCARD diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index 5f47d1a..c15cb8d 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -14,6 +14,10 @@
#include "../board/freescale/common/ics307_clk.h"
+#ifdef CONFIG_36BIT +#define CONFIG_PHYS_64BIT +#endif + /* High Level Configuration Options */ #define CONFIG_BOOKE /* BOOKE */ #define CONFIG_E500 /* BOOKE e500 family */ @@ -39,10 +43,11 @@ #define CONFIG_FSL_PCIE_RESET /* need PCIe reset errata */ #define CONFIG_SYS_PCI_64BIT /* enable 64-bit PCI resources */
-#define CONFIG_PHYS_64BIT +#ifdef CONFIG_PHYS_64BIT #define CONFIG_ENABLE_36BIT_PHYS #define CONFIG_ADDR_MAP #define CONFIG_SYS_NUM_ADDR_MAP 16 /* number of TLB1 entries */ +#endif
#define CONFIG_FSL_LAW /* Use common FSL init code */
@@ -65,7 +70,11 @@ */ #define CONFIG_SYS_CCSRBAR_DEFAULT 0xff700000 /* CCSRBAR Default */ #define CONFIG_SYS_CCSRBAR 0xffe00000 /* relocated CCSRBAR */ +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_CCSRBAR_PHYS 0xfffe00000ull +#else +#define CONFIG_SYS_CCSRBAR_PHYS CONFIG_SYS_CCSRBAR +#endif #define CONFIG_SYS_IMMR CONFIG_SYS_CCSRBAR
/* DDR Setup */ @@ -111,7 +120,11 @@ * Local Bus Definitions */ #define CONFIG_SYS_FLASH_BASE 0xe0000000 /* start of FLASH 128M */ +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_FLASH_BASE_PHYS 0xfe0000000ull +#else +#define CONFIG_SYS_FLASH_BASE_PHYS CONFIG_SYS_FLASH_BASE +#endif
#define CONFIG_FLASH_BR_PRELIM \ (BR_PHYS_ADDR((CONFIG_SYS_FLASH_BASE_PHYS + 0x8000000)) | BR_PS_16 | BR_V) @@ -145,7 +158,11 @@
#define CONFIG_FSL_NGPIXIS #define PIXIS_BASE 0xffdf0000 /* PIXIS registers */ +#ifdef CONFIG_PHYS_64BIT #define PIXIS_BASE_PHYS 0xfffdf0000ull +#else +#define PIXIS_BASE_PHYS PIXIS_BASE +#endif
#define CONFIG_SYS_BR2_PRELIM (BR_PHYS_ADDR(PIXIS_BASE_PHYS) | BR_PS_8 | BR_V) #define CONFIG_SYS_OR2_PRELIM (OR_AM_32KB | 0x6ff7) @@ -241,32 +258,59 @@
/* controller 1, Slot 2, tgtid 1, Base address a000 */ #define CONFIG_SYS_PCIE1_MEM_VIRT 0xc0000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE1_MEM_BUS 0xe0000000 #define CONFIG_SYS_PCIE1_MEM_PHYS 0xc40000000ull +#else +#define CONFIG_SYS_PCIE1_MEM_BUS 0xc0000000 +#define CONFIG_SYS_PCIE1_MEM_PHYS 0xc0000000 +#endif #define CONFIG_SYS_PCIE1_MEM_SIZE 0x20000000 /* 512M */ #define CONFIG_SYS_PCIE1_IO_VIRT 0xffc20000 #define CONFIG_SYS_PCIE1_IO_BUS 0x00000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE1_IO_PHYS 0xfffc20000ull +#else +#define CONFIG_SYS_PCIE1_IO_PHYS 0xffc20000 +#endif #define CONFIG_SYS_PCIE1_IO_SIZE 0x00010000 /* 64k */
/* controller 2, direct to uli, tgtid 2, Base address 9000 */ #define CONFIG_SYS_PCIE2_MEM_VIRT 0xa0000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE2_MEM_BUS 0xe0000000 #define CONFIG_SYS_PCIE2_MEM_PHYS 0xc20000000ull +#else +#define CONFIG_SYS_PCIE2_MEM_BUS 0xa0000000 +#define CONFIG_SYS_PCIE2_MEM_PHYS 0xa0000000 +#endif #define CONFIG_SYS_PCIE2_MEM_SIZE 0x20000000 /* 512M */ #define CONFIG_SYS_PCIE2_IO_VIRT 0xffc10000 #define CONFIG_SYS_PCIE2_IO_BUS 0x00000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE2_IO_PHYS 0xfffc10000ull +#else +#define CONFIG_SYS_PCIE2_IO_PHYS 0xffc10000 +#endif #define CONFIG_SYS_PCIE2_IO_SIZE 0x00010000 /* 64k */
/* controller 3, Slot 1, tgtid 3, Base address b000 */ #define CONFIG_SYS_PCIE3_MEM_VIRT 0x80000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE3_MEM_BUS 0xe0000000 #define CONFIG_SYS_PCIE3_MEM_PHYS 0xc00000000ull +#else +#define CONFIG_SYS_PCIE3_MEM_BUS 0x80000000 +#define CONFIG_SYS_PCIE3_MEM_PHYS 0x80000000 +#endif #define CONFIG_SYS_PCIE3_MEM_SIZE 0x20000000 /* 512M */ #define CONFIG_SYS_PCIE3_IO_VIRT 0xffc00000 #define CONFIG_SYS_PCIE3_IO_BUS 0x00000000 +#ifdef CONFIG_PHYS_64BIT #define CONFIG_SYS_PCIE3_IO_PHYS 0xfffc00000ull +#else +#define CONFIG_SYS_PCIE3_IO_PHYS 0xffc00000 +#endif #define CONFIG_SYS_PCIE3_IO_SIZE 0x00010000 /* 64k */
#ifdef CONFIG_PCI

From: Jiang Yutang b14898@freescale.com
Make the support for ATI graphics cards mutually exclusive with DIU.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- include/configs/P1022DS.h | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index c15cb8d..b3cb135 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -220,6 +220,22 @@ #undef CONFIG_SYS_FLASH_EMPTY_INFO #endif
+#ifndef CONFIG_DIU +#define CONFIG_ATI +#endif + +#ifdef CONFIG_ATI +#define VIDEO_IO_OFFSET CONFIG_SYS_PCIE1_IO_VIRT +#define CONFIG_VIDEO +#define CONFIG_BIOSEMU +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_ATI_RADEON_FB +#define CONFIG_VIDEO_LOGO +#define CONFIG_SYS_ISA_IO_BASE_ADDRESS VIDEO_IO_OFFSET +#define CONFIG_CFB_CONSOLE +#define CONFIG_VGA_AS_SINGLE_DEVICE +#endif + /* * Pass open firmware flat tree */

From: Jiang Yutang b14898@freescale.com
Added two build configurations with DIU enabled on P1022DS and fixed the configuration for LVDS monitors to enable backlighting.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- board/freescale/p1022ds/diu.c | 7 +++++-- boards.cfg | 2 ++ include/configs/P1022DS.h | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/board/freescale/p1022ds/diu.c b/board/freescale/p1022ds/diu.c index b37e0e2..15f95c6 100644 --- a/board/freescale/p1022ds/diu.c +++ b/board/freescale/p1022ds/diu.c @@ -105,14 +105,17 @@ int platform_diu_init(unsigned int *xres, unsigned int *yres) *xres = 1024; *yres = 768; /* Enable the DFP port, disable the DVI and the backlight */ - temp &= ~(PX_BRDCFG1_DVIEN | PX_BRDCFG1_BACKLIGHT); - temp |= PX_BRDCFG1_DFPEN; + temp &= ~PX_BRDCFG1_DVIEN; + /* LVDS also needs backlight enabled, otherwise the display will be blank */ + temp |= (PX_BRDCFG1_DFPEN | PX_BRDCFG1_BACKLIGHT); + printf("DIU link to 1-LVDS\n"); } else { /* DVI */ *xres = 1280; *yres = 1024; /* Enable the DVI port, disable the DFP and the backlight */ temp &= ~(PX_BRDCFG1_DFPEN | PX_BRDCFG1_BACKLIGHT); temp |= PX_BRDCFG1_DVIEN; + printf("DIU link to 0-DVI\n"); }
out_8(&pixis->brdcfg1, temp); diff --git a/boards.cfg b/boards.cfg index 2622f78..02212bb 100644 --- a/boards.cfg +++ b/boards.cfg @@ -524,6 +524,8 @@ P1020RDB_SDCARD powerpc mpc85xx p1_p2_rdb freesca P1020RDB_SPIFLASH powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P1020RDB,SPIFLASH P1022DS powerpc mpc85xx p1022ds freescale P1022DS_36BIT powerpc mpc85xx p1022ds freescale - P1022DS:36BIT +P1022DS_36BIT_DIU powerpc mpc85xx p1022ds freescale - P1022DS:36BIT,DIU +P1022DS_DIU powerpc mpc85xx p1022ds freescale - P1022DS:DIU P2010RDB powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB P2010RDB_36BIT powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB,36BIT P2010RDB_36BIT_SDCARD powerpc mpc85xx p1_p2_rdb freescale - P1_P2_RDB:P2010RDB,36BIT,SDCARD diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index b3cb135..cac7f66 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -202,7 +202,9 @@ #define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
/* Video */ -#undef CONFIG_FSL_DIU_FB +#ifdef CONFIG_DIU +#define CONFIG_FSL_DIU_FB +#endif
#ifdef CONFIG_FSL_DIU_FB #define CONFIG_SYS_DIU_ADDR (CONFIG_SYS_CCSRBAR + 0x10000)

From: Jiang Yutang b14898@freescale.com
For soc which have pin multiplex relation, some of them can't enable simultaneously. This patch add environment var 'hwconfig' content defination for them. you can enable some one function by setting environment var 'hwconfig' content and reset board. Detail setting please refer doc/README.p1022ds
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- arch/powerpc/include/asm/immap_85xx.h | 8 +++++ board/freescale/p1022ds/p1022ds.c | 50 +++++++++++++++++++++++++------- doc/README.p1022ds | 24 ++++++++++++++++ 3 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 doc/README.p1022ds
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 5118fe0..690bb3a 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1937,7 +1937,15 @@ typedef struct ccsr_gur { #define MPC85xx_PMUXCR_QE10 0x00000020 #define MPC85xx_PMUXCR_QE11 0x00000010 #define MPC85xx_PMUXCR_QE12 0x00000008 +#if defined(CONFIG_P1013) || defined(CONFIG_P1022) +#define MPC85xx_PMUXCR_TDM_MASK 0x0001cc00 +#define MPC85xx_PMUXCR_TDM 0x00014800 +#endif u32 pmuxcr2; /* Alt. function signal multiplex control 2 */ +#if defined(CONFIG_P1013) || defined(CONFIG_P1022) +#define MPC85xx_PMUXCR2_ETSECUSB_MASK 0x001f1000 +#define MPC85xx_PMUXCR2_USB 0x00150000 +#endif u8 res6[8]; u32 devdisr; /* Device disable control */ #define MPC85xx_DEVDISR_PCI1 0x80000000 diff --git a/board/freescale/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c index 6f20dc3..b06869a 100644 --- a/board/freescale/p1022ds/p1022ds.c +++ b/board/freescale/p1022ds/p1022ds.c @@ -93,11 +93,17 @@ int checkboard(void) /* Choose the 11.2896Mhz codec reference clock */ #define CONFIG_PIXIS_BRDCFG1_AUDCLK_11 0x01
+/* Connect to USB2 */ +#define CONFIG_PIXIS_BRDCFG0_USB2 0x10 +/* Connect to TFM bus */ +#define CONFIG_PIXIS_BRDCFG1_TDM 0x0c + int misc_init_r(void) { u8 temp; const char *audclk; size_t arglen; + ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
/* For DVI, enable the TFP410 Encoder. */
@@ -115,22 +121,44 @@ int misc_init_r(void) return -1; debug("DVI Encoder Read: 0x%02x\n",temp);
+ /* Enable the USB2 in PMUXCR2 and FGPA */ + if (hwconfig("usb2")) { + clrsetbits_be32(&gur->pmuxcr2, MPC85xx_PMUXCR2_ETSECUSB_MASK, + MPC85xx_PMUXCR2_USB); + setbits_8(&pixis->brdcfg0, CONFIG_PIXIS_BRDCFG0_USB2); + } + + /* tdm and audio can not enable simultaneous*/ + if (hwconfig("tdm") && hwconfig("audclk")){ + printf("WARNING: TDM and AUDIO can not be enabled simultaneous !\n"); + return -1; + } + + /* Enable the TDM in PMUXCR and FGPA */ + if (hwconfig("tdm")) { + clrsetbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_TDM_MASK, + MPC85xx_PMUXCR_TDM); + setbits_8(&pixis->brdcfg1, CONFIG_PIXIS_BRDCFG1_TDM); + } + /* * Enable the reference clock for the WM8776 codec, and route the MUX * pins for SSI. The default is the 12.288 MHz clock */
- temp = in_8(&pixis->brdcfg1) & ~(CONFIG_PIXIS_BRDCFG1_SSI_TDM_MASK | - CONFIG_PIXIS_BRDCFG1_AUDCLK_MASK); - temp |= CONFIG_PIXIS_BRDCFG1_SSI_TDM_SSI; - - audclk = hwconfig_arg("audclk", &arglen); - /* Check the first two chars only */ - if (audclk && (strncmp(audclk, "11", 2) == 0)) - temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_11; - else - temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_12; - out_8(&pixis->brdcfg1, temp); + if (hwconfig("audclk")) { + temp = in_8(&pixis->brdcfg1) & ~(CONFIG_PIXIS_BRDCFG1_SSI_TDM_MASK | + CONFIG_PIXIS_BRDCFG1_AUDCLK_MASK); + temp |= CONFIG_PIXIS_BRDCFG1_SSI_TDM_SSI; + + audclk = hwconfig_arg("audclk", &arglen); + /* Check the first two chars only */ + if (audclk && (strncmp(audclk, "11", 2) == 0)) + temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_11; + else + temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_12; + setbits_8(&pixis->brdcfg1, temp); + }
return 0; } diff --git a/doc/README.p1022ds b/doc/README.p1022ds new file mode 100644 index 0000000..473ecf6 --- /dev/null +++ b/doc/README.p1022ds @@ -0,0 +1,24 @@ +Overview +-------- +P1022ds is a Low End Dual core platform supporting the P1022 processor +of QorIQ series. P1022 is an e500 based dual core SOC. + + +Pin Multiplex(hwconfig setting) +------------------------------- +Add the environment 'usb2', 'audclk' and 'tdm' to support pin multiplex +via hwconfig, i.e: +'setenv hwconfig usb2' to enable USB2 and disable eTsec2 +'setenv hwconfig tdm' to enable TDM and disable Audio +'setenv hwconfig audclk:12' to enable Audio(codec clock sources is 12MHz) + and disable TDM +'setenv hwconfig 'usb2;tdm' to enable USB2 and TDM, disable eTsec2 and Audio +'setenv hwconfig 'usb2;audclk:11' to enable USB2 and Audio(codec clock sources + is 11MHz), disable eTsec2 and TDM + +Warning: TDM and AUDIO can not enable simultaneous ! +and AUDIO codec clock sources only setting as 11MHz or 12MHz ! +'setenv hwconfig 'audclk:12;tdm' --- error ! +'setenv hwconfig 'audclk:11;tdm' --- error ! +'setenv hwconfig 'audclk:10' --- error ! +

From: Jiang Yutang b14898@freescale.com
Set default configuration to have SDHC controller enabled, AUDIO enabled(codec clock sources is 12MHz) and disable TDM.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- include/configs/P1022DS.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index cac7f66..ad10550 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -511,6 +511,7 @@ "dium=mw e002c01c\0" \ "diuerr=md e002c014 1\0" \ "othbootargs=diufb=15M video=fslfb:1280x1024-32@60,monitor=0 tty0\0" \ + "hwconfig=esdhc;audclk:12\0" \ "monitor=0-DVI\0"
#define CONFIG_HDBOOT \

From: Jiang Yutang b14898@freescale.com
SHARP LQ084S3LG01 TFT LCD is the default configuration with P1022DS RevC board. It only support 800x600 resolutions. While using DIU's DVI or LVDS ports, some environment var should be setting:
DVI: 'setenv monitor 0' 'setenv resolution 1280x1024'
LVDS(default): 'setenv monitor 1' 'setenv resolution 800x600'
environment var 'othbootargs' should be: othbootargs=diufb=15M video=fslfb: $resolution -32@60,monitor=$monitor tty0
Save environment var 'monitor' as '0' or '1' then reset board, DIU will change signal out to DVI or LVDS. DIU driver will according environment var 'monitor' to automatic setting environment var 'resolution' as 800x600(SHARP LQ084S3LG01 LCD) or 1280x1024(DELL monitor).
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- board/freescale/p1022ds/diu.c | 8 ++++++-- doc/README.p1022ds | 22 ++++++++++++++++++++++ drivers/video/fsl_diu_fb.c | 20 +++++++++++++++++++- include/configs/P1022DS.h | 6 ++++-- 4 files changed, 51 insertions(+), 5 deletions(-)
diff --git a/board/freescale/p1022ds/diu.c b/board/freescale/p1022ds/diu.c index 15f95c6..d4fbc4f 100644 --- a/board/freescale/p1022ds/diu.c +++ b/board/freescale/p1022ds/diu.c @@ -102,12 +102,14 @@ int platform_diu_init(unsigned int *xres, unsigned int *yres)
monitor_port = getenv("monitor"); if (!strncmp(monitor_port, "1", 1)) { /* 1 - Single link LVDS */ - *xres = 1024; - *yres = 768; + *xres = 800; + *yres = 600; /* Enable the DFP port, disable the DVI and the backlight */ temp &= ~PX_BRDCFG1_DVIEN; /* LVDS also needs backlight enabled, otherwise the display will be blank */ temp |= (PX_BRDCFG1_DFPEN | PX_BRDCFG1_BACKLIGHT); + setenv("monitor", "1"); + setenv("resolution", "800x600"); printf("DIU link to 1-LVDS\n"); } else { /* DVI */ *xres = 1280; @@ -115,6 +117,8 @@ int platform_diu_init(unsigned int *xres, unsigned int *yres) /* Enable the DVI port, disable the DFP and the backlight */ temp &= ~(PX_BRDCFG1_DFPEN | PX_BRDCFG1_BACKLIGHT); temp |= PX_BRDCFG1_DVIEN; + setenv("monitor", "0"); + setenv("resolution", "1280x1024"); printf("DIU link to 0-DVI\n"); }
diff --git a/doc/README.p1022ds b/doc/README.p1022ds index 473ecf6..77db2f6 100644 --- a/doc/README.p1022ds +++ b/doc/README.p1022ds @@ -22,3 +22,25 @@ and AUDIO codec clock sources only setting as 11MHz or 12MHz ! 'setenv hwconfig 'audclk:11;tdm' --- error ! 'setenv hwconfig 'audclk:10' --- error !
+ +DIU Display Setting +------------------------------- +P1022ds DIU can link to DVI or LVDS, DVI can connect to DELL monitor(1280x1024 resolution) +and LVDS can connect to SHARP LQ084S3LG01 LCD(only support 800x600 resolution) on board. +Before using DIU, please check following environment var setting: + +DVI: +'setenv monitor 0' +'setenv resolution 1280x1024' + +LVDS(default): +'setenv monitor 1' +'setenv resolution 800x600' + +environment var 'othbootargs' should be: +othbootargs=diufb=15M video=fslfb: $resolution -32@60,monitor=$monitor tty0 + +Save environment var 'monitor' as '0' or '1' then reset board, DIU will change signal out to DVI or LVDS. +DIU driver will according environment var 'monitor' to automatic setting environment var 'resolution' as +800x600(SHARP LQ084S3LG01 LCD) or 1280x1024(DELL monitor). + diff --git a/drivers/video/fsl_diu_fb.c b/drivers/video/fsl_diu_fb.c index 35ed938..1e3e6a2 100644 --- a/drivers/video/fsl_diu_fb.c +++ b/drivers/video/fsl_diu_fb.c @@ -1,5 +1,5 @@ /* - * Copyright 2007, 2010 Freescale Semiconductor, Inc. + * Copyright 2007, 2011 Freescale Semiconductor, Inc. * York Sun yorksun@freescale.com * * FSL DIU Framebuffer driver @@ -51,6 +51,23 @@ struct fb_videomode { #define FB_SYNC_COMP_HIGH_ACT 8 /* composite sync high active */ #define FB_VMODE_NONINTERLACED 0 /* non interlaced */
+#ifdef CONFIG_SHARP_LQ084S3LG01_TFT_LCD +static struct fb_videomode fsl_diu_mode_800 = { + .name = "800x600-60", + .refresh = 60, + .xres = 800, + .yres = 600, + .pixclock = 25000, + .left_margin = 88, + .right_margin = 40, + .upper_margin = 23, + .lower_margin = 1, + .hsync_len = 128, + .vsync_len = 4, + .sync = FB_SYNC_COMP_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + .vmode = FB_VMODE_NONINTERLACED +}; +#else /* This setting is used for the ifm pdm360ng with PRIMEVIEW PM070WL3 */ static struct fb_videomode fsl_diu_mode_800 = { .refresh = 60, @@ -66,6 +83,7 @@ static struct fb_videomode fsl_diu_mode_800 = { .sync = 0, .vmode = FB_VMODE_NONINTERLACED }; +#endif
/* * These parameters give default parameters diff --git a/include/configs/P1022DS.h b/include/configs/P1022DS.h index ad10550..fd2d869 100644 --- a/include/configs/P1022DS.h +++ b/include/configs/P1022DS.h @@ -220,6 +220,7 @@ * disable empty flash sector detection, which is I/O-intensive. */ #undef CONFIG_SYS_FLASH_EMPTY_INFO +#define CONFIG_SHARP_LQ084S3LG01_TFT_LCD #endif
#ifndef CONFIG_DIU @@ -510,9 +511,10 @@ "diuregs=md e002c000 1d\0" \ "dium=mw e002c01c\0" \ "diuerr=md e002c014 1\0" \ - "othbootargs=diufb=15M video=fslfb:1280x1024-32@60,monitor=0 tty0\0" \ + "othbootargs=diufb=15M video=fslfb: $resolution -32@60,monitor=$monitor tty0\0" \ "hwconfig=esdhc;audclk:12\0" \ - "monitor=0-DVI\0" + "monitor=0\0" \ + "resolution=800x600\0"
#define CONFIG_HDBOOT \ "setenv bootargs root=/dev/$bdev rw " \

On Mar 6, 2011, at 10:17 PM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
SHARP LQ084S3LG01 TFT LCD is the default configuration with P1022DS RevC board. It only support 800x600 resolutions. While using DIU's DVI or LVDS ports, some environment var should be setting:
DVI: 'setenv monitor 0' 'setenv resolution 1280x1024'
LVDS(default): 'setenv monitor 1' 'setenv resolution 800x600'
environment var 'othbootargs' should be: othbootargs=diufb=15M video=fslfb: $resolution -32@60,monitor=$monitor tty0
Save environment var 'monitor' as '0' or '1' then reset board, DIU will change signal out to DVI or LVDS. DIU driver will according environment var 'monitor' to automatic setting environment var 'resolution' as 800x600(SHARP LQ084S3LG01 LCD) or 1280x1024(DELL monitor).
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
board/freescale/p1022ds/diu.c | 8 ++++++-- doc/README.p1022ds | 22 ++++++++++++++++++++++ drivers/video/fsl_diu_fb.c | 20 +++++++++++++++++++- include/configs/P1022DS.h | 6 ++++-- 4 files changed, 51 insertions(+), 5 deletions(-)
Timur,
what about this patch?
- k

Kumar Gala wrote:
what about this patch?
I missed this one. Unfortunately, it conflicts with my patch. I'll have to rewrite this one to make it work.
Plus, there were problems with it. For instance, I'm not crazy about the setenv() calls (I NAK'd an earlier internal version of this patch that had similar calls).
I'll take care of it next week.

Dear Kumar Gala,
In message 31FF7C4D-599D-43FF-AC83-22086B69FE88@kernel.crashing.org you wrote:
board/freescale/p1022ds/diu.c | 8 ++++++-- doc/README.p1022ds | 22 ++++++++++++++++++++++ drivers/video/fsl_diu_fb.c | 20 +++++++++++++++++++- include/configs/P1022DS.h | 6 ++++-- 4 files changed, 51 insertions(+), 5 deletions(-)
Timur,
what about this patch?
It needs Anatolij's ACK!
Best regards,
Wolfgang Denk

On Mar 6, 2011, at 10:17 PM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
Set default configuration to have SDHC controller enabled, AUDIO enabled(codec clock sources is 12MHz) and disable TDM.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
include/configs/P1022DS.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
applied to 85xx
- k

From: Jiang Yutang b14898@freescale.com
For soc which have pin multiplex relation, some of them can't enable simultaneously. This patch add environment var 'hwconfig' content defination for them. you can enable some one function by setting environment var 'hwconfig' content and reset board. Detail setting please refer doc/README.p1022ds
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org --- * TDM need some configration option by SPI, so enable SPI while enable TDM.
arch/powerpc/include/asm/immap_85xx.h | 10 ++++++ board/freescale/p1022ds/p1022ds.c | 56 ++++++++++++++++++++++++++------ doc/README.p1022ds | 24 ++++++++++++++ 3 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 doc/README.p1022ds
diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 5118fe0..b51017b 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1937,7 +1937,17 @@ typedef struct ccsr_gur { #define MPC85xx_PMUXCR_QE10 0x00000020 #define MPC85xx_PMUXCR_QE11 0x00000010 #define MPC85xx_PMUXCR_QE12 0x00000008 +#if defined(CONFIG_P1013) || defined(CONFIG_P1022) +#define MPC85xx_PMUXCR_TDM_MASK 0x0001cc00 +#define MPC85xx_PMUXCR_TDM 0x00014800 +#define MPC85xx_PMUXCR_SPI_MASK 0x00600000 +#define MPC85xx_PMUXCR_SPI 0x00000000 +#endif u32 pmuxcr2; /* Alt. function signal multiplex control 2 */ +#if defined(CONFIG_P1013) || defined(CONFIG_P1022) +#define MPC85xx_PMUXCR2_ETSECUSB_MASK 0x001f1000 +#define MPC85xx_PMUXCR2_USB 0x00150000 +#endif u8 res6[8]; u32 devdisr; /* Device disable control */ #define MPC85xx_DEVDISR_PCI1 0x80000000 diff --git a/board/freescale/p1022ds/p1022ds.c b/board/freescale/p1022ds/p1022ds.c index 6f20dc3..8b78404 100644 --- a/board/freescale/p1022ds/p1022ds.c +++ b/board/freescale/p1022ds/p1022ds.c @@ -93,11 +93,19 @@ int checkboard(void) /* Choose the 11.2896Mhz codec reference clock */ #define CONFIG_PIXIS_BRDCFG1_AUDCLK_11 0x01
+/* Connect to USB2 */ +#define CONFIG_PIXIS_BRDCFG0_USB2 0x10 +/* Connect to TFM bus */ +#define CONFIG_PIXIS_BRDCFG1_TDM 0x0c +/* Connect to SPI */ +#define CONFIG_PIXIS_BRDCFG0_SPI 0x80 + int misc_init_r(void) { u8 temp; const char *audclk; size_t arglen; + ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
/* For DVI, enable the TFP410 Encoder. */
@@ -115,22 +123,48 @@ int misc_init_r(void) return -1; debug("DVI Encoder Read: 0x%02x\n",temp);
+ /* Enable the USB2 in PMUXCR2 and FGPA */ + if (hwconfig("usb2")) { + clrsetbits_be32(&gur->pmuxcr2, MPC85xx_PMUXCR2_ETSECUSB_MASK, + MPC85xx_PMUXCR2_USB); + setbits_8(&pixis->brdcfg0, CONFIG_PIXIS_BRDCFG0_USB2); + } + + /* tdm and audio can not enable simultaneous*/ + if (hwconfig("tdm") && hwconfig("audclk")){ + printf("WARNING: TDM and AUDIO can not be enabled simultaneous !\n"); + return -1; + } + + /* Enable the TDM in PMUXCR and FGPA */ + if (hwconfig("tdm")) { + clrsetbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_TDM_MASK, + MPC85xx_PMUXCR_TDM); + setbits_8(&pixis->brdcfg1, CONFIG_PIXIS_BRDCFG1_TDM); + /* TDM need some configration option by SPI */ + clrsetbits_be32(&gur->pmuxcr, MPC85xx_PMUXCR_SPI_MASK, + MPC85xx_PMUXCR_SPI); + setbits_8(&pixis->brdcfg0, CONFIG_PIXIS_BRDCFG0_SPI); + } + /* * Enable the reference clock for the WM8776 codec, and route the MUX * pins for SSI. The default is the 12.288 MHz clock */
- temp = in_8(&pixis->brdcfg1) & ~(CONFIG_PIXIS_BRDCFG1_SSI_TDM_MASK | - CONFIG_PIXIS_BRDCFG1_AUDCLK_MASK); - temp |= CONFIG_PIXIS_BRDCFG1_SSI_TDM_SSI; - - audclk = hwconfig_arg("audclk", &arglen); - /* Check the first two chars only */ - if (audclk && (strncmp(audclk, "11", 2) == 0)) - temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_11; - else - temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_12; - out_8(&pixis->brdcfg1, temp); + if (hwconfig("audclk")) { + temp = in_8(&pixis->brdcfg1) & ~(CONFIG_PIXIS_BRDCFG1_SSI_TDM_MASK | + CONFIG_PIXIS_BRDCFG1_AUDCLK_MASK); + temp |= CONFIG_PIXIS_BRDCFG1_SSI_TDM_SSI; + + audclk = hwconfig_arg("audclk", &arglen); + /* Check the first two chars only */ + if (audclk && (strncmp(audclk, "11", 2) == 0)) + temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_11; + else + temp |= CONFIG_PIXIS_BRDCFG1_AUDCLK_12; + setbits_8(&pixis->brdcfg1, temp); + }
return 0; } diff --git a/doc/README.p1022ds b/doc/README.p1022ds new file mode 100644 index 0000000..473ecf6 --- /dev/null +++ b/doc/README.p1022ds @@ -0,0 +1,24 @@ +Overview +-------- +P1022ds is a Low End Dual core platform supporting the P1022 processor +of QorIQ series. P1022 is an e500 based dual core SOC. + + +Pin Multiplex(hwconfig setting) +------------------------------- +Add the environment 'usb2', 'audclk' and 'tdm' to support pin multiplex +via hwconfig, i.e: +'setenv hwconfig usb2' to enable USB2 and disable eTsec2 +'setenv hwconfig tdm' to enable TDM and disable Audio +'setenv hwconfig audclk:12' to enable Audio(codec clock sources is 12MHz) + and disable TDM +'setenv hwconfig 'usb2;tdm' to enable USB2 and TDM, disable eTsec2 and Audio +'setenv hwconfig 'usb2;audclk:11' to enable USB2 and Audio(codec clock sources + is 11MHz), disable eTsec2 and TDM + +Warning: TDM and AUDIO can not enable simultaneous ! +and AUDIO codec clock sources only setting as 11MHz or 12MHz ! +'setenv hwconfig 'audclk:12;tdm' --- error ! +'setenv hwconfig 'audclk:11;tdm' --- error ! +'setenv hwconfig 'audclk:10' --- error ! +

On Mar 13, 2011, at 10:05 AM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
For soc which have pin multiplex relation, some of them can't enable simultaneously. This patch add environment var 'hwconfig' content defination for them. you can enable some one function by setting environment var 'hwconfig' content and reset board. Detail setting please refer doc/README.p1022ds
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
- TDM need some configration option by SPI, so enable SPI while enable TDM.
applied to 85xx
- k

On Mar 6, 2011, at 10:17 PM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
For soc which have pin multiplex relation, some of them can't enable simultaneously. This patch add environment var 'hwconfig' content defination for them. you can enable some one function by setting environment var 'hwconfig' content and reset board. Detail setting please refer doc/README.p1022ds
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
arch/powerpc/include/asm/immap_85xx.h | 8 +++++ board/freescale/p1022ds/p1022ds.c | 50 +++++++++++++++++++++++++------- doc/README.p1022ds | 24 ++++++++++++++++ 3 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 doc/README.p1022ds
applied to 85xx
- k

On Sun, Mar 6, 2011 at 10:17 PM, Kumar Gala galak@kernel.crashing.org wrote:
From: Jiang Yutang b14898@freescale.com
Added two build configurations with DIU enabled on P1022DS and fixed the configuration for LVDS monitors to enable backlighting.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
board/freescale/p1022ds/diu.c | 7 +++++-- boards.cfg | 2 ++ include/configs/P1022DS.h | 4 +++-
Just a heads-up, this will cause a merge conflict with my patch, "[v4] powerpc: clean up DIU macro definitions for Freescale reference boards", which was posted about three weeks ago.

On Mar 7, 2011, at 5:02 PM, Timur Tabi wrote:
On Sun, Mar 6, 2011 at 10:17 PM, Kumar Gala galak@kernel.crashing.org wrote:
From: Jiang Yutang b14898@freescale.com
Added two build configurations with DIU enabled on P1022DS and fixed the configuration for LVDS monitors to enable backlighting.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
board/freescale/p1022ds/diu.c | 7 +++++-- boards.cfg | 2 ++ include/configs/P1022DS.h | 4 +++-
Just a heads-up, this will cause a merge conflict with my patch, "[v4] powerpc: clean up DIU macro definitions for Freescale reference boards", which was posted about three weeks ago.
I'll deal with merge issues, can you ack or provide feedback on this patch
- k

Kumar Gala wrote:
I'll deal with merge issues, can you ack or provide feedback on this patch
My patch, "[v3] powerpc: user 'video-mode' environment variable to configure DIU" ("user" should be "use") should be applied instead.

On Mar 6, 2011, at 10:17 PM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
Make the support for ATI graphics cards mutually exclusive with DIU.
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
include/configs/P1022DS.h | 16 ++++++++++++++++ 1 files changed, 16 insertions(+), 0 deletions(-)
applied to 85xx
- k

On Mar 6, 2011, at 10:17 PM, Kumar Gala wrote:
From: Jiang Yutang b14898@freescale.com
Signed-off-by: Jiang Yutang b14898@freescale.com Signed-off-by: Kumar Gala galak@kernel.crashing.org
board/freescale/p1022ds/p1022ds.c | 3 ++ boards.cfg | 1 + include/configs/P1022DS.h | 46 ++++++++++++++++++++++++++++++++++++- 3 files changed, 49 insertions(+), 1 deletions(-)
applied to 85xx next
- k
participants (4)
-
Kumar Gala
-
Tabi Timur-B04825
-
Timur Tabi
-
Wolfgang Denk