Release Linux 4.11.0-openpower1

New upstream release. This includes all of the patches we were carrying
aginst the Aspeed ast DRM driver.

We still carry three patches:

 - XCHI
   * xhci: do not halt the secondary HCD
   * xhci: Use xhci_pci_remove for xhci device shutdown
 - OPAL
  * powerpc/powernv: Add OPAL exports attributes to sysfs

The skiroot_p9 and skiroot defconifgs were regenerated against the
upstream kernel.

Signed-off-by: Joel Stanley <joel@jms.id.au>
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index b25db86..e080a22 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 1fd42f9..4c3c4ad 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index 9715034..f86751b 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index a73cb8d..5cc44dd 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 2bed733..09bbeef 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/linux/skiroot_defconfig b/openpower/configs/linux/skiroot_defconfig
index a43fdd9..7e86f24 100644
--- a/openpower/configs/linux/skiroot_defconfig
+++ b/openpower/configs/linux/skiroot_defconfig
@@ -51,7 +51,6 @@
 CONFIG_CMDLINE_BOOL=y
 CONFIG_CMDLINE="console=tty0 console=hvc0 quiet"
 # CONFIG_SECCOMP is not set
-CONFIG_PCI_MSI=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -150,7 +149,6 @@
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
 # CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
@@ -222,7 +220,6 @@
 CONFIG_CRC_ITU_T=y
 CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
diff --git a/openpower/configs/linux/skiroot_p9_defconfig b/openpower/configs/linux/skiroot_p9_defconfig
index bb96f51..9884909 100644
--- a/openpower/configs/linux/skiroot_p9_defconfig
+++ b/openpower/configs/linux/skiroot_p9_defconfig
@@ -51,7 +51,6 @@
 CONFIG_CMDLINE_BOOL=y
 CONFIG_CMDLINE="console=tty0 console=hvc0 powersave=off"
 # CONFIG_SECCOMP is not set
-CONFIG_PCI_MSI=y
 CONFIG_NET=y
 CONFIG_PACKET=y
 CONFIG_UNIX=y
@@ -142,7 +141,6 @@
 CONFIG_NETXEN_NIC=m
 CONFIG_SFC=m
 # CONFIG_WLAN is not set
-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_MISC=y
 # CONFIG_SERIO_SERPORT is not set
@@ -209,7 +207,6 @@
 CONFIG_CRC_ITU_T=y
 CONFIG_LIBCRC32C=y
 CONFIG_PRINTK_TIME=y
-CONFIG_DEBUG_FS=y
 CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 CONFIG_DEBUG_STACKOVERFLOW=y
diff --git a/openpower/configs/openpower_mambo_defconfig b/openpower/configs/openpower_mambo_defconfig
index f3a61ce..ddd82fb 100644
--- a/openpower/configs/openpower_mambo_defconfig
+++ b/openpower/configs/openpower_mambo_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/openpower_p9_mambo_defconfig b/openpower/configs/openpower_p9_mambo_defconfig
index 5b782cf..f781f2b 100644
--- a/openpower/configs/openpower_p9_mambo_defconfig
+++ b/openpower/configs/openpower_p9_mambo_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
index f6bfe0d..0a2765b 100644
--- a/openpower/configs/p9dsu_defconfig
+++ b/openpower/configs/p9dsu_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index d7c89a1..d5d7ec4 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
index 6a4605b..84733b1 100644
--- a/openpower/configs/romulus_defconfig
+++ b/openpower/configs/romulus_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index 6da5ce8..91868e9 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
index 7c05ab4..695fa28 100644
--- a/openpower/configs/zaius_defconfig
+++ b/openpower/configs/zaius_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
index 73f7cb1..7442f1b 100644
--- a/openpower/configs/zz_defconfig
+++ b/openpower/configs/zz_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10.7"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_p9_defconfig"
diff --git a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
index b6226cf..a752d43 100644
--- a/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
+++ b/openpower/linux/0001-xhci-Use-xhci_pci_remove-for-xhci-device-shutdown.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Thadeu Lima De Souza Cascardo <thadeul@br.ibm.com>
 Date: Tue, 25 Mar 2014 10:45:16 -0400
-Subject: [PATCH 01/12] xhci: Use xhci_pci_remove for xhci device shutdown
+Subject: [PATCH 1/4] xhci: Use xhci_pci_remove for xhci device shutdown
 
 Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
 Signed-off-by: Joel Stanley <joel@jms.id.au>
@@ -10,10 +10,10 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 954abfd5014d..dc8c490f6dd4 100644
+index fc99f51d12e1..de6075b4183e 100644
 --- a/drivers/usb/host/xhci-pci.c
 +++ b/drivers/usb/host/xhci-pci.c
