[][kernel][mt7988/87][thermal][Add thermal throttling support]

[Description]
Add thermal throttling support with dynamic CPU frequency scaling.

We use the Linux kernel CPU cooling framework to dynamically
adjust the CPU frequency and Vproc voltage based on the Tj
temperature. The CPU frequency is set according to the OPP table.

The kernel enables the step-wise governor by default. When the Tj
temperature is higher than or lower than the trip point, the CPU
frequency will be adjusted in steps. There will be no conflict
when the step-wise governor and the ondemand governor are
operating simultaneously. When the Tj temperature is higher than
the trip point, the settings of the step-wise governor will take
precedence. When the Tj temperature is lower than the trip point,
the settings of the ondemand governor will take precedence.

By default, we set the trip point for frequency scaling at 120°C
to prevent the IC from triggering a thermal reset.

Without this patch, there is no proactive cooling behavior before
triggering a thermal reset.

[Release-log]
N/A


Change-Id: Ifc67a068207f3d91ae5d7e1a0d7493713e7a41ed
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/10255756
4 files changed
tree: beef95c7ec7fccfdea0f6c45620a2bb457b62f88
  1. 21.02/
  2. 24.10/
  3. autobuild/
  4. feed/
  5. master/
  6. scripts/
  7. tools/
  8. .checkpatch.conf
  9. .clang-format
  10. .gitignore
  11. mtk-openwrt-feeds-commit-sha-mapping-table.md
  12. prepare_sdk.sh
  13. Readme.md
Readme.md

Brief introduction for using MediaTek released OpenWrt SDK

1. Build system setup

2. Clone vanilla OpenWrt

Currently two release branches are supported:

  1. 21.02 This is the current in-use branch

    git clone -b openwrt-21.02 https://git.openwrt.org/openwrt/openwrt.git
    
  2. master (will be 24.0x branch later) The next version in development

    git clone https://git.openwrt.org/openwrt/openwrt.git
    

3. Add MediaTek OpenWrt feed

cd openwrt
echo "src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds" >> feeds.conf.default
./scripts/feeds update -a
./scripts/feeds install -a

4. Apply MediaTek OpenWrt files and patches

  1. 21.02 branch

    cp -af ./feeds/mtk_openwrt_feed/21.02/files/* .
    cp -af ./feeds/mtk_openwrt_feed/tools .
    for file in $(find ./feeds/mtk_openwrt_feed/21.02/patches-base -name "*.patch" | sort); do patch -f -p1 -i ${file}; done
    for file in $(find ./feeds/mtk_openwrt_feed/21.02/patches-feeds -name "*.patch" | sort); do patch -f -p1 -i ${file}; done
    
  2. master branch

    cp -af ./feeds/mtk_openwrt_feed/master/files/* .
    for file in $(find ./feeds/mtk_openwrt_feed/master/patches-base -name "*.patch" | sort); do patch -f -p1 -i ${file}; done
    

5. Configuration

make menuconfig
  1. 21.02 branch

    Target System -> MediaTek Ralink ARM
    Subtarget -> MT7981 / MT7986 / MT7988
    Target Profile -> select as needed
    
  2. master branch

    Target System -> MediaTek Ralink ARM
    Subtarget -> Filogic 8x0 (MT798x)
    Target Profile -> select as needed
    

6. Build

make V=s -j$(nproc)

MT7987 NPU Only (without WiFi) Build

#Get Openwrt 21.02 source code from Git server
git clone --branch openwrt-21.02 https://git.openwrt.org/openwrt/openwrt.git

#Get Openwrt master source code from Git Server
git clone --branch master https://git.openwrt.org/openwrt/openwrt.git mac80211_package

#Get mtk-openwrt-feeds source code
git clone --branch master https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds

#Change to openwrt folder
cp -rf mtk-openwrt-feeds/autobuild/autobuild_5.4_mac80211_release openwrt
cd openwrt; mv autobuild_5.4_mac80211_release autobuild

#Add MTK feed
echo "src-git mtk_openwrt_feed https://git01.mediatek.com/openwrt/feeds/mtk-openwrt-feeds" >> feeds.conf.default

#Build MT7987 (Only for the 1st build)
bash autobuild/mt7987-npu/lede-branch-build-sanity.sh

#Further Build (After 1st full build)
./scripts/feeds update -a
make V=s PKG_HASH=skip PKG_MIRROR_HASH=skip