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
-