Add GPU clock plan as per speedbin four to support QRB5165n SKU. Change-Id: Ibe067f6a320aa7c99da10f1912c3b6824caf529a
591 lines
12 KiB
Devicetree
591 lines
12 KiB
Devicetree
&soc {
|
|
msm_bus: qcom,kgsl-busmon {
|
|
label = "kgsl-busmon";
|
|
compatible = "qcom,kgsl-busmon";
|
|
operating-points-v2 = <&gpu_opp_table_v2>;
|
|
};
|
|
|
|
gpu_opp_table_v2: gpu-opp-table_v2 {
|
|
compatible = "operating-points-v2";
|
|
|
|
opp-670000000 {
|
|
opp-hz = /bits/ 64 <670000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_NOM_L1>;
|
|
};
|
|
|
|
opp-587000000 {
|
|
opp-hz = /bits/ 64 <587000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_NOM>;
|
|
};
|
|
|
|
opp-525000000 {
|
|
opp-hz = /bits/ 64 <525000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS_L2>;
|
|
};
|
|
|
|
opp-490000000 {
|
|
opp-hz = /bits/ 64 <490000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS_L1>;
|
|
};
|
|
|
|
opp-441600000 {
|
|
opp-hz = /bits/ 64 <441600000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS_L0>;
|
|
};
|
|
|
|
opp-400000000 {
|
|
opp-hz = /bits/ 64 <400000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_SVS>;
|
|
};
|
|
|
|
opp-305000000 {
|
|
opp-hz = /bits/ 64 <305000000>;
|
|
opp-microvolt = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
|
|
};
|
|
};
|
|
};
|
|
|
|
&msm_gpu {
|
|
qcom,chipid = <0x06050001>;
|
|
|
|
/* GPU OPP data */
|
|
operating-points-v2 = <&gpu_opp_table_v2>;
|
|
|
|
/delete-property/qcom,initial-pwrlevel;
|
|
/delete-node/qcom,gpu-pwrlevels;
|
|
|
|
/* Power levels bins */
|
|
qcom,gpu-pwrlevel-bins {
|
|
compatible="qcom,gpu-pwrlevel-bins";
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
qcom,gpu-pwrlevels-0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
qcom,speed-bin = <0>;
|
|
qcom,initial-pwrlevel = <5>;
|
|
qcom,throttle-pwrlevel = <0>;
|
|
|
|
qcom,gpu-pwrlevel@0 {
|
|
reg = <0>;
|
|
qcom,gpu-freq = <587000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@1 {
|
|
reg = <1>;
|
|
qcom,gpu-freq = <525000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <9>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <8>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@2 {
|
|
reg = <2>;
|
|
qcom,gpu-freq = <490000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@3 {
|
|
reg = <3>;
|
|
qcom,gpu-freq = <441600000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@4 {
|
|
reg = <4>;
|
|
qcom,gpu-freq = <400000000>;
|
|
qcom,bus-freq-ddr7 = <7>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <6>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@5 {
|
|
reg = <5>;
|
|
qcom,gpu-freq = <305000000>;
|
|
qcom,bus-freq-ddr7 = <3>;
|
|
qcom,bus-min-ddr7 = <2>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <3>;
|
|
qcom,bus-min-ddr8 = <2>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@6 {
|
|
reg = <6>;
|
|
qcom,gpu-freq = <0>;
|
|
qcom,bus-freq = <0>;
|
|
qcom,bus-min = <0>;
|
|
qcom,bus-max = <0>;
|
|
};
|
|
};
|
|
|
|
qcom,gpu-pwrlevels-1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
qcom,speed-bin = <1>;
|
|
qcom,initial-pwrlevel = <6>;
|
|
qcom,throttle-pwrlevel = <1>;
|
|
|
|
qcom,gpu-pwrlevel@0 {
|
|
reg = <0>;
|
|
qcom,gpu-freq = <670000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@1 {
|
|
reg = <1>;
|
|
qcom,gpu-freq = <587000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@2 {
|
|
reg = <2>;
|
|
qcom,gpu-freq = <525000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <9>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <8>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@3 {
|
|
reg = <3>;
|
|
qcom,gpu-freq = <490000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@4 {
|
|
reg = <4>;
|
|
qcom,gpu-freq = <441600000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@5 {
|
|
reg = <5>;
|
|
qcom,gpu-freq = <400000000>;
|
|
qcom,bus-freq-ddr7 = <7>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <6>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@6 {
|
|
reg = <6>;
|
|
qcom,gpu-freq = <305000000>;
|
|
qcom,bus-freq-ddr7 = <3>;
|
|
qcom,bus-min-ddr7 = <2>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <3>;
|
|
qcom,bus-min-ddr8 = <2>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@7 {
|
|
reg = <7>;
|
|
qcom,gpu-freq = <0>;
|
|
qcom,bus-freq = <0>;
|
|
qcom,bus-min = <0>;
|
|
qcom,bus-max = <0>;
|
|
};
|
|
};
|
|
|
|
qcom,gpu-pwrlevels-2 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
qcom,speed-bin = <3>;
|
|
qcom,initial-pwrlevel = <4>;
|
|
|
|
qcom,gpu-pwrlevel@0 {
|
|
reg = <0>;
|
|
qcom,gpu-freq = <525000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <10>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <10>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@1 {
|
|
reg = <1>;
|
|
qcom,gpu-freq = <490000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@2 {
|
|
reg = <2>;
|
|
qcom,gpu-freq = <441600000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@3 {
|
|
reg = <3>;
|
|
qcom,gpu-freq = <400000000>;
|
|
qcom,bus-freq-ddr7 = <7>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <6>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@4 {
|
|
reg = <4>;
|
|
qcom,gpu-freq = <305000000>;
|
|
qcom,bus-freq-ddr7 = <3>;
|
|
qcom,bus-min-ddr7 = <2>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <3>;
|
|
qcom,bus-min-ddr8 = <2>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@5 {
|
|
reg = <5>;
|
|
qcom,gpu-freq = <0>;
|
|
qcom,bus-freq = <0>;
|
|
qcom,bus-min = <0>;
|
|
qcom,bus-max = <0>;
|
|
};
|
|
};
|
|
|
|
qcom,gpu-pwrlevels-3 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
qcom,speed-bin = <2>;
|
|
qcom,initial-pwrlevel = <6>;
|
|
qcom,throttle-pwrlevel = <1>;
|
|
|
|
qcom,gpu-pwrlevel@0 {
|
|
reg = <0>;
|
|
qcom,gpu-freq = <670000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@1 {
|
|
reg = <1>;
|
|
qcom,gpu-freq = <587000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@2 {
|
|
reg = <2>;
|
|
qcom,gpu-freq = <525000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <9>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <8>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@3 {
|
|
reg = <3>;
|
|
qcom,gpu-freq = <490000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@4 {
|
|
reg = <4>;
|
|
qcom,gpu-freq = <441600000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@5 {
|
|
reg = <5>;
|
|
qcom,gpu-freq = <400000000>;
|
|
qcom,bus-freq-ddr7 = <7>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <6>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@6 {
|
|
reg = <6>;
|
|
qcom,gpu-freq = <305000000>;
|
|
qcom,bus-freq-ddr7 = <3>;
|
|
qcom,bus-min-ddr7 = <2>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <3>;
|
|
qcom,bus-min-ddr8 = <2>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@7 {
|
|
reg = <7>;
|
|
qcom,gpu-freq = <0>;
|
|
qcom,bus-freq = <0>;
|
|
qcom,bus-min = <0>;
|
|
qcom,bus-max = <0>;
|
|
};
|
|
};
|
|
|
|
qcom,gpu-pwrlevels-4 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
qcom,speed-bin = <4>;
|
|
qcom,initial-pwrlevel = <6>;
|
|
qcom,throttle-pwrlevel = <1>;
|
|
|
|
qcom,gpu-pwrlevel@0 {
|
|
reg = <0>;
|
|
qcom,gpu-freq = <670000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@1 {
|
|
reg = <1>;
|
|
qcom,gpu-freq = <587000000>;
|
|
qcom,bus-freq-ddr7 = <11>;
|
|
qcom,bus-min-ddr7 = <11>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <11>;
|
|
qcom,bus-min-ddr8 = <11>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@2 {
|
|
reg = <2>;
|
|
qcom,gpu-freq = <525000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <9>;
|
|
qcom,bus-max-ddr7 = <11>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <8>;
|
|
qcom,bus-max-ddr8 = <11>;
|
|
|
|
qcom,acd-level = <0x802b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@3 {
|
|
reg = <3>;
|
|
qcom,gpu-freq = <490000000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@4 {
|
|
reg = <4>;
|
|
qcom,gpu-freq = <441600000>;
|
|
qcom,bus-freq-ddr7 = <9>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <7>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@5 {
|
|
reg = <5>;
|
|
qcom,gpu-freq = <400000000>;
|
|
qcom,bus-freq-ddr7 = <7>;
|
|
qcom,bus-min-ddr7 = <6>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <8>;
|
|
qcom,bus-min-ddr8 = <6>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@6 {
|
|
reg = <6>;
|
|
qcom,gpu-freq = <305000000>;
|
|
qcom,bus-freq-ddr7 = <3>;
|
|
qcom,bus-min-ddr7 = <2>;
|
|
qcom,bus-max-ddr7 = <9>;
|
|
|
|
qcom,bus-freq-ddr8 = <3>;
|
|
qcom,bus-min-ddr8 = <2>;
|
|
qcom,bus-max-ddr8 = <9>;
|
|
|
|
qcom,acd-level = <0xa02b5ffd>;
|
|
};
|
|
|
|
qcom,gpu-pwrlevel@7 {
|
|
reg = <7>;
|
|
qcom,gpu-freq = <0>;
|
|
qcom,bus-freq = <0>;
|
|
qcom,bus-min = <0>;
|
|
qcom,bus-max = <0>;
|
|
};
|
|
};
|
|
};
|
|
};
|