diff options
author | Loren HUANG <b02279@freescale.com> | 2014-04-02 05:15:12 -0400 |
---|---|---|
committer | Nitin Garg <nitin.garg@freescale.com> | 2014-04-16 09:58:15 -0400 |
commit | c79b718f7336310a7515696dc8100892e4390e43 (patch) | |
tree | b04e1c1930158e4e02526653faff67f6bf9d9110 | |
parent | 716b9bdf68d0a49c1cd75978615fbb8ada98a866 (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.c | 19 |
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 | ||
156 | static 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 | |||
156 | static void __init imx6sx_init_machine(void) | 174 | static 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 | ||
174 | static void __init imx6sx_init_late(void) | 193 | static void __init imx6sx_init_late(void) |