-@@ -471,7 +471,7 @@ static struct pci_driver xhci_pci_driver = {
+@@ -467,7 +467,7 @@ static struct pci_driver xhci_pci_driver = {
  	.remove =	xhci_pci_remove,
  	/* suspend and resume implemented later */
  
diff --git a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
index 92c5a95..ad7d0a1 100644
--- a/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
+++ b/openpower/linux/0002-xhci-do-not-halt-the-secondary-HCD.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Tue, 19 Jul 2016 22:43:26 +0930
-Subject: [PATCH 02/12] xhci: do not halt the secondary HCD
+Subject: [PATCH 2/4] xhci: do not halt the secondary HCD
 
 We can't halt the secondary HCD, because it's also the primary HCD,
 which will cause problems if we have devices attached to the primary
@@ -13,7 +13,7 @@
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 9a0ec116654a..315020dac049 100644
+index 953fd8f62df0..d17a7039b154 100644
 --- a/drivers/usb/host/xhci.c
 +++ b/drivers/usb/host/xhci.c
 @@ -689,6 +689,21 @@ void xhci_stop(struct usb_hcd *hcd)
diff --git a/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch b/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch
deleted file mode 100644
index c9670e5..0000000
--- a/openpower/linux/0003-drm-ast-const-ify-mode-setting-tables.patch
+++ /dev/null
@@ -1,277 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:45:24 +1100
-Subject: [PATCH 03/12] drm/ast: const'ify mode setting tables
-
-And fix some comment alignment & space/tabs while at it
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_drv.h    |   4 +-
- drivers/gpu/drm/ast/ast_mode.c   |   8 +--
- drivers/gpu/drm/ast/ast_tables.h | 106 +++++++++++++++++++--------------------
- 3 files changed, 59 insertions(+), 59 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
-index 3bedcf7ddd2a..3fd9d6e96bce 100644
---- a/drivers/gpu/drm/ast/ast_drv.h
-+++ b/drivers/gpu/drm/ast/ast_drv.h
-@@ -304,8 +304,8 @@ struct ast_vbios_dclk_info {
- };
- 
- struct ast_vbios_mode_info {
--	struct ast_vbios_stdtable *std_table;
--	struct ast_vbios_enhtable *enh_table;
-+	const struct ast_vbios_stdtable *std_table;
-+	const struct ast_vbios_enhtable *enh_table;
- };
- 
- extern int ast_mode_init(struct drm_device *dev);
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index e26c98f51eb4..1ff596e90225 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -80,9 +80,9 @@ static bool ast_get_vbios_mode_info(struct drm_crtc *crtc, struct drm_display_mo
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
- 	u32 refresh_rate_index = 0, mode_id, color_index, refresh_rate;
-+	const struct ast_vbios_enhtable *best = NULL;
- 	u32 hborder, vborder;
- 	bool check_sync;
--	struct ast_vbios_enhtable *best = NULL;
- 
- 	switch (crtc->primary->fb->bits_per_pixel) {
- 	case 8:
-@@ -146,7 +146,7 @@ static bool ast_get_vbios_mode_info(struct drm_crtc *crtc, struct drm_display_mo
- 	refresh_rate = drm_mode_vrefresh(mode);
- 	check_sync = vbios_mode->enh_table->flags & WideScreenMode;
- 	do {
--		struct ast_vbios_enhtable *loop = vbios_mode->enh_table;
-+		const struct ast_vbios_enhtable *loop = vbios_mode->enh_table;
- 
- 		while (loop->refresh_rate != 0xff) {
- 			if ((check_sync) &&
-@@ -225,7 +225,7 @@ static void ast_set_std_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
- 			    struct ast_vbios_mode_info *vbios_mode)
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
--	struct ast_vbios_stdtable *stdtable;
-+	const struct ast_vbios_stdtable *stdtable;
- 	u32 i;
- 	u8 jreg;
- 
-@@ -381,7 +381,7 @@ static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
- 			     struct ast_vbios_mode_info *vbios_mode)
- {
- 	struct ast_private *ast = dev->dev_private;
--	struct ast_vbios_dclk_info *clk_info;
-+	const struct ast_vbios_dclk_info *clk_info;
- 
- 	clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
- 
-diff --git a/drivers/gpu/drm/ast/ast_tables.h b/drivers/gpu/drm/ast/ast_tables.h
-index 3608d5aa7451..a4ddf901a54f 100644
---- a/drivers/gpu/drm/ast/ast_tables.h
-+++ b/drivers/gpu/drm/ast/ast_tables.h
-@@ -78,37 +78,37 @@
- #define VCLK97_75     		0x19
- #define VCLK118_25			0x1A
- 
--static struct ast_vbios_dclk_info dclk_table[] = {
--	{0x2C, 0xE7, 0x03},					/* 00: VCLK25_175	*/
--	{0x95, 0x62, 0x03},				        /* 01: VCLK28_322	*/
--	{0x67, 0x63, 0x01},				        /* 02: VCLK31_5         */
--	{0x76, 0x63, 0x01},				        /* 03: VCLK36         	*/
--	{0xEE, 0x67, 0x01},				        /* 04: VCLK40          	*/
--	{0x82, 0x62, 0x01}, 			        /* 05: VCLK49_5        	*/
--	{0xC6, 0x64, 0x01},                        	        /* 06: VCLK50          	*/
--	{0x94, 0x62, 0x01},                        	        /* 07: VCLK56_25       	*/
--	{0x80, 0x64, 0x00},                        	        /* 08: VCLK65		*/
--	{0x7B, 0x63, 0x00},                        	        /* 09: VCLK75	        */
--	{0x67, 0x62, 0x00},				        /* 0A: VCLK78_75       	*/
--	{0x7C, 0x62, 0x00},                        	        /* 0B: VCLK94_5        	*/
--	{0x8E, 0x62, 0x00},                        	        /* 0C: VCLK108         	*/
--	{0x85, 0x24, 0x00},                        	        /* 0D: VCLK135         	*/
--	{0x67, 0x22, 0x00},                        	        /* 0E: VCLK157_5       	*/
--	{0x6A, 0x22, 0x00},				        /* 0F: VCLK162         	*/
--	{0x4d, 0x4c, 0x80},				        /* 10: VCLK154      	*/
--	{0xa7, 0x78, 0x80},					/* 11: VCLK83.5         */
--	{0x28, 0x49, 0x80},					/* 12: VCLK106.5        */
--	{0x37, 0x49, 0x80},					/* 13: VCLK146.25       */
--	{0x1f, 0x45, 0x80},					/* 14: VCLK148.5        */
--	{0x47, 0x6c, 0x80},					/* 15: VCLK71       */
--	{0x25, 0x65, 0x80},					/* 16: VCLK88.75    */
--	{0x77, 0x58, 0x80},					/* 17: VCLK119      */
--	{0x32, 0x67, 0x80},				    /* 18: VCLK85_5     */
--	{0x6a, 0x6d, 0x80},					/* 19: VCLK97_75	*/
--	{0x3b, 0x2c, 0x81},					/* 1A: VCLK118_25	*/
-+static const struct ast_vbios_dclk_info dclk_table[] = {
-+	{0x2C, 0xE7, 0x03},			/* 00: VCLK25_175	*/
-+	{0x95, 0x62, 0x03},			/* 01: VCLK28_322	*/
-+	{0x67, 0x63, 0x01},			/* 02: VCLK31_5		*/
-+	{0x76, 0x63, 0x01},			/* 03: VCLK36		*/
-+	{0xEE, 0x67, 0x01},			/* 04: VCLK40		*/
-+	{0x82, 0x62, 0x01},			/* 05: VCLK49_5		*/
-+	{0xC6, 0x64, 0x01},			/* 06: VCLK50		*/
-+	{0x94, 0x62, 0x01},			/* 07: VCLK56_25	*/
-+	{0x80, 0x64, 0x00},			/* 08: VCLK65		*/
-+	{0x7B, 0x63, 0x00},			/* 09: VCLK75		*/
-+	{0x67, 0x62, 0x00},			/* 0A: VCLK78_75	*/
-+	{0x7C, 0x62, 0x00},			/* 0B: VCLK94_5		*/
-+	{0x8E, 0x62, 0x00},			/* 0C: VCLK108		*/
-+	{0x85, 0x24, 0x00},			/* 0D: VCLK135		*/
-+	{0x67, 0x22, 0x00},			/* 0E: VCLK157_5	*/
-+	{0x6A, 0x22, 0x00},			/* 0F: VCLK162		*/
-+	{0x4d, 0x4c, 0x80},			/* 10: VCLK154		*/
-+	{0xa7, 0x78, 0x80},			/* 11: VCLK83.5		*/
-+	{0x28, 0x49, 0x80},			/* 12: VCLK106.5	*/
-+	{0x37, 0x49, 0x80},			/* 13: VCLK146.25	*/
-+	{0x1f, 0x45, 0x80},			/* 14: VCLK148.5	*/
-+	{0x47, 0x6c, 0x80},			/* 15: VCLK71		*/
-+	{0x25, 0x65, 0x80},			/* 16: VCLK88.75	*/
-+	{0x77, 0x58, 0x80},			/* 17: VCLK119		*/
-+	{0x32, 0x67, 0x80},			/* 18: VCLK85_5		*/
-+	{0x6a, 0x6d, 0x80},			/* 19: VCLK97_75	*/
-+	{0x3b, 0x2c, 0x81},			/* 1A: VCLK118_25	*/
- };
- 
--static struct ast_vbios_stdtable vbios_stdtable[] = {
-+static const struct ast_vbios_stdtable vbios_stdtable[] = {
- 	/* MD_2_3_400 */
- 	{
- 		0x67,
-@@ -181,21 +181,21 @@ static struct ast_vbios_stdtable vbios_stdtable[] = {
- 	},
- };
- 
--static struct ast_vbios_enhtable res_640x480[] = {
-+static const struct ast_vbios_enhtable res_640x480[] = {
- 	{ 800, 640, 8, 96, 525, 480, 2, 2, VCLK25_175,	/* 60Hz */
- 	  (SyncNN | HBorder | VBorder | Charx8Dot), 60, 1, 0x2E },
- 	{ 832, 640, 16, 40, 520, 480, 1, 3, VCLK31_5,	/* 72Hz */
- 	  (SyncNN | HBorder | VBorder | Charx8Dot), 72, 2, 0x2E  },
- 	{ 840, 640, 16, 64, 500, 480, 1, 3, VCLK31_5,	/* 75Hz */
- 	  (SyncNN | Charx8Dot) , 75, 3, 0x2E },
--	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,		/* 85Hz */
-+	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,	/* 85Hz */
- 	  (SyncNN | Charx8Dot) , 85, 4, 0x2E },
--	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,		/* end */
-+	{ 832, 640, 56, 56, 509, 480, 1, 3, VCLK36,	/* end */
- 	  (SyncNN | Charx8Dot) , 0xFF, 4, 0x2E },
- };
- 
--static struct ast_vbios_enhtable res_800x600[] = {
--	{1024, 800, 24, 72, 625, 600, 1, 2, VCLK36,		/* 56Hz */
-+static const struct ast_vbios_enhtable res_800x600[] = {
-+	{1024, 800, 24, 72, 625, 600, 1, 2, VCLK36,	/* 56Hz */
- 	 (SyncPP | Charx8Dot), 56, 1, 0x30 },
- 	{1056, 800, 40, 128, 628, 600, 1, 4, VCLK40,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 2, 0x30 },
-@@ -210,7 +210,7 @@ static struct ast_vbios_enhtable res_800x600[] = {
- };
- 
- 
--static struct ast_vbios_enhtable res_1024x768[] = {
-+static const struct ast_vbios_enhtable res_1024x768[] = {
- 	{1344, 1024, 24, 136, 806, 768, 3, 6, VCLK65,	/* 60Hz */
- 	 (SyncNN | Charx8Dot), 60, 1, 0x31 },
- 	{1328, 1024, 24, 136, 806, 768, 3, 6, VCLK75,	/* 70Hz */
-@@ -223,7 +223,7 @@ static struct ast_vbios_enhtable res_1024x768[] = {
- 	 (SyncPP | Charx8Dot), 0xFF, 4, 0x31 },
- };
- 
--static struct ast_vbios_enhtable res_1280x1024[] = {
-+static const struct ast_vbios_enhtable res_1280x1024[] = {
- 	{1688, 1280, 48, 112, 1066, 1024, 1, 3, VCLK108,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 1, 0x32 },
- 	{1688, 1280, 16, 144, 1066, 1024, 1, 3, VCLK135,	/* 75Hz */
-@@ -234,7 +234,7 @@ static struct ast_vbios_enhtable res_1280x1024[] = {
- 	 (SyncPP | Charx8Dot), 0xFF, 3, 0x32 },
- };
- 
--static struct ast_vbios_enhtable res_1600x1200[] = {
-+static const struct ast_vbios_enhtable res_1600x1200[] = {
- 	{2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,	/* 60Hz */
- 	 (SyncPP | Charx8Dot), 60, 1, 0x33 },
- 	{2160, 1600, 64, 192, 1250, 1200, 1, 3, VCLK162,	/* end */
-@@ -242,23 +242,23 @@ static struct ast_vbios_enhtable res_1600x1200[] = {
- };
- 
- /* 16:9 */
--static struct ast_vbios_enhtable res_1360x768[] = {
--	{1792, 1360, 64,112, 795,  768, 3, 6, VCLK85_5,	         /* 60Hz */
-+static const struct ast_vbios_enhtable res_1360x768[] = {
-+	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,		/* 60Hz */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
--	{1792, 1360, 64,112, 795,  768, 3, 6, VCLK85_5,	         /* end */
-+	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,	         /* end */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x39 },
- };
- 
--static struct ast_vbios_enhtable res_1600x900[] = {
--	{1760, 1600, 48, 32, 926,  900, 3, 5, VCLK97_75,	/* 60Hz CVT RB */
-+static const struct ast_vbios_enhtable res_1600x900[] = {
-+	{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75,		/* 60Hz CVT RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x3A },
--	{2112, 1600, 88,168, 934,  900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-+	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x3A },
--	{2112, 1600, 88,168, 934,  900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-+	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x3A },
- };
- 
--static struct ast_vbios_enhtable res_1920x1080[] = {
-+static const struct ast_vbios_enhtable res_1920x1080[] = {
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x38 },
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
-@@ -267,8 +267,8 @@ static struct ast_vbios_enhtable res_1920x1080[] = {
- 
- 
- /* 16:10 */
--static struct ast_vbios_enhtable res_1280x800[] = {
--	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,	/* 60Hz RB */
-+static const struct ast_vbios_enhtable res_1280x800[] = {
-+	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
-@@ -277,7 +277,7 @@ static struct ast_vbios_enhtable res_1280x800[] = {
- 
- };
- 
--static struct ast_vbios_enhtable res_1440x900[] = {
-+static const struct ast_vbios_enhtable res_1440x900[] = {
- 	{1600, 1440, 48, 32,  926,  900, 3, 6, VCLK88_75,	/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
-@@ -286,8 +286,8 @@ static struct ast_vbios_enhtable res_1440x900[] = {
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x36 },
- };
- 
--static struct ast_vbios_enhtable res_1680x1050[] = {
--	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,	/* 60Hz RB */
-+static const struct ast_vbios_enhtable res_1680x1050[] = {
-+	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
-@@ -295,10 +295,10 @@ static struct ast_vbios_enhtable res_1680x1050[] = {
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 2, 0x37 },
- };
- 
--static struct ast_vbios_enhtable res_1920x1200[] = {
--	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,	/* 60Hz RB*/
-+static const struct ast_vbios_enhtable res_1920x1200[] = {
-+	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB*/
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x34 },
--	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,	/* 60Hz RB */
-+	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB */
- 	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x34 },
- };
- 
--- 
-2.11.0
-
diff --git a/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
new file mode 100644
index 0000000..d31ee40
--- /dev/null
+++ b/openpower/linux/0003-powerpc-powernv-Add-OPAL-exports-attributes-to-sysfs.patch
@@ -0,0 +1,120 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Matt Brown <matthew.brown.dev@gmail.com>
+Date: Thu, 30 Mar 2017 10:28:01 +1100
+Subject: [PATCH 3/4] powerpc/powernv: Add OPAL exports attributes to sysfs
+
+New versions of OPAL have a device node /ibm,opal/firmware/exports, each
+property of which describes a range of memory in OPAL that Linux might
+want to export to userspace for debugging.
+
+This patch adds a sysfs file under 'opal/exports' for each property
+found there, and makes it read-only by root.
+
+Signed-off-by: Matt Brown <matthew.brown.dev@gmail.com>
+[mpe: Drop counting of props, rename to attr, free on sysfs error, c'log]
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+(cherry picked from commit 11fe909d236263f62808dc3c73caf798e026d7aa)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/platforms/powernv/opal.c | 76 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
+
+diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
+index e0f856bfbfe8..25ea8f6fe7f8 100644
+--- a/arch/powerpc/platforms/powernv/opal.c
++++ b/arch/powerpc/platforms/powernv/opal.c
+@@ -595,6 +595,79 @@ static void opal_export_symmap(void)
+ 		pr_warn("Error %d creating OPAL symbols file\n", rc);
+ }
+ 
++static ssize_t export_attr_read(struct file *fp, struct kobject *kobj,
++				struct bin_attribute *bin_attr, char *buf,
++				loff_t off, size_t count)
++{
++	return memory_read_from_buffer(buf, count, &off, bin_attr->private,
++				       bin_attr->size);
++}
++
++/*
++ * opal_export_attrs: creates a sysfs node for each property listed in
++ * the device-tree under /ibm,opal/firmware/exports/
++ * All new sysfs nodes are created under /opal/exports/.
++ * This allows for reserved memory regions (e.g. HDAT) to be read.
++ * The new sysfs nodes are only readable by root.
++ */
++static void opal_export_attrs(void)
++{
++	struct bin_attribute *attr;
++	struct device_node *np;
++	struct property *prop;
++	struct kobject *kobj;
++	u64 vals[2];
++	int rc;
++
++	np = of_find_node_by_path("/ibm,opal/firmware/exports");
++	if (!np)
++		return;
++
++	/* Create new 'exports' directory - /sys/firmware/opal/exports */
++	kobj = kobject_create_and_add("exports", opal_kobj);
++	if (!kobj) {
++		pr_warn("kobject_create_and_add() of exports failed\n");
++		return;
++	}
++
++	for_each_property_of_node(np, prop) {
++		if (!strcmp(prop->name, "name") || !strcmp(prop->name, "phandle"))
++			continue;
++
++		if (of_property_read_u64_array(np, prop->name, &vals[0], 2))
++			continue;
++
++		attr = kmalloc(sizeof(*attr), GFP_KERNEL);
++
++		if (attr == NULL) {
++			pr_warn("Failed kmalloc for bin_attribute!");
++			continue;
++		}
++
++		attr->attr.name = kstrdup(prop->name, GFP_KERNEL);
++		attr->attr.mode = 0400;
++		attr->read = export_attr_read;
++		attr->private = __va(vals[0]);
++		attr->size = vals[1];
++
++		if (attr->attr.name == NULL) {
++			pr_warn("Failed kstrdup for bin_attribute attr.name");
++			kfree(attr);
++			continue;
++		}
++
++		rc = sysfs_create_bin_file(kobj, attr);
++		if (rc) {
++			pr_warn("Error %d creating OPAL sysfs exports/%s file\n",
++				 rc, prop->name);
++			kfree(attr->attr.name);
++			kfree(attr);
++		}
++	}
++
++	of_node_put(np);
++}
++
+ static void __init opal_dump_region_init(void)
+ {
+ 	void *addr;
+@@ -733,6 +806,9 @@ static int __init opal_init(void)
+ 		opal_msglog_sysfs_init();
+ 	}
+ 
++	/* Export all properties */
++	opal_export_attrs();
++
+ 	/* Initialize platform devices: IPMI backend, PRD & flash interface */
+ 	opal_pdev_init("ibm,opal-ipmi");
+ 	opal_pdev_init("ibm,opal-flash");
+-- 
+2.11.0
+
diff --git a/openpower/linux/0012-Release-OpenPower-kernel.patch b/openpower/linux/0004-Release-OpenPower-kernel.patch
similarity index 72%
rename from openpower/linux/0012-Release-OpenPower-kernel.patch
rename to openpower/linux/0004-Release-OpenPower-kernel.patch
index 861001b..0c6477f 100644
--- a/openpower/linux/0012-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0004-Release-OpenPower-kernel.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
-Date: Tue, 28 Feb 2017 12:15:10 +1030
-Subject: [PATCH 12/12] Release OpenPower kernel
+Date: Wed, 3 May 2017 13:25:26 +0930
+Subject: [PATCH 4/4] Release OpenPower kernel
 
 Signed-off-by: Joel Stanley <joel@jms.id.au>
 ---
@@ -9,13 +9,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index 976e8d1a468a..507f49235ac9 100644
+index 4b074a904106..4b4855468558 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,7 +1,7 @@
  VERSION = 4
- PATCHLEVEL = 10
- SUBLEVEL = 7
+ PATCHLEVEL = 11
+ SUBLEVEL = 0
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Fearless Coyote
diff --git a/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch b/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch
deleted file mode 100644
index ffa2606..0000000
--- a/openpower/linux/0004-drm-ast-Remove-spurrious-include.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:55:58 +1100
-Subject: [PATCH 04/12] drm/ast: Remove spurrious include
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index fb9976254224..f01a937165b7 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -32,8 +32,6 @@
- #include <drm/drm_fb_helper.h>
- #include <drm/drm_crtc_helper.h>
- 
--#include "ast_dram_tables.h"
--
- void ast_set_index_reg_mask(struct ast_private *ast,
- 			    uint32_t base, uint8_t index,
- 			    uint8_t mask, uint8_t val)
--- 
-2.11.0
-
diff --git a/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch b/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch
deleted file mode 100644
index e72a789..0000000
--- a/openpower/linux/0005-drm-ast-Fix-calculation-of-MCLK.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:57:30 +1100
-Subject: [PATCH 05/12] drm/ast: Fix calculation of MCLK
-
-Some braces were missing causing an incorrect calculation.
-
-Y.C. Chen from Aspeed provided me with the right formula
-which I tested on AST2400 and 2500.
-
-The MCLK isn't currently used by the driver (it will eventually
-to filter modes) so the issue isn't catastrophic.
-
-Also make the printed value a bit more meaningful
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index f01a937165b7..8d87d3ca439b 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -354,7 +354,7 @@ static int ast_get_dram_info(struct drm_device *dev)
- 		div = 0x1;
- 		break;
- 	}
--	ast->mclk = ref_pll * (num + 2) / (denum + 2) * (div * 1000);
-+	ast->mclk = ref_pll * (num + 2) / ((denum + 2) * (div * 1000));
- 	return 0;
- }
- 
-@@ -498,7 +498,9 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 		if (ret)
- 			goto out_free;
- 		ast->vram_size = ast_get_vram_info(dev);
--		DRM_INFO("dram %d %d %d %08x\n", ast->mclk, ast->dram_type, ast->dram_bus_width, ast->vram_size);
-+		DRM_INFO("dram MCLK=%u Mhz type=%d bus_width=%d size=%08x\n",
-+			 ast->mclk, ast->dram_type,
-+			 ast->dram_bus_width, ast->vram_size);
- 	}
- 
- 	if (need_post)
--- 
-2.11.0
-
diff --git a/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch b/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch
deleted file mode 100644
index 34fb54a..0000000
--- a/openpower/linux/0006-drm-ast-Base-support-for-AST2500.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 14:36:46 +1100
-Subject: [PATCH 06/12] drm/ast: Base support for AST2500
-
-Add detection and mode setting updates for AST2500 generation chip,
-code originally from Aspeed and slightly reworked for coding style
-mostly by Ben. This doesn't contain the BMC DRAM POST code which
-is in a separate patch.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
----
-
-v2. Add 800Mhz default mclk for AST2500
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_drv.h    |  2 ++
- drivers/gpu/drm/ast/ast_main.c   | 32 +++++++++++++++++++---
- drivers/gpu/drm/ast/ast_mode.c   | 30 ++++++++++++++++-----
- drivers/gpu/drm/ast/ast_tables.h | 58 +++++++++++++++++++++++++++++++++-------
- 4 files changed, 103 insertions(+), 19 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h
-index 3fd9d6e96bce..d1c1d530abaa 100644
---- a/drivers/gpu/drm/ast/ast_drv.h
-+++ b/drivers/gpu/drm/ast/ast_drv.h
-@@ -64,6 +64,7 @@ enum ast_chip {
- 	AST2150,
- 	AST2300,
- 	AST2400,
-+	AST2500,
- 	AST1180,
- };
- 
-@@ -80,6 +81,7 @@ enum ast_tx_chip {
- #define AST_DRAM_1Gx32   3
- #define AST_DRAM_2Gx16   6
- #define AST_DRAM_4Gx16   7
-+#define AST_DRAM_8Gx16   8
- 
- struct ast_fbdev;
- 
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index 8d87d3ca439b..5a83d3793000 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -142,7 +142,10 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
- 		ast->chip = AST1100;
- 		DRM_INFO("AST 1180 detected\n");
- 	} else {
--		if (dev->pdev->revision >= 0x30) {
-+		if (dev->pdev->revision >= 0x40) {
-+			ast->chip = AST2500;
-+			DRM_INFO("AST 2500 detected\n");
-+		} else if (dev->pdev->revision >= 0x30) {
- 			ast->chip = AST2400;
- 			DRM_INFO("AST 2400 detected\n");
- 		} else if (dev->pdev->revision >= 0x20) {
-@@ -196,6 +199,9 @@ static int ast_detect_chip(struct drm_device *dev, bool *need_post)
- 			if (ast->chip == AST2400 &&
- 			    (scu_rev & 0x300) == 0x100) /* ast1400 */
- 				ast->support_wide_screen = true;
-+			if (ast->chip == AST2500 &&
-+			    scu_rev == 0x100)           /* ast2510 */
-+				ast->support_wide_screen = true;
- 		}
- 		break;
- 	}
-@@ -291,7 +297,10 @@ static int ast_get_dram_info(struct drm_device *dev)
- 	default:
- 		ast->dram_bus_width = 16;
- 		ast->dram_type = AST_DRAM_1Gx16;
--		ast->mclk = 396;
-+		if (ast->chip == AST2500)
-+			ast->mclk = 800;
-+		else
-+			ast->mclk = 396;
- 		return 0;
- 	}
- 
-@@ -300,7 +309,23 @@ static int ast_get_dram_info(struct drm_device *dev)
- 	else
- 		ast->dram_bus_width = 32;
- 
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2500) {
-+		switch (mcr_cfg & 0x03) {
-+		case 0:
-+			ast->dram_type = AST_DRAM_1Gx16;
-+			break;
-+		default:
-+		case 1:
-+			ast->dram_type = AST_DRAM_2Gx16;
-+			break;
-+		case 2:
-+			ast->dram_type = AST_DRAM_4Gx16;
-+			break;
-+		case 3:
-+			ast->dram_type = AST_DRAM_8Gx16;
-+			break;
-+		}
-+	} else if (ast->chip == AST2300 || ast->chip == AST2400) {
- 		switch (mcr_cfg & 0x03) {
- 		case 0:
- 			ast->dram_type = AST_DRAM_512Mx16;
-@@ -523,6 +548,7 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 	    ast->chip == AST2200 ||
- 	    ast->chip == AST2300 ||
- 	    ast->chip == AST2400 ||
-+	    ast->chip == AST2500 ||
- 	    ast->chip == AST1180) {
- 		dev->mode_config.max_width = 1920;
- 		dev->mode_config.max_height = 2048;
-diff --git a/drivers/gpu/drm/ast/ast_mode.c b/drivers/gpu/drm/ast/ast_mode.c
-index 1ff596e90225..e4db1c72940c 100644
---- a/drivers/gpu/drm/ast/ast_mode.c
-+++ b/drivers/gpu/drm/ast/ast_mode.c
-@@ -271,7 +271,11 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- {
- 	struct ast_private *ast = crtc->dev->dev_private;
- 	u8 jreg05 = 0, jreg07 = 0, jreg09 = 0, jregAC = 0, jregAD = 0, jregAE = 0;
--	u16 temp;
-+	u16 temp, precache = 0;
-+
-+	if ((ast->chip == AST2500) &&
-+	    (vbios_mode->enh_table->flags & AST2500PreCatchCRT))
-+		precache = 40;
- 
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x00);
- 
-@@ -297,12 +301,12 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- 		jregAD |= 0x01;  /* HBE D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x03, 0xE0, (temp & 0x1f));
- 
--	temp = (mode->crtc_hsync_start >> 3) - 1;
-+	temp = ((mode->crtc_hsync_start-precache) >> 3) - 1;
- 	if (temp & 0x100)
- 		jregAC |= 0x40; /* HRS D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x04, 0x00, temp);
- 
--	temp = ((mode->crtc_hsync_end >> 3) - 1) & 0x3f;
-+	temp = (((mode->crtc_hsync_end-precache) >> 3) - 1) & 0x3f;
- 	if (temp & 0x20)
- 		jregAD |= 0x04; /* HRE D[5] */
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x05, 0x60, (u8)((temp & 0x1f) | jreg05));
-@@ -363,6 +367,11 @@ static void ast_set_crtc_reg(struct drm_crtc *crtc, struct drm_display_mode *mod
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x09, 0xdf, jreg09);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xAE, 0x00, (jregAE | 0x80));
- 
-+	if (precache)
-+		ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x80);
-+	else
-+		ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0x3f, 0x00);
-+
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0x11, 0x7f, 0x80);
- }
- 
-@@ -383,12 +392,16 @@ static void ast_set_dclk_reg(struct drm_device *dev, struct drm_display_mode *mo
- 	struct ast_private *ast = dev->dev_private;
- 	const struct ast_vbios_dclk_info *clk_info;
- 
--	clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
-+	if (ast->chip == AST2500)
-+		clk_info = &dclk_table_ast2500[vbios_mode->enh_table->dclk_index];
-+	else
-+		clk_info = &dclk_table[vbios_mode->enh_table->dclk_index];
- 
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc0, 0x00, clk_info->param1);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xc1, 0x00, clk_info->param2);
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xbb, 0x0f,
--			       (clk_info->param3 & 0x80) | ((clk_info->param3 & 0x3) << 4));
-+			       (clk_info->param3 & 0xc0) |
-+			       ((clk_info->param3 & 0x3) << 4));
- }
- 
- static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode,
-@@ -421,7 +434,8 @@ static void ast_set_ext_reg(struct drm_crtc *crtc, struct drm_display_mode *mode
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xa8, 0xfd, jregA8);
- 
- 	/* Set Threshold */
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500) {
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x78);
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x60);
- 	} else if (ast->chip == AST2100 ||
-@@ -794,7 +808,9 @@ static int ast_mode_valid(struct drm_connector *connector,
- 		if ((mode->hdisplay == 1600) && (mode->vdisplay == 900))
- 			return MODE_OK;
- 
--		if ((ast->chip == AST2100) || (ast->chip == AST2200) || (ast->chip == AST2300) || (ast->chip == AST2400) || (ast->chip == AST1180)) {
-+		if ((ast->chip == AST2100) || (ast->chip == AST2200) ||
-+		    (ast->chip == AST2300) || (ast->chip == AST2400) ||
-+		    (ast->chip == AST2500) || (ast->chip == AST1180)) {
- 			if ((mode->hdisplay == 1920) && (mode->vdisplay == 1080))
- 				return MODE_OK;
- 
-diff --git a/drivers/gpu/drm/ast/ast_tables.h b/drivers/gpu/drm/ast/ast_tables.h
-index a4ddf901a54f..5f4c2e833a65 100644
---- a/drivers/gpu/drm/ast/ast_tables.h
-+++ b/drivers/gpu/drm/ast/ast_tables.h
-@@ -47,6 +47,7 @@
- #define SyncPN			(PVSync | NHSync)
- #define SyncNP			(NVSync | PHSync)
- #define SyncNN			(NVSync | NHSync)
-+#define AST2500PreCatchCRT		0x00004000
- 
- /* DCLK Index */
- #define VCLK25_175     		0x00
-@@ -108,6 +109,36 @@ static const struct ast_vbios_dclk_info dclk_table[] = {
- 	{0x3b, 0x2c, 0x81},			/* 1A: VCLK118_25	*/
- };
- 
-+static const struct ast_vbios_dclk_info dclk_table_ast2500[] = {
-+	{0x2C, 0xE7, 0x03},			/* 00: VCLK25_175	*/
-+	{0x95, 0x62, 0x03},			/* 01: VCLK28_322	*/
-+	{0x67, 0x63, 0x01},			/* 02: VCLK31_5		*/
-+	{0x76, 0x63, 0x01},			/* 03: VCLK36		*/
-+	{0xEE, 0x67, 0x01},			/* 04: VCLK40		*/
-+	{0x82, 0x62, 0x01},			/* 05: VCLK49_5		*/
-+	{0xC6, 0x64, 0x01},			/* 06: VCLK50		*/
-+	{0x94, 0x62, 0x01},			/* 07: VCLK56_25	*/
-+	{0x80, 0x64, 0x00},			/* 08: VCLK65		*/
-+	{0x7B, 0x63, 0x00},			/* 09: VCLK75		*/
-+	{0x67, 0x62, 0x00},			/* 0A: VCLK78_75	*/
-+	{0x7C, 0x62, 0x00},			/* 0B: VCLK94_5		*/
-+	{0x8E, 0x62, 0x00},			/* 0C: VCLK108		*/
-+	{0x85, 0x24, 0x00},			/* 0D: VCLK135		*/
-+	{0x67, 0x22, 0x00},			/* 0E: VCLK157_5	*/
-+	{0x6A, 0x22, 0x00},			/* 0F: VCLK162		*/
-+	{0x4d, 0x4c, 0x80},			/* 10: VCLK154		*/
-+	{0xa7, 0x78, 0x80},			/* 11: VCLK83.5		*/
-+	{0x28, 0x49, 0x80},			/* 12: VCLK106.5	*/
-+	{0x37, 0x49, 0x80},			/* 13: VCLK146.25	*/
-+	{0x1f, 0x45, 0x80},			/* 14: VCLK148.5	*/
-+	{0x47, 0x6c, 0x80},			/* 15: VCLK71		*/
-+	{0x25, 0x65, 0x80},			/* 16: VCLK88.75	*/
-+	{0x58, 0x01, 0x42},			/* 17: VCLK119		*/
-+	{0x32, 0x67, 0x80},			/* 18: VCLK85_5		*/
-+	{0x6a, 0x6d, 0x80},			/* 19: VCLK97_75	*/
-+	{0x44, 0x20, 0x43},			/* 1A: VCLK118_25	*/
-+};
-+
- static const struct ast_vbios_stdtable vbios_stdtable[] = {
- 	/* MD_2_3_400 */
- 	{
-@@ -246,12 +277,14 @@ static const struct ast_vbios_enhtable res_1360x768[] = {
- 	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,		/* 60Hz */
- 	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x39 },
- 	{1792, 1360, 64, 112, 795, 768, 3, 6, VCLK85_5,	         /* end */
--	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x39 },
-+	 (SyncPP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x39 },
- };
- 
- static const struct ast_vbios_enhtable res_1600x900[] = {
- 	{1760, 1600, 48, 32, 926, 900, 3, 5, VCLK97_75,		/* 60Hz CVT RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x3A },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x3A },
- 	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x3A },
- 	{2112, 1600, 88, 168, 934, 900, 3, 5, VCLK118_25,	/* 60Hz CVT */
-@@ -260,16 +293,19 @@ static const struct ast_vbios_enhtable res_1600x900[] = {
- 
- static const struct ast_vbios_enhtable res_1920x1080[] = {
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x38 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x38 },
- 	{2200, 1920, 88, 44, 1125, 1080, 4, 5, VCLK148_5,	/* 60Hz */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x38 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x38 },
- };
- 
- 
- /* 16:10 */
- static const struct ast_vbios_enhtable res_1280x800[] = {
- 	{1440, 1280, 48, 32,  823,  800, 3, 6, VCLK71,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x35 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x35 },
- 	{1680, 1280, 72,128,  831,  800, 3, 6, VCLK83_5,	/* 60Hz */
-@@ -279,7 +315,8 @@ static const struct ast_vbios_enhtable res_1280x800[] = {
- 
- static const struct ast_vbios_enhtable res_1440x900[] = {
- 	{1600, 1440, 48, 32,  926,  900, 3, 6, VCLK88_75,	/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x36 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x36 },
- 	{1904, 1440, 80,152,  934,  900, 3, 6, VCLK106_5,	/* 60Hz */
-@@ -288,7 +325,8 @@ static const struct ast_vbios_enhtable res_1440x900[] = {
- 
- static const struct ast_vbios_enhtable res_1680x1050[] = {
- 	{1840, 1680, 48, 32, 1080, 1050, 3, 6, VCLK119,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x37 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
- 	 (SyncPN | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 2, 0x37 },
- 	{2240, 1680,104,176, 1089, 1050, 3, 6, VCLK146_25,	/* 60Hz */
-@@ -297,9 +335,11 @@ static const struct ast_vbios_enhtable res_1680x1050[] = {
- 
- static const struct ast_vbios_enhtable res_1920x1200[] = {
- 	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB*/
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 60, 1, 0x34 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 60, 1, 0x34 },
- 	{2080, 1920, 48, 32, 1235, 1200, 3, 6, VCLK154,		/* 60Hz RB */
--	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo), 0xFF, 1, 0x34 },
-+	 (SyncNP | Charx8Dot | LineCompareOff | WideScreenMode | NewModeInfo |
-+	  AST2500PreCatchCRT), 0xFF, 1, 0x34 },
- };
- 
- #endif
--- 
-2.11.0
-
diff --git a/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch b/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch
deleted file mode 100644
index da79871..0000000
--- a/openpower/linux/0007-drm-ast-Fixed-vram-size-incorrect-issue-on-POWER.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 10:56:47 +0800
-Subject: [PATCH 07/12] drm/ast: Fixed vram size incorrect issue on POWER
-
-The default value of VGA scratch may incorrect.
-Should initial h/w before get vram info.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_main.c | 6 +++---
- drivers/gpu/drm/ast/ast_post.c | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c
-index 5a83d3793000..eefc5124eeb3 100644
---- a/drivers/gpu/drm/ast/ast_main.c
-+++ b/drivers/gpu/drm/ast/ast_main.c
-@@ -518,6 +518,9 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 
- 	ast_detect_chip(dev, &need_post);
- 
-+	if (need_post)
-+		ast_post_gpu(dev);
-+
- 	if (ast->chip != AST1180) {
- 		ret = ast_get_dram_info(dev);
- 		if (ret)
-@@ -528,9 +531,6 @@ int ast_driver_load(struct drm_device *dev, unsigned long flags)
- 			 ast->dram_bus_width, ast->vram_size);
- 	}
- 
--	if (need_post)
--		ast_post_gpu(dev);
--
- 	ret = ast_mm_init(ast);
- 	if (ret)
- 		goto out_free;
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index c7c58becb25d..5b7db846a2c1 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -75,7 +75,7 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 	const u8 *ext_reg_info;
- 
- 	/* reset scratch */
--	for (i = 0x81; i <= 0x8f; i++)
-+	for (i = 0x81; i <= 0x9f; i++)
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, 0x00);
- 
- 	if (ast->chip == AST2300 || ast->chip == AST2400) {
--- 
-2.11.0
-
diff --git a/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch b/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch
deleted file mode 100644
index f85a1ce..0000000
--- a/openpower/linux/0008-drm-ast-Factor-mmc_test-code-in-POST-code.patch
+++ /dev/null
@@ -1,174 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Sat, 18 Feb 2017 14:19:10 +1100
-Subject: [PATCH 08/12] drm/ast: Factor mmc_test code in POST code
-
-There's a some duplication for what's essentially copies of
-two loops, so factor it. The upcoming AST2500 POST code adds
-more of them. Also cleanup return types for the test functions,
-most of them return a boolean, some return a u32.
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
-
-v2. - Keep the split between the "test" and "test2" functions
-      as they have a different exit condition in the loop and
-      a different return type.
-    - Fix the return types accross the call chain
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_post.c | 82 ++++++++++++++++--------------------------
- 1 file changed, 31 insertions(+), 51 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 5b7db846a2c1..89b09d60b2be 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -441,85 +441,65 @@ static const u32 pattern[8] = {
- 	0x7C61D253
- };
- 
--static int mmc_test_burst(struct ast_private *ast, u32 datagen)
-+static bool mmc_test(struct ast_private *ast, u32 datagen, u8 test_ctl)
- {
- 	u32 data, timeout;
- 
- 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x000000c1 | (datagen << 3));
-+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
- 	timeout = 0;
- 	do {
- 		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
--		if (data & 0x2000) {
--			return 0;
--		}
-+		if (data & 0x2000)
-+			return false;
- 		if (++timeout > TIMEOUT) {
- 			ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--			return 0;
-+			return false;
- 		}
- 	} while (!data);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	return 1;
-+	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-+	return true;
- }
- 
--static int mmc_test_burst2(struct ast_private *ast, u32 datagen)
-+static u32 mmc_test2(struct ast_private *ast, u32 datagen, u8 test_ctl)
- {
- 	u32 data, timeout;
- 
- 	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000041 | (datagen << 3));
-+	ast_moutdwm(ast, 0x1e6e0070, (datagen << 3) | test_ctl);
- 	timeout = 0;
- 	do {
- 		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
- 		if (++timeout > TIMEOUT) {
- 			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return -1;
-+			return 0xffffffff;
- 		}
- 	} while (!data);
- 	data = ast_mindwm(ast, 0x1e6e0078);
- 	data = (data | (data >> 16)) & 0xffff;
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
-+	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
- 	return data;
- }
- 
--static int mmc_test_single(struct ast_private *ast, u32 datagen)
-+
-+static bool mmc_test_burst(struct ast_private *ast, u32 datagen)
- {
--	u32 data, timeout;
-+	return mmc_test(ast, datagen, 0xc1);
-+}
- 
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x000000c5 | (datagen << 3));
--	timeout = 0;
--	do {
--		data = ast_mindwm(ast, 0x1e6e0070) & 0x3000;
--		if (data & 0x2000)
--			return 0;
--		if (++timeout > TIMEOUT) {
--			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return 0;
--		}
--	} while (!data);
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
--	return 1;
-+static u32 mmc_test_burst2(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test2(ast, datagen, 0x41);
- }
- 
--static int mmc_test_single2(struct ast_private *ast, u32 datagen)
-+static bool mmc_test_single(struct ast_private *ast, u32 datagen)
- {
--	u32 data, timeout;
-+	return mmc_test(ast, datagen, 0xc5);
-+}
- 
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000000);
--	ast_moutdwm(ast, 0x1e6e0070, 0x00000005 | (datagen << 3));
--	timeout = 0;
--	do {
--		data = ast_mindwm(ast, 0x1e6e0070) & 0x1000;
--		if (++timeout > TIMEOUT) {
--			ast_moutdwm(ast, 0x1e6e0070, 0x0);
--			return -1;
--		}
--	} while (!data);
--	data = ast_mindwm(ast, 0x1e6e0078);
--	data = (data | (data >> 16)) & 0xffff;
--	ast_moutdwm(ast, 0x1e6e0070, 0x0);
--	return data;
-+static u32 mmc_test_single2(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test2(ast, datagen, 0x05);
- }
- 
- static int cbr_test(struct ast_private *ast)
-@@ -597,16 +577,16 @@ static u32 cbr_scan2(struct ast_private *ast)
- 	return data2;
- }
- 
--static u32 cbr_test3(struct ast_private *ast)
-+static bool cbr_test3(struct ast_private *ast)
- {
- 	if (!mmc_test_burst(ast, 0))
--		return 0;
-+		return false;
- 	if (!mmc_test_single(ast, 0))
--		return 0;
--	return 1;
-+		return false;
-+	return true;
- }
- 
--static u32 cbr_scan3(struct ast_private *ast)
-+static bool cbr_scan3(struct ast_private *ast)
- {
- 	u32 patcnt, loop;
- 
-@@ -617,9 +597,9 @@ static u32 cbr_scan3(struct ast_private *ast)
- 				break;
- 		}
- 		if (loop == 2)
--			return 0;
-+			return false;
- 	}
--	return 1;
-+	return true;
- }
- 
- static bool finetuneDQI_L(struct ast_private *ast, struct ast2300_dram_param *param)
--- 
-2.11.0
-
diff --git a/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch b/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch
deleted file mode 100644
index d0dc48f..0000000
--- a/openpower/linux/0009-drm-ast-Rename-ast_init_dram_2300-to-ast_post_chip_2.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Date: Fri, 17 Feb 2017 13:51:34 +1100
-Subject: [PATCH 09/12] drm/ast: Rename ast_init_dram_2300 to
- ast_post_chip_2300
-
-The function does more than initializing the DRAM and in turns
-calls other functions to do the actual init. This will keeping
-things more consistent with the upcoming AST2500 POST code.
-
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_post.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 89b09d60b2be..3716795d27c8 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -31,7 +31,7 @@
- 
- #include "ast_dram_tables.h"
- 
--static void ast_init_dram_2300(struct drm_device *dev);
-+static void ast_post_chip_2300(struct drm_device *dev);
- 
- void ast_enable_vga(struct drm_device *dev)
- {
-@@ -377,7 +377,7 @@ void ast_post_gpu(struct drm_device *dev)
- 
- 	if (ast->config_mode == ast_use_p2a) {
- 		if (ast->chip == AST2300 || ast->chip == AST2400)
--			ast_init_dram_2300(dev);
-+			ast_post_chip_2300(dev);
- 		else
- 			ast_init_dram_reg(dev);
- 
-@@ -1585,7 +1585,7 @@ static void ddr2_init(struct ast_private *ast, struct ast2300_dram_param *param)
- 
- }
- 
--static void ast_init_dram_2300(struct drm_device *dev)
-+static void ast_post_chip_2300(struct drm_device *dev)
- {
- 	struct ast_private *ast = dev->dev_private;
- 	struct ast2300_dram_param param;
--- 
-2.11.0
-
diff --git a/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch b/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch
deleted file mode 100644
index 6e42f86..0000000
--- a/openpower/linux/0010-drm-ast-POST-code-for-the-new-AST2500.patch
+++ /dev/null
@@ -1,559 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: "Y.C. Chen" <yc_chen@aspeedtech.com>
-Date: Fri, 17 Feb 2017 14:45:07 +1100
-Subject: [PATCH 10/12] drm/ast: POST code for the new AST2500
-
-This is used when the BMC isn't running any code and thus has
-to be initialized by the host.
-
-The code originates from Aspeed (Y.C. Chen) and has been cleaned
-up for coding style purposes by BenH.
-
-Signed-off-by: Y.C. Chen <yc_chen@aspeedtech.com>
-Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
-
-v2. - Fix bug in ddr_test_2500 reported by Emil Velikov
-    - Rebase on updated mmc_test factoring patch
-    - Fix missing else statement in 2500 POST code
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/gpu/drm/ast/ast_dram_tables.h |  62 +++++
- drivers/gpu/drm/ast/ast_post.c        | 417 +++++++++++++++++++++++++++++++++-
- 2 files changed, 476 insertions(+), 3 deletions(-)
-
-diff --git a/drivers/gpu/drm/ast/ast_dram_tables.h b/drivers/gpu/drm/ast/ast_dram_tables.h
-index cc04539c0ff3..1d9c4e75d303 100644
---- a/drivers/gpu/drm/ast/ast_dram_tables.h
-+++ b/drivers/gpu/drm/ast/ast_dram_tables.h
-@@ -141,4 +141,66 @@ static const struct ast_dramstruct ast2100_dram_table_data[] = {
- 	{ 0xffff, 0xffffffff },
- };
- 
-+/*
-+ * AST2500 DRAM settings modules
-+ */
-+#define REGTBL_NUM           17
-+#define REGIDX_010           0
-+#define REGIDX_014           1
-+#define REGIDX_018           2
-+#define REGIDX_020           3
-+#define REGIDX_024           4
-+#define REGIDX_02C           5
-+#define REGIDX_030           6
-+#define REGIDX_214           7
-+#define REGIDX_2E0           8
-+#define REGIDX_2E4           9
-+#define REGIDX_2E8           10
-+#define REGIDX_2EC           11
-+#define REGIDX_2F0           12
-+#define REGIDX_2F4           13
-+#define REGIDX_2F8           14
-+#define REGIDX_RFC           15
-+#define REGIDX_PLL           16
-+
-+static const u32 ast2500_ddr3_1600_timing_table[REGTBL_NUM] = {
-+	0x64604D38,		     /* 0x010 */
-+	0x29690599,		     /* 0x014 */
-+	0x00000300,		     /* 0x018 */
-+	0x00000000,		     /* 0x020 */
-+	0x00000000,		     /* 0x024 */
-+	0x02181E70,		     /* 0x02C */
-+	0x00000040,		     /* 0x030 */
-+	0x00000024,		     /* 0x214 */
-+	0x02001300,		     /* 0x2E0 */
-+	0x0E0000A0,		     /* 0x2E4 */
-+	0x000E001B,		     /* 0x2E8 */
-+	0x35B8C105,		     /* 0x2EC */
-+	0x08090408,		     /* 0x2F0 */
-+	0x9B000800,		     /* 0x2F4 */
-+	0x0E400A00,		     /* 0x2F8 */
-+	0x9971452F,		     /* tRFC  */
-+	0x000071C1		     /* PLL   */
-+};
-+
-+static const u32 ast2500_ddr4_1600_timing_table[REGTBL_NUM] = {
-+	0x63604E37,		     /* 0x010 */
-+	0xE97AFA99,		     /* 0x014 */
-+	0x00019000,		     /* 0x018 */
-+	0x08000000,		     /* 0x020 */
-+	0x00000400,		     /* 0x024 */
-+	0x00000410,		     /* 0x02C */
-+	0x00000101,		     /* 0x030 */
-+	0x00000024,		     /* 0x214 */
-+	0x03002900,		     /* 0x2E0 */
-+	0x0E0000A0,		     /* 0x2E4 */
-+	0x000E001C,		     /* 0x2E8 */
-+	0x35B8C106,		     /* 0x2EC */
-+	0x08080607,		     /* 0x2F0 */
-+	0x9B000900,		     /* 0x2F4 */
-+	0x0E400A00,		     /* 0x2F8 */
-+	0x99714545,		     /* tRFC  */
-+	0x000071C1		     /* PLL   */
-+};
-+
- #endif
-diff --git a/drivers/gpu/drm/ast/ast_post.c b/drivers/gpu/drm/ast/ast_post.c
-index 3716795d27c8..f7d421359d56 100644
---- a/drivers/gpu/drm/ast/ast_post.c
-+++ b/drivers/gpu/drm/ast/ast_post.c
-@@ -32,6 +32,7 @@
- #include "ast_dram_tables.h"
- 
- static void ast_post_chip_2300(struct drm_device *dev);
-+static void ast_post_chip_2500(struct drm_device *dev);
- 
- void ast_enable_vga(struct drm_device *dev)
- {
-@@ -78,7 +79,8 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 	for (i = 0x81; i <= 0x9f; i++)
- 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, i, 0x00);
- 
--	if (ast->chip == AST2300 || ast->chip == AST2400) {
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500) {
- 		if (dev->pdev->revision >= 0x20)
- 			ext_reg_info = extreginfo_ast2300;
- 		else
-@@ -102,7 +104,8 @@ ast_set_def_ext_reg(struct drm_device *dev)
- 
- 	/* Enable RAMDAC for A1 */
- 	reg = 0x04;
--	if (ast->chip == AST2300 || ast->chip == AST2400)
-+	if (ast->chip == AST2300 || ast->chip == AST2400 ||
-+	    ast->chip == AST2500)
- 		reg |= 0x20;
- 	ast_set_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xb6, 0xff, reg);
- }
-@@ -376,7 +379,9 @@ void ast_post_gpu(struct drm_device *dev)
- 	ast_set_def_ext_reg(dev);
- 
- 	if (ast->config_mode == ast_use_p2a) {
--		if (ast->chip == AST2300 || ast->chip == AST2400)
-+		if (ast->chip == AST2500)
-+			ast_post_chip_2500(dev);
-+		else if (ast->chip == AST2300 || ast->chip == AST2400)
- 			ast_post_chip_2300(dev);
- 		else
- 			ast_init_dram_reg(dev);
-@@ -502,6 +507,11 @@ static u32 mmc_test_single2(struct ast_private *ast, u32 datagen)
- 	return mmc_test2(ast, datagen, 0x05);
- }
- 
-+static bool mmc_test_single_2500(struct ast_private *ast, u32 datagen)
-+{
-+	return mmc_test(ast, datagen, 0x85);
-+}
-+
- static int cbr_test(struct ast_private *ast)
- {
- 	u32 data;
-@@ -1668,3 +1678,404 @@ static void ast_post_chip_2300(struct drm_device *dev)
- 	} while ((reg & 0x40) == 0);
- }
- 
-+static bool cbr_test_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0074, 0x0000FFFF);
-+	ast_moutdwm(ast, 0x1E6E007C, 0xFF00FF00);
-+	if (!mmc_test_burst(ast, 0))
-+		return false;
-+	if (!mmc_test_single_2500(ast, 0))
-+		return false;
-+	return true;
-+}
-+
-+static bool ddr_test_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0074, 0x0000FFFF);
-+	ast_moutdwm(ast, 0x1E6E007C, 0xFF00FF00);
-+	if (!mmc_test_burst(ast, 0))
-+		return false;
-+	if (!mmc_test_burst(ast, 1))
-+		return false;
-+	if (!mmc_test_burst(ast, 2))
-+		return false;
-+	if (!mmc_test_burst(ast, 3))
-+		return false;
-+	if (!mmc_test_single_2500(ast, 0))
-+		return false;
-+	return true;
-+}
-+
-+static void ddr_init_common_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020080);
-+	ast_moutdwm(ast, 0x1E6E0008, 0x2003000F);
-+	ast_moutdwm(ast, 0x1E6E0038, 0x00000FFF);
-+	ast_moutdwm(ast, 0x1E6E0040, 0x88448844);
-+	ast_moutdwm(ast, 0x1E6E0044, 0x24422288);
-+	ast_moutdwm(ast, 0x1E6E0048, 0x22222222);
-+	ast_moutdwm(ast, 0x1E6E004C, 0x22222222);
-+	ast_moutdwm(ast, 0x1E6E0050, 0x80000000);
-+	ast_moutdwm(ast, 0x1E6E0208, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0218, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0220, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0228, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0230, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E02A8, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E02B0, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0240, 0x86000000);
-+	ast_moutdwm(ast, 0x1E6E0244, 0x00008600);
-+	ast_moutdwm(ast, 0x1E6E0248, 0x80000000);
-+	ast_moutdwm(ast, 0x1E6E024C, 0x80808080);
-+}
-+
-+static void ddr_phy_init_2500(struct ast_private *ast)
-+{
-+	u32 data, pass, timecnt;
-+
-+	pass = 0;
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000005);
-+	while (!pass) {
-+		for (timecnt = 0; timecnt < TIMEOUT; timecnt++) {
-+			data = ast_mindwm(ast, 0x1E6E0060) & 0x1;
-+			if (!data)
-+				break;
-+		}
-+		if (timecnt != TIMEOUT) {
-+			data = ast_mindwm(ast, 0x1E6E0300) & 0x000A0000;
-+			if (!data)
-+				pass = 1;
-+		}
-+		if (!pass) {
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			udelay(10); /* delay 10 us */
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000005);
-+		}
-+	}
-+
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000006);
-+}
-+
-+/*
-+ * Check DRAM Size
-+ * 1Gb : 0x80000000 ~ 0x87FFFFFF
-+ * 2Gb : 0x80000000 ~ 0x8FFFFFFF
-+ * 4Gb : 0x80000000 ~ 0x9FFFFFFF
-+ * 8Gb : 0x80000000 ~ 0xBFFFFFFF
-+ */
-+static void check_dram_size_2500(struct ast_private *ast, u32 tRFC)
-+{
-+	u32 reg_04, reg_14;
-+
-+	reg_04 = ast_mindwm(ast, 0x1E6E0004) & 0xfffffffc;
-+	reg_14 = ast_mindwm(ast, 0x1E6E0014) & 0xffffff00;
-+
-+	ast_moutdwm(ast, 0xA0100000, 0x41424344);
-+	ast_moutdwm(ast, 0x90100000, 0x35363738);
-+	ast_moutdwm(ast, 0x88100000, 0x292A2B2C);
-+	ast_moutdwm(ast, 0x80100000, 0x1D1E1F10);
-+
-+	/* Check 8Gbit */
-+	if (ast_mindwm(ast, 0xA0100000) == 0x41424344) {
-+		reg_04 |= 0x03;
-+		reg_14 |= (tRFC >> 24) & 0xFF;
-+		/* Check 4Gbit */
-+	} else if (ast_mindwm(ast, 0x90100000) == 0x35363738) {
-+		reg_04 |= 0x02;
-+		reg_14 |= (tRFC >> 16) & 0xFF;
-+		/* Check 2Gbit */
-+	} else if (ast_mindwm(ast, 0x88100000) == 0x292A2B2C) {
-+		reg_04 |= 0x01;
-+		reg_14 |= (tRFC >> 8) & 0xFF;
-+	} else {
-+		reg_14 |= tRFC & 0xFF;
-+	}
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04);
-+	ast_moutdwm(ast, 0x1E6E0014, reg_14);
-+}
-+
-+static void enable_cache_2500(struct ast_private *ast)
-+{
-+	u32 reg_04, data;
-+
-+	reg_04 = ast_mindwm(ast, 0x1E6E0004);
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04 | 0x1000);
-+
-+	do
-+		data = ast_mindwm(ast, 0x1E6E0004);
-+	while (!(data & 0x80000));
-+	ast_moutdwm(ast, 0x1E6E0004, reg_04 | 0x400);
-+}
-+
-+static void set_mpll_2500(struct ast_private *ast)
-+{
-+	u32 addr, data, param;
-+
-+	/* Reset MMC */
-+	ast_moutdwm(ast, 0x1E6E0000, 0xFC600309);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020080);
-+	for (addr = 0x1e6e0004; addr < 0x1e6e0090;) {
-+		ast_moutdwm(ast, addr, 0x0);
-+		addr += 4;
-+	}
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020000);
-+
-+	ast_moutdwm(ast, 0x1E6E2000, 0x1688A8A8);
-+	data = ast_mindwm(ast, 0x1E6E2070) & 0x00800000;
-+	if (data) {
-+		/* CLKIN = 25MHz */
-+		param = 0x930023E0;
-+		ast_moutdwm(ast, 0x1E6E2160, 0x00011320);
-+	} else {
-+		/* CLKIN = 24MHz */
-+		param = 0x93002400;
-+	}
-+	ast_moutdwm(ast, 0x1E6E2020, param);
-+	udelay(100);
-+}
-+
-+static void reset_mmc_2500(struct ast_private *ast)
-+{
-+	ast_moutdwm(ast, 0x1E78505C, 0x00000004);
-+	ast_moutdwm(ast, 0x1E785044, 0x00000001);
-+	ast_moutdwm(ast, 0x1E785048, 0x00004755);
-+	ast_moutdwm(ast, 0x1E78504C, 0x00000013);
-+	mdelay(100);
-+	ast_moutdwm(ast, 0x1E785054, 0x00000077);
-+	ast_moutdwm(ast, 0x1E6E0000, 0xFC600309);
-+}
-+
-+static void ddr3_init_2500(struct ast_private *ast, const u32 *ddr_table)
-+{
-+
-+	ast_moutdwm(ast, 0x1E6E0004, 0x00000303);
-+	ast_moutdwm(ast, 0x1E6E0010, ddr_table[REGIDX_010]);
-+	ast_moutdwm(ast, 0x1E6E0014, ddr_table[REGIDX_014]);
-+	ast_moutdwm(ast, 0x1E6E0018, ddr_table[REGIDX_018]);
-+	ast_moutdwm(ast, 0x1E6E0020, ddr_table[REGIDX_020]);	     /* MODEREG4/6 */
-+	ast_moutdwm(ast, 0x1E6E0024, ddr_table[REGIDX_024]);	     /* MODEREG5 */
-+	ast_moutdwm(ast, 0x1E6E002C, ddr_table[REGIDX_02C] | 0x100); /* MODEREG0/2 */
-+	ast_moutdwm(ast, 0x1E6E0030, ddr_table[REGIDX_030]);	     /* MODEREG1/3 */
-+
-+	/* DDR PHY Setting */
-+	ast_moutdwm(ast, 0x1E6E0200, 0x02492AAE);
-+	ast_moutdwm(ast, 0x1E6E0204, 0x00001001);
-+	ast_moutdwm(ast, 0x1E6E020C, 0x55E00B0B);
-+	ast_moutdwm(ast, 0x1E6E0210, 0x20000000);
-+	ast_moutdwm(ast, 0x1E6E0214, ddr_table[REGIDX_214]);
-+	ast_moutdwm(ast, 0x1E6E02E0, ddr_table[REGIDX_2E0]);
-+	ast_moutdwm(ast, 0x1E6E02E4, ddr_table[REGIDX_2E4]);
-+	ast_moutdwm(ast, 0x1E6E02E8, ddr_table[REGIDX_2E8]);
-+	ast_moutdwm(ast, 0x1E6E02EC, ddr_table[REGIDX_2EC]);
-+	ast_moutdwm(ast, 0x1E6E02F0, ddr_table[REGIDX_2F0]);
-+	ast_moutdwm(ast, 0x1E6E02F4, ddr_table[REGIDX_2F4]);
-+	ast_moutdwm(ast, 0x1E6E02F8, ddr_table[REGIDX_2F8]);
-+	ast_moutdwm(ast, 0x1E6E0290, 0x00100008);
-+	ast_moutdwm(ast, 0x1E6E02C0, 0x00000006);
-+
-+	/* Controller Setting */
-+	ast_moutdwm(ast, 0x1E6E0034, 0x00020091);
-+
-+	/* Wait DDR PHY init done */
-+	ddr_phy_init_2500(ast);
-+
-+	ast_moutdwm(ast, 0x1E6E0120, ddr_table[REGIDX_PLL]);
-+	ast_moutdwm(ast, 0x1E6E000C, 0x42AA5C81);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001AF93);
-+
-+	check_dram_size_2500(ast, ddr_table[REGIDX_RFC]);
-+	enable_cache_2500(ast);
-+	ast_moutdwm(ast, 0x1E6E001C, 0x00000008);
-+	ast_moutdwm(ast, 0x1E6E0038, 0xFFFFFF00);
-+}
-+
-+static void ddr4_init_2500(struct ast_private *ast, const u32 *ddr_table)
-+{
-+	u32 data, data2, pass, retrycnt;
-+	u32 ddr_vref, phy_vref;
-+	u32 min_ddr_vref = 0, min_phy_vref = 0;
-+	u32 max_ddr_vref = 0, max_phy_vref = 0;
-+
-+	ast_moutdwm(ast, 0x1E6E0004, 0x00000313);
-+	ast_moutdwm(ast, 0x1E6E0010, ddr_table[REGIDX_010]);
-+	ast_moutdwm(ast, 0x1E6E0014, ddr_table[REGIDX_014]);
-+	ast_moutdwm(ast, 0x1E6E0018, ddr_table[REGIDX_018]);
-+	ast_moutdwm(ast, 0x1E6E0020, ddr_table[REGIDX_020]);	     /* MODEREG4/6 */
-+	ast_moutdwm(ast, 0x1E6E0024, ddr_table[REGIDX_024]);	     /* MODEREG5 */
-+	ast_moutdwm(ast, 0x1E6E002C, ddr_table[REGIDX_02C] | 0x100); /* MODEREG0/2 */
-+	ast_moutdwm(ast, 0x1E6E0030, ddr_table[REGIDX_030]);	     /* MODEREG1/3 */
-+
-+	/* DDR PHY Setting */
-+	ast_moutdwm(ast, 0x1E6E0200, 0x42492AAE);
-+	ast_moutdwm(ast, 0x1E6E0204, 0x09002000);
-+	ast_moutdwm(ast, 0x1E6E020C, 0x55E00B0B);
-+	ast_moutdwm(ast, 0x1E6E0210, 0x20000000);
-+	ast_moutdwm(ast, 0x1E6E0214, ddr_table[REGIDX_214]);
-+	ast_moutdwm(ast, 0x1E6E02E0, ddr_table[REGIDX_2E0]);
-+	ast_moutdwm(ast, 0x1E6E02E4, ddr_table[REGIDX_2E4]);
-+	ast_moutdwm(ast, 0x1E6E02E8, ddr_table[REGIDX_2E8]);
-+	ast_moutdwm(ast, 0x1E6E02EC, ddr_table[REGIDX_2EC]);
-+	ast_moutdwm(ast, 0x1E6E02F0, ddr_table[REGIDX_2F0]);
-+	ast_moutdwm(ast, 0x1E6E02F4, ddr_table[REGIDX_2F4]);
-+	ast_moutdwm(ast, 0x1E6E02F8, ddr_table[REGIDX_2F8]);
-+	ast_moutdwm(ast, 0x1E6E0290, 0x00100008);
-+	ast_moutdwm(ast, 0x1E6E02C4, 0x3C183C3C);
-+	ast_moutdwm(ast, 0x1E6E02C8, 0x00631E0E);
-+
-+	/* Controller Setting */
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001A991);
-+
-+	/* Train PHY Vref first */
-+	pass = 0;
-+
-+	for (retrycnt = 0; retrycnt < 4 && pass == 0; retrycnt++) {
-+		max_phy_vref = 0x0;
-+		pass = 0;
-+		ast_moutdwm(ast, 0x1E6E02C0, 0x00001C06);
-+		for (phy_vref = 0x40; phy_vref < 0x80; phy_vref++) {
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E02CC, phy_vref | (phy_vref << 8));
-+			/* Fire DFI Init */
-+			ddr_phy_init_2500(ast);
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00005C01);
-+			if (cbr_test_2500(ast)) {
-+				pass++;
-+				data = ast_mindwm(ast, 0x1E6E03D0);
-+				data2 = data >> 8;
-+				data  = data & 0xff;
-+				if (data > data2)
-+					data = data2;
-+				if (max_phy_vref < data) {
-+					max_phy_vref = data;
-+					min_phy_vref = phy_vref;
-+				}
-+			} else if (pass > 0)
-+				break;
-+		}
-+	}
-+	ast_moutdwm(ast, 0x1E6E02CC, min_phy_vref | (min_phy_vref << 8));
-+
-+	/* Train DDR Vref next */
-+	pass = 0;
-+
-+	for (retrycnt = 0; retrycnt < 4 && pass == 0; retrycnt++) {
-+		min_ddr_vref = 0xFF;
-+		max_ddr_vref = 0x0;
-+		pass = 0;
-+		for (ddr_vref = 0x00; ddr_vref < 0x40; ddr_vref++) {
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+			ast_moutdwm(ast, 0x1E6E02C0, 0x00000006 | (ddr_vref << 8));
-+			/* Fire DFI Init */
-+			ddr_phy_init_2500(ast);
-+			ast_moutdwm(ast, 0x1E6E000C, 0x00005C01);
-+			if (cbr_test_2500(ast)) {
-+				pass++;
-+				if (min_ddr_vref > ddr_vref)
-+					min_ddr_vref = ddr_vref;
-+				if (max_ddr_vref < ddr_vref)
-+					max_ddr_vref = ddr_vref;
-+			} else if (pass != 0)
-+				break;
-+		}
-+	}
-+
-+	ast_moutdwm(ast, 0x1E6E000C, 0x00000000);
-+	ast_moutdwm(ast, 0x1E6E0060, 0x00000000);
-+	ddr_vref = (min_ddr_vref + max_ddr_vref + 1) >> 1;
-+	ast_moutdwm(ast, 0x1E6E02C0, 0x00000006 | (ddr_vref << 8));
-+
-+	/* Wait DDR PHY init done */
-+	ddr_phy_init_2500(ast);
-+
-+	ast_moutdwm(ast, 0x1E6E0120, ddr_table[REGIDX_PLL]);
-+	ast_moutdwm(ast, 0x1E6E000C, 0x42AA5C81);
-+	ast_moutdwm(ast, 0x1E6E0034, 0x0001AF93);
-+
-+	check_dram_size_2500(ast, ddr_table[REGIDX_RFC]);
-+	enable_cache_2500(ast);
-+	ast_moutdwm(ast, 0x1E6E001C, 0x00000008);
-+	ast_moutdwm(ast, 0x1E6E0038, 0xFFFFFF00);
-+}
-+
-+static bool ast_dram_init_2500(struct ast_private *ast)
-+{
-+	u32 data;
-+	u32 max_tries = 5;
-+
-+	do {
-+		if (max_tries-- == 0)
-+			return false;
-+		set_mpll_2500(ast);
-+		reset_mmc_2500(ast);
-+		ddr_init_common_2500(ast);
-+
-+		data = ast_mindwm(ast, 0x1E6E2070);
-+		if (data & 0x01000000)
-+			ddr4_init_2500(ast, ast2500_ddr4_1600_timing_table);
-+		else
-+			ddr3_init_2500(ast, ast2500_ddr3_1600_timing_table);
-+	} while (!ddr_test_2500(ast));
-+
-+	ast_moutdwm(ast, 0x1E6E2040, ast_mindwm(ast, 0x1E6E2040) | 0x41);
-+
-+	/* Patch code */
-+	data = ast_mindwm(ast, 0x1E6E200C) & 0xF9FFFFFF;
-+	ast_moutdwm(ast, 0x1E6E200C, data | 0x10000000);
-+
-+	return true;
-+}
-+
-+void ast_post_chip_2500(struct drm_device *dev)
-+{
-+	struct ast_private *ast = dev->dev_private;
-+	u32 temp;
-+	u8 reg;
-+
-+	reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff);
-+	if ((reg & 0x80) == 0) {/* vga only */
-+		/* Clear bus lock condition */
-+		ast_moutdwm(ast, 0x1e600000, 0xAEED1A03);
-+		ast_moutdwm(ast, 0x1e600084, 0x00010000);
-+		ast_moutdwm(ast, 0x1e600088, 0x00000000);
-+		ast_moutdwm(ast, 0x1e6e2000, 0x1688A8A8);
-+		ast_write32(ast, 0xf004, 0x1e6e0000);
-+		ast_write32(ast, 0xf000, 0x1);
-+		ast_write32(ast, 0x12000, 0x1688a8a8);
-+		while (ast_read32(ast, 0x12000) != 0x1)
-+			;
-+
-+		ast_write32(ast, 0x10000, 0xfc600309);
-+		while (ast_read32(ast, 0x10000) != 0x1)
-+			;
-+
-+		/* Slow down CPU/AHB CLK in VGA only mode */
-+		temp = ast_read32(ast, 0x12008);
-+		temp |= 0x73;
-+		ast_write32(ast, 0x12008, temp);
-+
-+		/* Reset USB port to patch USB unknown device issue */
-+		ast_moutdwm(ast, 0x1e6e2090, 0x20000000);
-+		temp  = ast_mindwm(ast, 0x1e6e2094);
-+		temp |= 0x00004000;
-+		ast_moutdwm(ast, 0x1e6e2094, temp);
-+		temp  = ast_mindwm(ast, 0x1e6e2070);
-+		if (temp & 0x00800000) {
-+			ast_moutdwm(ast, 0x1e6e207c, 0x00800000);
-+			mdelay(100);
-+			ast_moutdwm(ast, 0x1e6e2070, 0x00800000);
-+		}
-+
-+		if (!ast_dram_init_2500(ast))
-+			DRM_ERROR("DRAM init failed !\n");
-+
-+		temp = ast_mindwm(ast, 0x1e6e2040);
-+		ast_moutdwm(ast, 0x1e6e2040, temp | 0x40);
-+	}
-+
-+	/* wait ready */
-+	do {
-+		reg = ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xd0, 0xff);
-+	} while ((reg & 0x40) == 0);
-+}
--- 
-2.11.0
-
diff --git a/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch b/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch
deleted file mode 100644
index 25937aa..0000000
--- a/openpower/linux/0011-powerpc-powernv-cpuidle-Pass-correct-drv-cpumask-for.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
-Date: Thu, 23 Mar 2017 20:52:46 +0530
-Subject: [PATCH 11/12] powerpc/powernv/cpuidle: Pass correct drv->cpumask for
- registration
-
-drv->cpumask defaults to cpu_possible_mask in __cpuidle_driver_init().
-On PowerNV platform cpu_present could be less than cpu_possible in cases
-where firmware detects the cpu, but it is not available to the OS.  When
-CONFIG_HOTPLUG_CPU=n, such cpus are not hotplugable at runtime and hence
-we skip creating cpu_device.
-
-This breaks cpuidle on powernv where register_cpu() is not called for
-cpus in cpu_possible_mask that cannot be hot-added at runtime.
-
-Trying cpuidle_register_device() on cpu without cpu_device will cause
-crash like this:
-
-cpu 0xf: Vector: 380 (Data SLB Access) at [c000000ff1503490]
-    pc: c00000000022c8bc: string+0x34/0x60
-    lr: c00000000022ed78: vsnprintf+0x284/0x42c
-    sp: c000000ff1503710
-   msr: 9000000000009033
-   dar: 6000000060000000
-  current = 0xc000000ff1480000
-  paca    = 0xc00000000fe82d00   softe: 0        irq_happened: 0x01
-    pid   = 1, comm = swapper/8
-Linux version 4.11.0-rc2 (sv@sagarika) (gcc version 4.9.4
-(Buildroot 2017.02-00004-gc28573e) ) #15 SMP Fri Mar 17 19:32:02 IST 2017
-enter ? for help
-[link register   ] c00000000022ed78 vsnprintf+0x284/0x42c
-[c000000ff1503710] c00000000022ebb8 vsnprintf+0xc4/0x42c (unreliable)
-[c000000ff1503800] c00000000022ef40 vscnprintf+0x20/0x44
-[c000000ff1503830] c0000000000ab61c vprintk_emit+0x94/0x2cc
-[c000000ff15038a0] c0000000000acc9c vprintk_func+0x60/0x74
-[c000000ff15038c0] c000000000619694 printk+0x38/0x4c
-[c000000ff15038e0] c000000000224950 kobject_get+0x40/0x60
-[c000000ff1503950] c00000000022507c kobject_add_internal+0x60/0x2c4
-[c000000ff15039e0] c000000000225350 kobject_init_and_add+0x70/0x78
-[c000000ff1503a60] c00000000053c288 cpuidle_add_sysfs+0x9c/0xe0
-[c000000ff1503ae0] c00000000053aeac cpuidle_register_device+0xd4/0x12c
-[c000000ff1503b30] c00000000053b108 cpuidle_register+0x98/0xcc
-[c000000ff1503bc0] c00000000085eaf0 powernv_processor_idle_init+0x140/0x1e0
-[c000000ff1503c60] c00000000000cd60 do_one_initcall+0xc0/0x15c
-[c000000ff1503d20] c000000000833e84 kernel_init_freeable+0x1a0/0x25c
-[c000000ff1503dc0] c00000000000d478 kernel_init+0x24/0x12c
-[c000000ff1503e30] c00000000000b564 ret_from_kernel_thread+0x5c/0x78
-
-This patch fixes the bug by passing correct cpumask from
-powernv-cpuidle driver.
-
-Signed-off-by: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
-Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
-[From http://patchwork.ozlabs.org/patch/742706/]
-Signed-off-by: Joel Stanley <joel@jms.id.au>
-
-Signed-off-by: Joel Stanley <joel@jms.id.au>
----
- drivers/cpuidle/cpuidle-powernv.c | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
-index 0835a37a5f3a..5e06d7b6b508 100644
---- a/drivers/cpuidle/cpuidle-powernv.c
-+++ b/drivers/cpuidle/cpuidle-powernv.c
-@@ -164,6 +164,24 @@ static int powernv_cpuidle_driver_init(void)
- 		drv->state_count += 1;
- 	}
- 
-+	/*
-+	 * On PowerNV platform cpu_present may be less that cpu_possible in
-+	 * cases where firmware detects the cpu, but it is not available to the
-+	 * OS.  If CONFIG_HOTPLUG_CPU=n then such CPUs are not hotplugable at
-+	 * runtime and hence cpu_devices are not created for those cpus by
-+	 * generic topology_init().
-+	 *
-+	 * drv->cpumask defaults to cpu_possible_mask in
-+	 * __cpuidle_driver_init().  This breaks cpuidle on powernv where
-+	 * cpu_devices are not created for cpus in cpu_possible_mask that
-+	 * cannot be hot-added later at runtime.
-+	 *
-+	 * Trying cpuidle_register_device() on a cpu without cpu_devices is
-+	 * incorrect. Hence pass correct cpu mask to generic cpuidle driver.
-+	 */
-+
-+	drv->cpumask = (struct cpumask *)cpu_present_mask;
-+
- 	return 0;
- }
- 
--- 
-2.11.0
-