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
-
