MLK-16804-06 driver: soc: Optimize the DDR frequency in audio playback case
authorBai Ping <ping.bai@nxp.com>
Wed, 8 Nov 2017 09:58:00 +0000 (17:58 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 20:46:54 +0000 (15:46 -0500)
If audio device is the only that access to ddr memory, the DDR
frequency can be reduce to 25MHz to save power. when DDR run in
25MHz frequency, the memory bandwidth is about 66MB/s, it can
meet the performance requirement for audio only case.

Signed-off-by: Bai Ping <ping.bai@nxp.com>
Reviewed-by: Anson Huang <anson.huang@nxp.com>
drivers/soc/imx/busfreq-imx8mq.c

index f4d970d..4054c37 100644 (file)
@@ -102,14 +102,19 @@ static void reduce_bus_freq(void)
        clk_prepare_enable(sys1_pll_40m);
        clk_prepare_enable(dram_alt_root);
 
+       /*
+        * below piece of code has some redundant part, keep
+        * it at present, we may need update the audio freq
+        * in the future if needed.
+        */
        if (audio_bus_count) {
-               clk_prepare_enable(sys1_pll_400m);
+               clk_prepare_enable(sys1_pll_100m);
 
-               update_bus_freq(AUDIO_FREQ_400MTS);
+               update_bus_freq(LOW_BUS_FREQ_100MTS);
 
                /* correct the clock tree info */
-               clk_disable_unprepare(sys1_pll_400m);
-               clk_set_parent(dram_alt_src, sys1_pll_400m);
+               clk_disable_unprepare(sys1_pll_100m);
+               clk_set_parent(dram_alt_src, sys1_pll_100m);
                clk_set_parent(dram_core_clk, dram_alt_root);
                clk_set_parent(dram_apb_src, sys1_pll_40m);
                clk_set_rate(dram_apb_pre_div, 20000000);
@@ -128,6 +133,7 @@ static void reduce_bus_freq(void)
                clk_set_parent(dram_core_clk, dram_alt_root);
                clk_set_parent(dram_apb_src, sys1_pll_40m);
                clk_set_rate(dram_apb_pre_div, 20000000);
+               clk_prepare_enable(sys1_pll_400m);
 
                low_bus_freq_mode = 1;
                audio_bus_freq_mode = 0;
@@ -138,7 +144,7 @@ static void reduce_bus_freq(void)
        clk_disable_unprepare(dram_alt_root);
 
        if (audio_bus_freq_mode)
-               printk(KERN_DEBUG "ddrc freq set to audio mode: 100MHz\n");
+               printk(KERN_DEBUG "ddrc freq set to audio mode: 25MHz\n");
        if (low_bus_freq_mode)
                printk(KERN_DEBUG "ddrc freq set to low bus mode: 25MHz\n");
 }