diff --git a/arch/arm/boot/dts/amlogic/meson-a1.dtsi b/arch/arm/boot/dts/amlogic/meson-a1.dtsi index 69ed7d686..45677c384 100644 --- a/arch/arm/boot/dts/amlogic/meson-a1.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-a1.dtsi @@ -285,12 +285,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x5a20 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,a1-clk-measure"; reg = <0x3400 0x10>; diff --git a/arch/arm/boot/dts/amlogic/meson-c2.dtsi b/arch/arm/boot/dts/amlogic/meson-c2.dtsi index d71d6823a..d5b1f73a1 100644 --- a/arch/arm/boot/dts/amlogic/meson-c2.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-c2.dtsi @@ -386,12 +386,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x5a20 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,c2-clk-measure"; reg = <0x3400 0x10>; diff --git a/arch/arm/boot/dts/amlogic/meson-c3.dtsi b/arch/arm/boot/dts/amlogic/meson-c3.dtsi index 7b0d99c30..a51fd9b7f 100644 --- a/arch/arm/boot/dts/amlogic/meson-c3.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-c3.dtsi @@ -397,12 +397,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,c3-clk-measure"; reg = <0x48000 0x10>; diff --git a/arch/arm/boot/dts/amlogic/meson-s1a.dtsi b/arch/arm/boot/dts/amlogic/meson-s1a.dtsi index 4af601453..ab36a8975 100644 --- a/arch/arm/boot/dts/amlogic/meson-s1a.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-s1a.dtsi @@ -636,11 +636,6 @@ reg = <0x2000 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x4>; - }; }; crg_phy_20: crgphy20@fe318000 { diff --git a/arch/arm/boot/dts/amlogic/meson-s4.dtsi b/arch/arm/boot/dts/amlogic/meson-s4.dtsi index 67d6ea1f3..e4219635a 100644 --- a/arch/arm/boot/dts/amlogic/meson-s4.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-s4.dtsi @@ -1101,11 +1101,6 @@ reg = <0x2000 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x4>; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm/boot/dts/amlogic/meson-s4d.dtsi b/arch/arm/boot/dts/amlogic/meson-s4d.dtsi index 827ac1736..6ad9c5f49 100644 --- a/arch/arm/boot/dts/amlogic/meson-s4d.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-s4d.dtsi @@ -1137,11 +1137,6 @@ reg = <0x2000 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x4>; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm/boot/dts/amlogic/meson-sc2.dtsi b/arch/arm/boot/dts/amlogic/meson-sc2.dtsi index 9c3d38fa1..e18f2f9d8 100644 --- a/arch/arm/boot/dts/amlogic/meson-sc2.dtsi +++ b/arch/arm/boot/dts/amlogic/meson-sc2.dtsi @@ -1139,12 +1139,6 @@ reg = <0x2000 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x140>; - amlogic,has-chip-id; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm/boot/dts/amlogic/mesont3.dtsi b/arch/arm/boot/dts/amlogic/mesont3.dtsi index 3cd1c300f..c4ed46122 100644 --- a/arch/arm/boot/dts/amlogic/mesont3.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont3.dtsi @@ -1199,11 +1199,6 @@ }; }; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x10220 0x140>; - }; }; ethmac: ethernet@fdc00000 { diff --git a/arch/arm/boot/dts/amlogic/mesont5d.dtsi b/arch/arm/boot/dts/amlogic/mesont5d.dtsi index 7b2a09816..6b5728ec1 100644 --- a/arch/arm/boot/dts/amlogic/mesont5d.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont5d.dtsi @@ -1226,13 +1226,6 @@ clocks = <&xtal>; clock-names = "xtal"; }; - - sec_AO: ao-secure@140 { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg = <0x140 0x140>; - amlogic,has-chip-id; - }; - }; uart_AO: serial@3000 { diff --git a/arch/arm/boot/dts/amlogic/mesont5w.dtsi b/arch/arm/boot/dts/amlogic/mesont5w.dtsi index 8a909fdcf..39833870c 100644 --- a/arch/arm/boot/dts/amlogic/mesont5w.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont5w.dtsi @@ -730,13 +730,6 @@ #size-cells = <1>; ranges = <0x0 0x0 0x300>; - sec_AO: ao-secure@140 { - compatible = "amlogic,meson-gx-ao-secure", - "syscon"; - reg = <0x140 0x140>; - amlogic,has-chip-id; - }; - clkc_AO: clock-controller@2 { compatible = "amlogic,t5w-aoclkc"; #clock-cells = <1>; diff --git a/arch/arm/boot/dts/amlogic/mesontxhd2.dtsi b/arch/arm/boot/dts/amlogic/mesontxhd2.dtsi index ed1a1cfca..f5196c99c 100644 --- a/arch/arm/boot/dts/amlogic/mesontxhd2.dtsi +++ b/arch/arm/boot/dts/amlogic/mesontxhd2.dtsi @@ -1476,12 +1476,6 @@ #size-cells = <1>; ranges = <0x0 0xff800000 0xa000>; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x140 0x4>; - amlogic,has-chip-id; - }; - dcon_led: dcon_led@1000 { compatible = "amlogic,led_unipolar_ctrl"; reg = <0x1000 0x88>; diff --git a/arch/arm/boot/dts/amlogic/mesontxhd2_reva.dtsi b/arch/arm/boot/dts/amlogic/mesontxhd2_reva.dtsi index cf64b63a9..63f980ee3 100644 --- a/arch/arm/boot/dts/amlogic/mesontxhd2_reva.dtsi +++ b/arch/arm/boot/dts/amlogic/mesontxhd2_reva.dtsi @@ -1177,12 +1177,6 @@ #size-cells = <1>; ranges = <0x0 0xff800000 0xa000>; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x140 0x4>; - amlogic,has-chip-id; - }; - dcon_led: dcon_led@1000 { compatible = "amlogic,led_unipolar_ctrl"; reg = <0x1000 0x88>; diff --git a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi index 614646da0..db7bbad49 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a1.dtsi @@ -278,12 +278,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x5a20 0x0 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,a1-clk-measure"; reg = <0x0 0x3400 0x0 0x10>; diff --git a/arch/arm64/boot/dts/amlogic/meson-a4.dtsi b/arch/arm64/boot/dts/amlogic/meson-a4.dtsi index 1a885043d..ef8576fbb 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a4.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a4.dtsi @@ -1017,11 +1017,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x4>; - }; }; aobus_pinctrl: pinctrl@fe08e700 { diff --git a/arch/arm64/boot/dts/amlogic/meson-a5.dtsi b/arch/arm64/boot/dts/amlogic/meson-a5.dtsi index 0d6abaecb..a48eaa01b 100644 --- a/arch/arm64/boot/dts/amlogic/meson-a5.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-a5.dtsi @@ -981,11 +981,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x4>; - }; }; crg_phy_20: crgphy20@fe03c000 { diff --git a/arch/arm64/boot/dts/amlogic/meson-c1.dtsi b/arch/arm64/boot/dts/amlogic/meson-c1.dtsi index 13c053f94..334c9fc71 100644 --- a/arch/arm64/boot/dts/amlogic/meson-c1.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-c1.dtsi @@ -277,12 +277,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x5a20 0x0 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,meson-c1-clk-measure"; reg = <0x0 0x3400 0x0 0x10>; @@ -1536,11 +1530,6 @@ }; }; - sec_AO: ao-secure { - compatible = "amlogic,meson-gx-ao-secure"; - amlogic,has-chip-id; - }; - timestamp { compatible = "amlogic, meson-soc-timestamp"; reg = <0x0 0xfe005904 0x0 0x8>; diff --git a/arch/arm64/boot/dts/amlogic/meson-c2.dtsi b/arch/arm64/boot/dts/amlogic/meson-c2.dtsi index f5cbf5bb9..97a8c290d 100644 --- a/arch/arm64/boot/dts/amlogic/meson-c2.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-c2.dtsi @@ -387,12 +387,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x5a20 0x0 0x140>; - amlogic,has-chip-id; - }; - meson_clk_msr@3400 { compatible = "amlogic,c2-clk-measure"; reg = <0x0 0x3400 0x0 0x10>; diff --git a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi index 50adcee60..7cbbed87f 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s4.dtsi @@ -1102,11 +1102,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x4>; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm64/boot/dts/amlogic/meson-s4d.dtsi b/arch/arm64/boot/dts/amlogic/meson-s4d.dtsi index 6515e537f..2aa72cea5 100644 --- a/arch/arm64/boot/dts/amlogic/meson-s4d.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-s4d.dtsi @@ -932,11 +932,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x4>; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm64/boot/dts/amlogic/meson-sc2.dtsi b/arch/arm64/boot/dts/amlogic/meson-sc2.dtsi index 8860db340..bc9938c56 100644 --- a/arch/arm64/boot/dts/amlogic/meson-sc2.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-sc2.dtsi @@ -1140,12 +1140,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - amlogic,has-chip-id; - }; }; usb2_phy_v2: usb2phy@fe03a000 { diff --git a/arch/arm64/boot/dts/amlogic/mesong12a.dtsi b/arch/arm64/boot/dts/amlogic/mesong12a.dtsi index 6073c1fb3..8b84d0271 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12a.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12a.dtsi @@ -740,12 +740,6 @@ #size-cells = <2>; ranges = <0x0 0x0 0x0 0xff800000 0x0 0xb000>; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x220 0x0 0x4>; - amlogic,has-chip-id; - }; - rti: sys-ctrl@0 { compatible = "amlogic,meson-gx-ao-sysctrl", "simple-mfd", "syscon"; diff --git a/arch/arm64/boot/dts/amlogic/mesong12b.dtsi b/arch/arm64/boot/dts/amlogic/mesong12b.dtsi index f22260337..583241f7f 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12b.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12b.dtsi @@ -817,12 +817,6 @@ #size-cells = <2>; ranges = <0x0 0x0 0x0 0xff800000 0x0 0xb000>; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x140 0x0 0x4>; - amlogic,has-chip-id; - }; - rti: sys-ctrl@0 { compatible = "amlogic,meson-gx-ao-sysctrl", "simple-mfd", "syscon"; diff --git a/arch/arm64/boot/dts/amlogic/mesons5.dtsi b/arch/arm64/boot/dts/amlogic/mesons5.dtsi index bbf2d19eb..54c24d828 100644 --- a/arch/arm64/boot/dts/amlogic/mesons5.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons5.dtsi @@ -1055,12 +1055,6 @@ #reset-cells = <1>; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - status = "disable"; - reg=<0x0 0x10220 0x0 0x140>; - }; - gbl_timer_core: global-timer@8e000 { compatible = "amlogic,meson-glb-timer-core"; reg = <0x0 0x8e000 0x0 0x28>; diff --git a/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi b/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi index 51ea08d6c..6e1afb3c0 100644 --- a/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonsm1.dtsi @@ -905,12 +905,6 @@ #size-cells = <2>; ranges = <0x0 0x0 0x0 0xff800000 0x0 0xb000>; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x140 0x0 0x4>; - amlogic,has-chip-id; - }; - rti: sys-ctrl@0 { compatible = "amlogic,meson-gx-ao-sysctrl", "simple-mfd", "syscon"; diff --git a/arch/arm64/boot/dts/amlogic/mesont3.dtsi b/arch/arm64/boot/dts/amlogic/mesont3.dtsi index 857c0ab36..e9696b182 100644 --- a/arch/arm64/boot/dts/amlogic/mesont3.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont3.dtsi @@ -1206,11 +1206,6 @@ }; }; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - }; }; ethmac: ethernet@fdc00000 { diff --git a/arch/arm64/boot/dts/amlogic/mesont3x.dtsi b/arch/arm64/boot/dts/amlogic/mesont3x.dtsi index cc22593a2..e438fcfbe 100644 --- a/arch/arm64/boot/dts/amlogic/mesont3x.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont3x.dtsi @@ -1133,12 +1133,6 @@ }; }; - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - status = "disable"; - reg=<0x0 0x10220 0x0 0x140>; - }; - gbl_timer_core: global-timer@8e000 { compatible = "amlogic,meson-glb-timer-core"; reg = <0x0 0x8e000 0x0 0x28>; diff --git a/arch/arm64/boot/dts/amlogic/mesont5m.dtsi b/arch/arm64/boot/dts/amlogic/mesont5m.dtsi index 922e62b9c..66bc32f8e 100644 --- a/arch/arm64/boot/dts/amlogic/mesont5m.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont5m.dtsi @@ -1045,12 +1045,6 @@ }; }; - cpu_version { - status = "okay"; - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - }; - hwspinlock_regs: syscon@e2c0 { compatible = "syscon"; reg = <0x0 0xe2c0 0x0 0x20>; diff --git a/arch/arm64/boot/dts/amlogic/mesont5m_reva.dtsi b/arch/arm64/boot/dts/amlogic/mesont5m_reva.dtsi index d04909ead..4e613d1a1 100644 --- a/arch/arm64/boot/dts/amlogic/mesont5m_reva.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont5m_reva.dtsi @@ -1063,12 +1063,6 @@ }; }; - cpu_version { - status = "okay"; - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - }; - hwspinlock_regs: syscon@e2c0 { compatible = "syscon"; reg = <0x0 0xe2c0 0x0 0x20>; diff --git a/arch/arm64/boot/dts/amlogic/mesont5w.dtsi b/arch/arm64/boot/dts/amlogic/mesont5w.dtsi index fcf16711b..1d094b193 100644 --- a/arch/arm64/boot/dts/amlogic/mesont5w.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont5w.dtsi @@ -731,13 +731,6 @@ #size-cells = <2>; ranges = <0x0 0x0 0x0 0x0 0x0 0x300>; - sec_AO: ao-secure@140 { - compatible = "amlogic,meson-gx-ao-secure", - "syscon"; - reg = <0x0 0x140 0x0 0x140>; - amlogic,has-chip-id; - }; - clkc_AO: clock-controller@2 { compatible = "amlogic,t5w-aoclkc"; #clock-cells = <1>; diff --git a/arch/arm64/boot/dts/amlogic/mesont7.dtsi b/arch/arm64/boot/dts/amlogic/mesont7.dtsi index 1e1ac25ed..54cf2efa6 100644 --- a/arch/arm64/boot/dts/amlogic/mesont7.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont7.dtsi @@ -1689,12 +1689,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - amlogic,has-chip-id; - }; }; crg_phy_20: crgphy20@fe03c000 { diff --git a/arch/arm64/boot/dts/amlogic/mesont7c.dtsi b/arch/arm64/boot/dts/amlogic/mesont7c.dtsi index 764c19dd9..847bafaef 100644 --- a/arch/arm64/boot/dts/amlogic/mesont7c.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont7c.dtsi @@ -1611,12 +1611,6 @@ reg = <0x0 0x2000 0x0 0x98>; #reset-cells = <1>; }; - - cpu_version { - compatible = "amlogic,meson-gx-ao-secure", "syscon"; - reg=<0x0 0x10220 0x0 0x140>; - amlogic,has-chip-id; - }; }; crg_phy_20: crgphy20@fe03c000 { diff --git a/drivers/cpu_info/Makefile b/drivers/cpu_info/Makefile index 166681e11..633e24e7a 100644 --- a/drivers/cpu_info/Makefile +++ b/drivers/cpu_info/Makefile @@ -2,7 +2,7 @@ MODULE_NAME = amlogic-cpuinfo obj-$(CONFIG_AMLOGIC_CPU_INFO) = $(MODULE_NAME).o -$(MODULE_NAME)-y += cpu_info.o cpu_version.o +$(MODULE_NAME)-y += cpu_info.o PR_FMT = $(subst amlogic-,,$(MODULE_NAME)) PR_FMT_DEFINE="-Dpr_fmt(fmt)= \"[$(PR_FMT)]: \" fmt" diff --git a/drivers/cpu_info/cpu_info.c b/drivers/cpu_info/cpu_info.c index 69838a58d..5c47d75fa 100644 --- a/drivers/cpu_info/cpu_info.c +++ b/drivers/cpu_info/cpu_info.c @@ -27,10 +27,48 @@ #endif #include +static int init_done; static unsigned char cpuinfo_chip_id[CHIPID_LEN]; +static int cpu_id_from_media; + +int get_cpu_type_from_media(void) +{ + return cpu_id_from_media; +} +EXPORT_SYMBOL(get_cpu_type_from_media); + +void set_cpu_type_from_media(int cpu_id) +{ + if (cpu_id <= 0) { + pr_err("wrong cpu id from media driver 0x%x.\n", cpu_id); + return; + } + cpu_id_from_media = cpu_id; +} +EXPORT_SYMBOL(set_cpu_type_from_media); + +unsigned char get_meson_cpu_version(int level) +{ + if (!init_done) { + pr_err("too early call %s\n", __func__); + dump_stack(); + return -1; + } + + if (level >= 0 && level <= MESON_CPU_VERSION_LVL_MAX) + return cpuinfo_chip_id[level]; + return 0; +} +EXPORT_SYMBOL(get_meson_cpu_version); void cpuinfo_get_chipid(unsigned char *cid, unsigned int size) { + if (!init_done) { + pr_err("too early call %s\n", __func__); + dump_stack(); + return; + } + memcpy(&cid[0], cpuinfo_chip_id, size); } EXPORT_SYMBOL(cpuinfo_get_chipid); @@ -114,6 +152,7 @@ static int cpuinfo_probe(struct platform_device *pdev) meson_sm_mutex_unlock(); if (ret == 0) { + init_done = 1; pr_info("serial = "); for (i = 0; i < CHIPID_LEN; i++) pr_cont("%02x", cpuinfo_chip_id[i]); @@ -151,8 +190,6 @@ static int __init meson_cpuinfo_init(void) pr_notice("kernel upgrade info: <%d> <%s> <%s-%s>\n", AML_KERNEL_VERSION, MERGE_DATE, UPSTREAM_VERSION, AML_PATCH_VERSION); - meson_cpu_version_init(); - return platform_driver_register(&cpuinfo_platform_driver); } diff --git a/drivers/cpu_info/cpu_version.c b/drivers/cpu_info/cpu_version.c deleted file mode 100644 index cb271aff8..000000000 --- a/drivers/cpu_info/cpu_version.c +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-License-Identifier: (GPL-2.0+ OR MIT) -/* - * Copyright (c) 2019 Amlogic, Inc. All rights reserved. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define AO_SEC_SD_CFG8 0xe0 -#define AO_SEC_SOCINFO_OFFSET AO_SEC_SD_CFG8 -static unsigned char cpu_version[MESON_CPU_VERSION_LVL_MAX + 1]; -static int init_done; -static int cpu_id_from_media; - -int get_cpu_type_from_media(void) -{ - return cpu_id_from_media; -} -EXPORT_SYMBOL(get_cpu_type_from_media); - -void set_cpu_type_from_media(int cpu_id) -{ - if (cpu_id <= 0) { - pr_err("wrong cpu id from media driver 0x%x.\n", cpu_id); - return; - } - cpu_id_from_media = cpu_id; -} -EXPORT_SYMBOL(set_cpu_type_from_media); - -unsigned char get_meson_cpu_version(int level) -{ - if (!init_done) { - pr_err("too early call %s\n", __func__); - dump_stack(); - return -1; - } - - if (level >= 0 && level <= MESON_CPU_VERSION_LVL_MAX) - return cpu_version[level]; - return 0; -} -EXPORT_SYMBOL(get_meson_cpu_version); - -int __init meson_cpu_version_init(void) -{ - struct device_node *np; - unsigned int socinfo; - struct regmap *regmap; - int ret; - - /* look up for chipid node */ - np = of_find_compatible_node(NULL, NULL, "amlogic,meson-gx-ao-secure"); - if (!np) - return -ENODEV; - - /* node should be a syscon */ - regmap = syscon_node_to_regmap(np); - of_node_put(np); - if (IS_ERR(regmap)) { - pr_err("%s: failed to get regmap\n", __func__); - return -ENODEV; - } - - ret = regmap_read(regmap, AO_SEC_SOCINFO_OFFSET, &socinfo); - if (ret < 0) - return ret; - - if (!socinfo) { - pr_err("%s: invalid chipid value\n", __func__); - return -EINVAL; - } - - cpu_version[MESON_CPU_VERSION_LVL_MAJOR] = (socinfo >> 24) & 0xff; - cpu_version[MESON_CPU_VERSION_LVL_MINOR] = (socinfo >> 8) & 0xff; - cpu_version[MESON_CPU_VERSION_LVL_PACK] = (socinfo >> 16) & 0xff; - cpu_version[MESON_CPU_VERSION_LVL_MISC] = socinfo & 0xff; - pr_info("chip version = %X:%X - %X:%X\n", - cpu_version[MESON_CPU_VERSION_LVL_MAJOR], - cpu_version[MESON_CPU_VERSION_LVL_MINOR], - cpu_version[MESON_CPU_VERSION_LVL_PACK], - cpu_version[MESON_CPU_VERSION_LVL_MISC] - ); - - init_done = 1; - return 0; -} diff --git a/include/linux/amlogic/media/registers/cpu_version.h b/include/linux/amlogic/media/registers/cpu_version.h index 9e7fc261e..f62202823 100644 --- a/include/linux/amlogic/media/registers/cpu_version.h +++ b/include/linux/amlogic/media/registers/cpu_version.h @@ -80,7 +80,6 @@ struct codecio_device_data_s { enum meson_cpuid_type_e cpu_id; }; -int meson_cpu_version_init(void); int get_cpu_type_from_media(void); unsigned char get_meson_cpu_version(int level);