Release Linux 4.10.1-openpower1

This moves all machines to the 4.10 kenrel series.

There are two patch series on top of the stable tree.

The first is the XHCI USB fixes we have carried for sometime.

The second is a 14 patch series that improves the Aspeed VGA driver
including adding support for the ast2500 and configuration of the driver
through the device tree, which is required when the P2A bridge is
disabled.

Signed-off-by: Joel Stanley <joel@jms.id.au>
diff --git a/openpower/linux/0005-drm-ast-const-ify-mode-setting-tables.patch b/openpower/linux/0005-drm-ast-const-ify-mode-setting-tables.patch
new file mode 100644
index 0000000..c14c5a3
--- /dev/null
+++ b/openpower/linux/0005-drm-ast-const-ify-mode-setting-tables.patch
@@ -0,0 +1,277 @@
+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 05/15] 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
+