aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoren HUANG <b02279@freescale.com>2014-04-02 05:15:12 -0400
committerNitin Garg <nitin.garg@freescale.com>2014-04-16 09:58:15 -0400
commitc79b718f7336310a7515696dc8100892e4390e43 (patch)
treeb04e1c1930158e4e02526653faff67f6bf9d9110
parent716b9bdf68d0a49c1cd75978615fbb8ada98a866 (diff)
ENGR00306443-1 mx6sx:Update the gc400t QoS
Per SoC team recommandation, update the gc400t QoS value to write 2 and Read 8. It can improve gpu performance in most case. 3d fill: 165->172Mpixel/s 2d fill: 190->228Mpixel/s Signed-off-by: Loren HUANG <b02279@freescale.com>
-rw-r--r--arch/arm/mach-imx/mach-imx6sx.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/mach-imx6sx.c b/arch/arm/mach-imx/mach-imx6sx.c
index 8b61e1afde3a..96c79a0bb4f5 100644
--- a/arch/arm/mach-imx/mach-imx6sx.c
+++ b/arch/arm/mach-imx/mach-imx6sx.c
@@ -153,6 +153,24 @@ static const struct of_dev_auxdata imx6sx_auxdata_lookup[] __initconst = {
153 { /* sentinel */ } 153 { /* sentinel */ }
154}; 154};
155 155
156static inline void imx6sx_qos_init(void)
157{
158 struct device_node *np;
159 void __iomem *src_base;
160
161 np = of_find_compatible_node(NULL, NULL, "fsl,imx6sx-qosc");
162 if (!np)
163 return;
164 src_base = of_iomap(np, 0);
165 WARN_ON(!src_base);
166 writel_relaxed(0, src_base); /* Disable clkgate & soft_rst */
167 writel_relaxed(0, src_base+0x60); /* Enable all masters */
168 writel_relaxed(0, src_base+0x1400); /* Disable clkgate & soft_rst for gpu */
169 writel_relaxed(0x0f000222, src_base+0x1400+0xd0); /* Set Write QoS 2 for gpu */
170 writel_relaxed(0x0f000822, src_base+0x1400+0xe0); /* Set Read QoS 8 for gpu */
171 return;
172}
173
156static void __init imx6sx_init_machine(void) 174static void __init imx6sx_init_machine(void)
157{ 175{
158 struct device *parent; 176 struct device *parent;
@@ -169,6 +187,7 @@ static void __init imx6sx_init_machine(void)
169 imx6sx_enet_init(); 187 imx6sx_enet_init();
170 imx_anatop_init(); 188 imx_anatop_init();
171 imx6_pm_init(); 189 imx6_pm_init();
190 imx6sx_qos_init();
172} 191}
173 192
174static void __init imx6sx_init_late(void) 193static void __init imx6sx_init_late(void)