mirror of https://github.com/OpenIPC/firmware.git
Add more hisilicon platform
parent
c9bd09845a
commit
70d0a85852
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,238 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Linaro Ltd.
|
||||||
|
* Copyright (c) 2015-2017 HiSilicon Technologies Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "hi3516a.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Hisilicon HI3516A DEMO Board";
|
||||||
|
compatible = "hiSilicon,hi3516a";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
cpu@0 {
|
||||||
|
device_type = "cpu";
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
reg = <0>;
|
||||||
|
|
||||||
|
operating-points = <
|
||||||
|
/* KHz uV */
|
||||||
|
600000 1100000
|
||||||
|
732000 1200000
|
||||||
|
850000 1300000
|
||||||
|
500000 1060000
|
||||||
|
400000 1020000
|
||||||
|
>;
|
||||||
|
|
||||||
|
clocks = <&clock HI3516A_A7_MUX>,
|
||||||
|
<&clock HI3516A_FIXED_400M>,
|
||||||
|
<&clock HI3516A_FIXED_500M>,
|
||||||
|
<&clock HI3516A_APLL_CLK>;
|
||||||
|
clock-names = "a7_mux","400m", "500m","apll";
|
||||||
|
|
||||||
|
vcc-supply = <&a7_regulator>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
avs {
|
||||||
|
compatible = "hi3516a,avs";
|
||||||
|
avs-num = <2>;
|
||||||
|
avs-name-array = "cpu-avs","media-avs";
|
||||||
|
cpu_avs: cpu_avs{
|
||||||
|
avs-name = "cpu-avs";
|
||||||
|
opp-num = <5>;
|
||||||
|
opp-freq = <600000 732000 850000 500000 400000>;
|
||||||
|
opp-volt-min = <940000 1000000 1070000 940000 940000>;
|
||||||
|
opp-hpm = <270 325 365 255 240>;
|
||||||
|
opp-div = <11 14 16 10 8>;
|
||||||
|
opp-volt-max = <1310000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
media_avs: media_avs{
|
||||||
|
avs-name = "media-avs";
|
||||||
|
opp-num = <5>;
|
||||||
|
opp-freq = <0 1 2 3 4>;
|
||||||
|
opp-volt-min = <930000 930000 930000 930000 930000>;
|
||||||
|
opp-hpm = <245 245 245 260 285>;
|
||||||
|
opp-div = <3 3 4 5 5>;
|
||||||
|
opp-volt-max = <1310000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x80000000 0x40000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&dual_timer0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&hidmac {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&i2c_bus0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&spi_bus0{
|
||||||
|
status = "okay";
|
||||||
|
num-cs = <1>;
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com_mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus1{
|
||||||
|
status = "okay";
|
||||||
|
num-cs = <3>;
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com_mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spidev@1 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <1>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com_mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spidev@2 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <2>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com_mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mdio {
|
||||||
|
ethphy: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&higmac {
|
||||||
|
phy-handle = <ðphy>;
|
||||||
|
phy-mode = "rmii";
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&mmc0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip4 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip5 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip6 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip7 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip8 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip9 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip10 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip11 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip12 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip13 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip14 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip15 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,247 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Linaro Ltd.
|
||||||
|
* Copyright (c) 2015 HiSilicon Technologies Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "hisi-hi3519v101.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Hisilicon HI3519V101 DEMO Board";
|
||||||
|
compatible = "hisilicon,hi3519v101";
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
enable-method = "hisilicon,hi3519-smp";
|
||||||
|
|
||||||
|
cpu@0 {
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
device_type = "cpu";
|
||||||
|
clock-frequency = <HI3519_FIXED_792M>;
|
||||||
|
reg = <0>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*cpu@100 {
|
||||||
|
compatible = "arm,cortex-a17";
|
||||||
|
device_type = "cpu";
|
||||||
|
clock-frequency = <HI3519_FIXED_1000M>;
|
||||||
|
reg = <0x100>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
};*/
|
||||||
|
};
|
||||||
|
|
||||||
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x80000000 0x40000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&dual_timer0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24750000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24750000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24750000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spidev@1 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <1>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24750000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus3 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24750000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&hisfc {
|
||||||
|
hi_sfc {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <160000000>;
|
||||||
|
m25p,fast-read;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
&hisnfc {
|
||||||
|
hinand {
|
||||||
|
compatible = "jedec,spi-nand";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <160000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&hinfc {
|
||||||
|
hinand {
|
||||||
|
compatible = "jedec,nand";
|
||||||
|
reg = <0>;
|
||||||
|
nand-max-frequency = <200000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mdio {
|
||||||
|
ethphy: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&higmac {
|
||||||
|
phy-handle = <ðphy>;
|
||||||
|
phy-mode = "rmii";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip4 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip5 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip6 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip7 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip8 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip9 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip10 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip11 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip12 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip13 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip14 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip16 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
|
@ -0,0 +1,310 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2013-2014 Linaro Ltd.
|
||||||
|
* Copyright (c) 2015 HiSilicon Technologies Co., Ltd.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
#include "hisi-hi3519v101.dtsi"
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "Hisilicon HI3519V101 DEMO Board";
|
||||||
|
compatible = "hisilicon,hi3519v101";
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
bootargs = "console=ttyAMA0,115200 early_printk
|
||||||
|
root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),
|
||||||
|
4M(kernel),11M(rootfs)";
|
||||||
|
};
|
||||||
|
|
||||||
|
cpus {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
enable-method = "hisilicon,hi3519-smp";
|
||||||
|
|
||||||
|
cpu@0 {
|
||||||
|
compatible = "arm,cortex-a7";
|
||||||
|
device_type = "cpu";
|
||||||
|
clock-frequency = <HI3519_FIXED_792M>;
|
||||||
|
reg = <0>;
|
||||||
|
cci-control-port = <&cci_control0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
cpu@100 {
|
||||||
|
compatible = "arm,cortex-a17";
|
||||||
|
device_type = "cpu";
|
||||||
|
reg = <0x100>;
|
||||||
|
cci-control-port = <&cci_control1>;
|
||||||
|
operating-points = <
|
||||||
|
/* KHz uV */
|
||||||
|
1250000 1060000
|
||||||
|
1150000 1060000
|
||||||
|
1000000 1000000
|
||||||
|
930000 1000000
|
||||||
|
792000 940000
|
||||||
|
594000 940000
|
||||||
|
>;
|
||||||
|
clocks = <&clock HI3519_A17_MUX>,
|
||||||
|
<&clock HI3519_FIXED_400M>,
|
||||||
|
<&clock HI3519_FIXED_500M>,
|
||||||
|
<&clock HI3519_FIXED_594M>,
|
||||||
|
<&clock HI3519_FIXED_792M>,
|
||||||
|
<&clock HI3519_APLL_CLK>;
|
||||||
|
clock-names = "a17_mux","400m", "500m",
|
||||||
|
"594m", "792m", "apll";
|
||||||
|
vcc-supply = <&a17_regulator>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
avs {
|
||||||
|
compatible = "hi3519,avs";
|
||||||
|
avs-num = <2>;
|
||||||
|
avs-name-array = "cpu-avs","media-avs";
|
||||||
|
cpu_avs: cpu_avs{
|
||||||
|
avs-name = "cpu-avs";
|
||||||
|
opp-num = <6>;
|
||||||
|
opp-freq = <1250000 1150000 1000000 930000 792000 594000 >;
|
||||||
|
opp-volt-min = <870000 870000 800000 800000 740000 740000>;
|
||||||
|
opp-hpm = <310 310 280 280 250 250>;
|
||||||
|
opp-div = <24 22 19 18 15 11>;
|
||||||
|
opp-volt-max = <1060000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
media_avs: media_avs{
|
||||||
|
avs-name = "media-avs";
|
||||||
|
opp-num = <4>;
|
||||||
|
opp-prof-num = <2>;
|
||||||
|
opp-temp-num = <2>;
|
||||||
|
opp-temp = <50 200>;
|
||||||
|
opp-freq = <1 2 3 4>;
|
||||||
|
opp-volt-min = <
|
||||||
|
/* profile2 profile3*/
|
||||||
|
770000 770000
|
||||||
|
770000 770000
|
||||||
|
>;
|
||||||
|
opp-hpm = <
|
||||||
|
/* profile2 profile3*/
|
||||||
|
210 215
|
||||||
|
190 215
|
||||||
|
>;
|
||||||
|
opp-div = <3 3 3 3>;
|
||||||
|
opp-volt-max = <
|
||||||
|
/* profile2 profile3*/
|
||||||
|
977000 977000
|
||||||
|
977000 977000
|
||||||
|
>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
memory {
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x80000000 0x40000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&uart0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&dual_timer0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&i2c_bus3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus0 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus1 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
|
||||||
|
spidev@1 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <1>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus2 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&spi_bus3 {
|
||||||
|
status = "okay";
|
||||||
|
|
||||||
|
spidev@0 {
|
||||||
|
compatible = "rohm,dh2228fv";
|
||||||
|
reg = <0>;
|
||||||
|
pl022,interface = <0>;
|
||||||
|
pl022,com-mode = <0>;
|
||||||
|
spi-max-frequency = <24000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&hisfc {
|
||||||
|
hi_sfc {
|
||||||
|
compatible = "jedec,spi-nor";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <160000000>;
|
||||||
|
m25p,fast-read;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&hisnfc {
|
||||||
|
hinand {
|
||||||
|
compatible = "jedec,spi-nand";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <160000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&hinfc {
|
||||||
|
hinand {
|
||||||
|
compatible = "jedec,nand";
|
||||||
|
reg = <0>;
|
||||||
|
nand-max-frequency = <200000000>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mmc2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&mdio {
|
||||||
|
ethphy: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&higmac {
|
||||||
|
compatible = "hisilicon,higmac-v3", "hisilicon,higmac";
|
||||||
|
phy-handle = <ðphy>;
|
||||||
|
phy-mode = "rmii";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip4 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip5 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip6 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip7 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip8 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip9 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip10 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip11 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip12 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip13 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip14 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&gpio_chip16 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
|
@ -0,0 +1,207 @@
|
||||||
|
/*
|
||||||
|
* power mangager control for hisilicon hi3516av200 soc
|
||||||
|
*
|
||||||
|
* Copyright (c) 2015 HiSilicon Technologies Co., Ltd.
|
||||||
|
* Authors: zengtao@hisilicon.com
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
|
#include <linux/resource.h>
|
||||||
|
#include <mach/platform.h>
|
||||||
|
|
||||||
|
#include <linux/delay.h>
|
||||||
|
|
||||||
|
#define PERI_PMC77 (0x134)
|
||||||
|
#define PERI_PMC79 (0x13c)
|
||||||
|
#define PERI_PMC85 (0x154)
|
||||||
|
|
||||||
|
static void __iomem *pmc_base;
|
||||||
|
static u32 __attribute__((used)) pmc_phys_addr;
|
||||||
|
|
||||||
|
#define PMC_ADDRESS(reg) (pmc_base + reg)
|
||||||
|
/* set bitfield of reg from start bit to end - 1 bit */
|
||||||
|
static void reg_bit_set(u32 reg, u32 start, u32 end, u32 val)
|
||||||
|
{
|
||||||
|
u32 regval, mask;
|
||||||
|
|
||||||
|
regval = readl((void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
mask = ((0xffffffff << (32 - start)) >> (32 - start))
|
||||||
|
| ((0xffffffff >> end) << end);
|
||||||
|
|
||||||
|
regval &= mask;
|
||||||
|
regval |= (val << start);
|
||||||
|
|
||||||
|
writel(regval, (void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get bitfield of reg from start bit to end - 1 bit */
|
||||||
|
static u32 reg_bit_get(u32 reg, u32 start, u32 end)
|
||||||
|
{
|
||||||
|
u32 regval;
|
||||||
|
|
||||||
|
|
||||||
|
regval = readl((void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
regval = (regval << (32 - end)) >> (32 - end);
|
||||||
|
regval = regval >> start;
|
||||||
|
|
||||||
|
|
||||||
|
return regval;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hi_pmc_power_up_done(void)
|
||||||
|
{
|
||||||
|
writel(0, (void __iomem *)PMC_ADDRESS(PERI_PMC85));
|
||||||
|
writel(1, (void __iomem *)PMC_ADDRESS(PERI_PMC85));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* before power down set ac inactive */
|
||||||
|
void hi_pmc_set_ac_inactive(void)
|
||||||
|
{
|
||||||
|
reg_bit_set(PERI_PMC79, 8, 9, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* after powerup clear ac inactive */
|
||||||
|
void hi_pmc_clear_ac_inactive(void)
|
||||||
|
{
|
||||||
|
reg_bit_set(PERI_PMC79, 8, 9, 0);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(hi_pmc_clear_ac_inactive);
|
||||||
|
|
||||||
|
/* call from assable context */
|
||||||
|
asmlinkage void __naked hi_pmc_clear_a17_ac(void)
|
||||||
|
{
|
||||||
|
asm volatile("\n"
|
||||||
|
"adr r2, 1f\n"
|
||||||
|
"ldmia r2, {r1, r3}\n"
|
||||||
|
"sub r0, r2, r1\n"
|
||||||
|
"ldr r2, [r0, r3]\n"
|
||||||
|
"ldr r0, ="__stringify(PERI_PMC79)"\n"
|
||||||
|
"add r0, r0, r2\n"
|
||||||
|
"ldr r1, [r0]\n"
|
||||||
|
"bic r1, #0x100\n"
|
||||||
|
"str r1, [r0]\n"
|
||||||
|
"mov r0, #0\n"
|
||||||
|
"bx lr\n"
|
||||||
|
|
||||||
|
".align 2\n"
|
||||||
|
"1: .word .\n"
|
||||||
|
" .word pmc_phys_addr\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
unreachable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hi_pmc_config(void)
|
||||||
|
{
|
||||||
|
/* enable pmc timeout */
|
||||||
|
reg_bit_set(PERI_PMC77, 12, 13, 1);
|
||||||
|
/* enable pmc auto mode */
|
||||||
|
reg_bit_set(PERI_PMC79, 0, 2, 0);
|
||||||
|
/* enable irq triger source power on */
|
||||||
|
reg_bit_set(PERI_PMC79, 7, 8, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpu hotplug powerup */
|
||||||
|
void hi_pmc_power_up(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
hi_pmc_config();
|
||||||
|
|
||||||
|
/* make sure it powerup state when power up */
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 0);
|
||||||
|
|
||||||
|
/* disable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 0);
|
||||||
|
|
||||||
|
/* power on */
|
||||||
|
reg_bit_set(PERI_PMC79, 3, 4, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 3, 4, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpu hotplug powerdown */
|
||||||
|
void hi_pmc_power_down(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 6);
|
||||||
|
|
||||||
|
/* disable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 0);
|
||||||
|
|
||||||
|
/* power off */
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpuidle powerdown */
|
||||||
|
void hi_pmc_automode_power_down(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 6);
|
||||||
|
|
||||||
|
/* enable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 1);
|
||||||
|
|
||||||
|
/* power off */
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(hi_pmc_automode_power_down);
|
||||||
|
|
||||||
|
|
||||||
|
/* enable timeout */
|
||||||
|
static int hi_pmc_init(void)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
struct resource res;
|
||||||
|
int ret = -ENODEV;
|
||||||
|
|
||||||
|
np = of_find_compatible_node(NULL, NULL, "hisilicon,pmc");
|
||||||
|
if (!np)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
pmc_base = of_iomap(np, 0);
|
||||||
|
if (!pmc_base) {
|
||||||
|
pr_err("failed to map pmc base\n");
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = of_address_to_resource(np, 0, &res);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("failed to get pmc base phys\n");
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
pmc_phys_addr = res.start;
|
||||||
|
|
||||||
|
err:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
early_initcall(hi_pmc_init);
|
|
@ -0,0 +1,207 @@
|
||||||
|
/*
|
||||||
|
* power mangager control for hisilicon hi3519 soc
|
||||||
|
*
|
||||||
|
* Copyright (c) 2015 HiSilicon Technologies Co., Ltd.
|
||||||
|
* Authors: zengtao@hisilicon.com
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the
|
||||||
|
* Free Software Foundation; either version 2 of the License, or (at your
|
||||||
|
* option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/io.h>
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <linux/bug.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/of_address.h>
|
||||||
|
#include <linux/resource.h>
|
||||||
|
#include <mach/platform.h>
|
||||||
|
|
||||||
|
#include <linux/delay.h>
|
||||||
|
|
||||||
|
#define PERI_PMC77 (0x134)
|
||||||
|
#define PERI_PMC79 (0x13c)
|
||||||
|
#define PERI_PMC85 (0x154)
|
||||||
|
|
||||||
|
static void __iomem *pmc_base;
|
||||||
|
static u32 __attribute__((used)) pmc_phys_addr;
|
||||||
|
|
||||||
|
#define PMC_ADDRESS(reg) (pmc_base + reg)
|
||||||
|
/* set bitfield of reg from start bit to end - 1 bit */
|
||||||
|
static void reg_bit_set(u32 reg, u32 start, u32 end, u32 val)
|
||||||
|
{
|
||||||
|
u32 regval, mask;
|
||||||
|
|
||||||
|
regval = readl((void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
mask = ((0xffffffff << (32 - start)) >> (32 - start))
|
||||||
|
| ((0xffffffff >> end) << end);
|
||||||
|
|
||||||
|
regval &= mask;
|
||||||
|
regval |= (val << start);
|
||||||
|
|
||||||
|
writel(regval, (void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* get bitfield of reg from start bit to end - 1 bit */
|
||||||
|
static u32 reg_bit_get(u32 reg, u32 start, u32 end)
|
||||||
|
{
|
||||||
|
u32 regval;
|
||||||
|
|
||||||
|
|
||||||
|
regval = readl((void __iomem *)PMC_ADDRESS(reg));
|
||||||
|
regval = (regval << (32 - end)) >> (32 - end);
|
||||||
|
regval = regval >> start;
|
||||||
|
|
||||||
|
|
||||||
|
return regval;
|
||||||
|
}
|
||||||
|
|
||||||
|
void hi_pmc_power_up_done(void)
|
||||||
|
{
|
||||||
|
writel(0, (void __iomem *)PMC_ADDRESS(PERI_PMC85));
|
||||||
|
writel(1, (void __iomem *)PMC_ADDRESS(PERI_PMC85));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* before power down set ac inactive */
|
||||||
|
void hi_pmc_set_ac_inactive(void)
|
||||||
|
{
|
||||||
|
reg_bit_set(PERI_PMC79, 8, 9, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* after powerup clear ac inactive */
|
||||||
|
void hi_pmc_clear_ac_inactive(void)
|
||||||
|
{
|
||||||
|
reg_bit_set(PERI_PMC79, 8, 9, 0);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(hi_pmc_clear_ac_inactive);
|
||||||
|
|
||||||
|
/* call from assable context */
|
||||||
|
asmlinkage void __naked hi_pmc_clear_a17_ac(void)
|
||||||
|
{
|
||||||
|
asm volatile("\n"
|
||||||
|
"adr r2, 1f\n"
|
||||||
|
"ldmia r2, {r1, r3}\n"
|
||||||
|
"sub r0, r2, r1\n"
|
||||||
|
"ldr r2, [r0, r3]\n"
|
||||||
|
"ldr r0, ="__stringify(PERI_PMC79)"\n"
|
||||||
|
"add r0, r0, r2\n"
|
||||||
|
"ldr r1, [r0]\n"
|
||||||
|
"bic r1, #0x100\n"
|
||||||
|
"str r1, [r0]\n"
|
||||||
|
"mov r0, #0\n"
|
||||||
|
"bx lr\n"
|
||||||
|
|
||||||
|
".align 2\n"
|
||||||
|
"1: .word .\n"
|
||||||
|
" .word pmc_phys_addr\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
unreachable();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hi_pmc_config(void)
|
||||||
|
{
|
||||||
|
/* enable pmc timeout */
|
||||||
|
reg_bit_set(PERI_PMC77, 12, 13, 1);
|
||||||
|
/* enable pmc auto mode */
|
||||||
|
reg_bit_set(PERI_PMC79, 0, 2, 0);
|
||||||
|
/* enable irq triger source power on */
|
||||||
|
reg_bit_set(PERI_PMC79, 7, 8, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpu hotplug powerup */
|
||||||
|
void hi_pmc_power_up(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
hi_pmc_config();
|
||||||
|
|
||||||
|
/* make sure it powerup state when power up */
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 0);
|
||||||
|
|
||||||
|
/* disable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 0);
|
||||||
|
|
||||||
|
/* power on */
|
||||||
|
reg_bit_set(PERI_PMC79, 3, 4, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 3, 4, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpu hotplug powerdown */
|
||||||
|
void hi_pmc_power_down(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 6);
|
||||||
|
|
||||||
|
/* disable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 0);
|
||||||
|
|
||||||
|
/* power off */
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* cpuidle powerdown */
|
||||||
|
void hi_pmc_automode_power_down(void)
|
||||||
|
{
|
||||||
|
u32 power_state;
|
||||||
|
|
||||||
|
power_state = reg_bit_get(PERI_PMC79, 12, 16);
|
||||||
|
BUG_ON(power_state != 6);
|
||||||
|
|
||||||
|
/* enable interrupt wakeup */
|
||||||
|
reg_bit_set(PERI_PMC79, 5, 6, 1);
|
||||||
|
|
||||||
|
/* power off */
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 0);
|
||||||
|
reg_bit_set(PERI_PMC79, 4, 5, 1);
|
||||||
|
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(hi_pmc_automode_power_down);
|
||||||
|
|
||||||
|
|
||||||
|
/* enable timeout */
|
||||||
|
static int hi_pmc_init(void)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
struct resource res;
|
||||||
|
int ret = -ENODEV;
|
||||||
|
|
||||||
|
np = of_find_compatible_node(NULL, NULL, "hisilicon,pmc");
|
||||||
|
if (!np)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
pmc_base = of_iomap(np, 0);
|
||||||
|
if (!pmc_base) {
|
||||||
|
pr_err("failed to map pmc base\n");
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = of_address_to_resource(np, 0, &res);
|
||||||
|
if (ret) {
|
||||||
|
pr_err("failed to get pmc base phys\n");
|
||||||
|
ret = -ENOMEM;
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
pmc_phys_addr = res.start;
|
||||||
|
|
||||||
|
err:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
early_initcall(hi_pmc_init);
|
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef __LINUX_COMPILER_H
|
||||||
|
#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __used __attribute__((__used__))
|
||||||
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
|
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||||
|
|
||||||
|
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
to them will be unlikely. This means a lot of manual unlikely()s
|
||||||
|
are unnecessary now for any paths leading to the usual suspects
|
||||||
|
like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||||
|
older compilers]
|
||||||
|
|
||||||
|
Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||||
|
in the preprocessor, but we can live with this because they're unreleased.
|
||||||
|
Maketime probing would be overkill here.
|
||||||
|
|
||||||
|
gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||||
|
a special section, but I don't see any sense in this right now in
|
||||||
|
the kernel context */
|
||||||
|
#define __cold __attribute__((__cold__))
|
||||||
|
|
||||||
|
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
|
# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
|
# define __compiletime_error(message) __attribute__((error(message)))
|
||||||
|
#endif /* __CHECKER__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark a position in code as unreachable. This can be used to
|
||||||
|
* suppress control flow warnings after asm blocks that transfer
|
||||||
|
* control elsewhere.
|
||||||
|
*
|
||||||
|
* Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||||
|
* this in the preprocessor, but we can live with this because they're
|
||||||
|
* unreleased. Really, we need to have autoconf for the kernel.
|
||||||
|
*/
|
||||||
|
#define unreachable() __builtin_unreachable()
|
||||||
|
|
||||||
|
/* Mark a function definition as prohibited from being cloned. */
|
||||||
|
#define __noclone __attribute__((__noclone__))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the optimizer that something else uses this function or variable.
|
||||||
|
*/
|
||||||
|
#define __visible __attribute__((externally_visible))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GCC 'asm goto' miscompiles certain code sequences:
|
||||||
|
*
|
||||||
|
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||||
|
*
|
||||||
|
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||||
|
*
|
||||||
|
* (asm goto is automatically volatile - the naming reflects this.)
|
||||||
|
*/
|
||||||
|
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||||
|
#define __HAVE_BUILTIN_BSWAP32__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP64__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP16__
|
||||||
|
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef __LINUX_COMPILER_H
|
||||||
|
#error "Please don't include <linux/compiler-gcc5.h> directly, include <linux/compiler.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __used __attribute__((__used__))
|
||||||
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
|
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||||
|
|
||||||
|
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
to them will be unlikely. This means a lot of manual unlikely()s
|
||||||
|
are unnecessary now for any paths leading to the usual suspects
|
||||||
|
like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||||
|
older compilers]
|
||||||
|
|
||||||
|
Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||||
|
in the preprocessor, but we can live with this because they're unreleased.
|
||||||
|
Maketime probing would be overkill here.
|
||||||
|
|
||||||
|
gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||||
|
a special section, but I don't see any sense in this right now in
|
||||||
|
the kernel context */
|
||||||
|
#define __cold __attribute__((__cold__))
|
||||||
|
|
||||||
|
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
|
# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
|
# define __compiletime_error(message) __attribute__((error(message)))
|
||||||
|
#endif /* __CHECKER__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark a position in code as unreachable. This can be used to
|
||||||
|
* suppress control flow warnings after asm blocks that transfer
|
||||||
|
* control elsewhere.
|
||||||
|
*
|
||||||
|
* Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||||
|
* this in the preprocessor, but we can live with this because they're
|
||||||
|
* unreleased. Really, we need to have autoconf for the kernel.
|
||||||
|
*/
|
||||||
|
#define unreachable() __builtin_unreachable()
|
||||||
|
|
||||||
|
/* Mark a function definition as prohibited from being cloned. */
|
||||||
|
#define __noclone __attribute__((__noclone__))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the optimizer that something else uses this function or variable.
|
||||||
|
*/
|
||||||
|
#define __visible __attribute__((externally_visible))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GCC 'asm goto' miscompiles certain code sequences:
|
||||||
|
*
|
||||||
|
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||||
|
*
|
||||||
|
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||||
|
*
|
||||||
|
* (asm goto is automatically volatile - the naming reflects this.)
|
||||||
|
*/
|
||||||
|
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||||
|
#define __HAVE_BUILTIN_BSWAP32__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP64__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP16__
|
||||||
|
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
* linux/arch/arm/lib/memset.S
|
||||||
|
*
|
||||||
|
* Copyright (C) 1995-2000 Russell King
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
* published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* ASM optimised string functions
|
||||||
|
*/
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
.text
|
||||||
|
.align 5
|
||||||
|
.word 0
|
||||||
|
|
||||||
|
1: subs r2, r2, #4 @ 1 do we have enough
|
||||||
|
blt 5f @ 1 bytes to align with?
|
||||||
|
cmp r3, #2 @ 1
|
||||||
|
strltb r1, [ip], #1 @ 1
|
||||||
|
strleb r1, [ip], #1 @ 1
|
||||||
|
strb r1, [ip], #1 @ 1
|
||||||
|
add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
|
||||||
|
/*
|
||||||
|
* The pointer is now aligned and the length is adjusted. Try doing the
|
||||||
|
* memset again.
|
||||||
|
*/
|
||||||
|
|
||||||
|
ENTRY(memset)
|
||||||
|
/*
|
||||||
|
* Preserve the contents of r0 for the return value.
|
||||||
|
*/
|
||||||
|
mov ip, r0
|
||||||
|
ands r3, ip, #3 @ 1 unaligned?
|
||||||
|
bne 1b @ 1
|
||||||
|
/*
|
||||||
|
* we know that the pointer in ip is aligned to a word boundary.
|
||||||
|
*/
|
||||||
|
orr r1, r1, r1, lsl #8
|
||||||
|
orr r1, r1, r1, lsl #16
|
||||||
|
mov r3, r1
|
||||||
|
cmp r2, #16
|
||||||
|
blt 4f
|
||||||
|
|
||||||
|
#if ! CALGN(1)+0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We need 2 extra registers for this loop - use r8 and the LR
|
||||||
|
*/
|
||||||
|
stmfd sp!, {r8, lr}
|
||||||
|
mov r8, r1
|
||||||
|
mov lr, r1
|
||||||
|
|
||||||
|
2: subs r2, r2, #64
|
||||||
|
stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
|
||||||
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
|
stmgeia ip!, {r1, r3, r8, lr}
|
||||||
|
bgt 2b
|
||||||
|
ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go.
|
||||||
|
/*
|
||||||
|
* No need to correct the count; we're only testing bits from now on
|
||||||
|
*/
|
||||||
|
tst r2, #32
|
||||||
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
|
tst r2, #16
|
||||||
|
stmneia ip!, {r1, r3, r8, lr}
|
||||||
|
ldmfd sp!, {r8, lr}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This version aligns the destination pointer in order to write
|
||||||
|
* whole cache lines at once.
|
||||||
|
*/
|
||||||
|
|
||||||
|
stmfd sp!, {r4-r8, lr}
|
||||||
|
mov r4, r1
|
||||||
|
mov r5, r1
|
||||||
|
mov r6, r1
|
||||||
|
mov r7, r1
|
||||||
|
mov r8, r1
|
||||||
|
mov lr, r1
|
||||||
|
|
||||||
|
cmp r2, #96
|
||||||
|
tstgt ip, #31
|
||||||
|
ble 3f
|
||||||
|
|
||||||
|
and r8, ip, #31
|
||||||
|
rsb r8, r8, #32
|
||||||
|
sub r2, r2, r8
|
||||||
|
movs r8, r8, lsl #(32 - 4)
|
||||||
|
stmcsia ip!, {r4, r5, r6, r7}
|
||||||
|
stmmiia ip!, {r4, r5}
|
||||||
|
tst r8, #(1 << 30)
|
||||||
|
mov r8, r1
|
||||||
|
strne r1, [ip], #4
|
||||||
|
|
||||||
|
3: subs r2, r2, #64
|
||||||
|
stmgeia ip!, {r1, r3-r8, lr}
|
||||||
|
stmgeia ip!, {r1, r3-r8, lr}
|
||||||
|
bgt 3b
|
||||||
|
ldmeqfd sp!, {r4-r8, pc}
|
||||||
|
|
||||||
|
tst r2, #32
|
||||||
|
stmneia ip!, {r1, r3-r8, lr}
|
||||||
|
tst r2, #16
|
||||||
|
stmneia ip!, {r4-r7}
|
||||||
|
ldmfd sp!, {r4-r8, lr}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
4: tst r2, #8
|
||||||
|
stmneia ip!, {r1, r3}
|
||||||
|
tst r2, #4
|
||||||
|
strne r1, [ip], #4
|
||||||
|
/*
|
||||||
|
* When we get here, we've got less than 4 bytes to zero. We
|
||||||
|
* may have an unaligned pointer as well.
|
||||||
|
*/
|
||||||
|
5: tst r2, #2
|
||||||
|
strneb r1, [ip], #1
|
||||||
|
strneb r1, [ip], #1
|
||||||
|
tst r2, #1
|
||||||
|
strneb r1, [ip], #1
|
||||||
|
mov pc, lr
|
||||||
|
ENDPROC(memset)
|
|
@ -0,0 +1,65 @@
|
||||||
|
#ifndef __LINUX_COMPILER_H
|
||||||
|
#error "Please don't include <linux/compiler-gcc7.h> directly, include <linux/compiler.h> instead."
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define __used __attribute__((__used__))
|
||||||
|
#define __must_check __attribute__((warn_unused_result))
|
||||||
|
#define __compiler_offsetof(a, b) __builtin_offsetof(a, b)
|
||||||
|
|
||||||
|
/* Mark functions as cold. gcc will assume any path leading to a call
|
||||||
|
to them will be unlikely. This means a lot of manual unlikely()s
|
||||||
|
are unnecessary now for any paths leading to the usual suspects
|
||||||
|
like BUG(), printk(), panic() etc. [but let's keep them for now for
|
||||||
|
older compilers]
|
||||||
|
|
||||||
|
Early snapshots of gcc 4.3 don't support this and we can't detect this
|
||||||
|
in the preprocessor, but we can live with this because they're unreleased.
|
||||||
|
Maketime probing would be overkill here.
|
||||||
|
|
||||||
|
gcc also has a __attribute__((__hot__)) to move hot functions into
|
||||||
|
a special section, but I don't see any sense in this right now in
|
||||||
|
the kernel context */
|
||||||
|
#define __cold __attribute__((__cold__))
|
||||||
|
|
||||||
|
#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
|
||||||
|
|
||||||
|
#ifndef __CHECKER__
|
||||||
|
# define __compiletime_warning(message) __attribute__((warning(message)))
|
||||||
|
# define __compiletime_error(message) __attribute__((error(message)))
|
||||||
|
#endif /* __CHECKER__ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark a position in code as unreachable. This can be used to
|
||||||
|
* suppress control flow warnings after asm blocks that transfer
|
||||||
|
* control elsewhere.
|
||||||
|
*
|
||||||
|
* Early snapshots of gcc 4.5 don't support this and we can't detect
|
||||||
|
* this in the preprocessor, but we can live with this because they're
|
||||||
|
* unreleased. Really, we need to have autoconf for the kernel.
|
||||||
|
*/
|
||||||
|
#define unreachable() __builtin_unreachable()
|
||||||
|
|
||||||
|
/* Mark a function definition as prohibited from being cloned. */
|
||||||
|
#define __noclone __attribute__((__noclone__))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tell the optimizer that something else uses this function or variable.
|
||||||
|
*/
|
||||||
|
#define __visible __attribute__((externally_visible))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GCC 'asm goto' miscompiles certain code sequences:
|
||||||
|
*
|
||||||
|
* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
||||||
|
*
|
||||||
|
* Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
||||||
|
*
|
||||||
|
* (asm goto is automatically volatile - the naming reflects this.)
|
||||||
|
*/
|
||||||
|
#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
||||||
|
#define __HAVE_BUILTIN_BSWAP32__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP64__
|
||||||
|
#define __HAVE_BUILTIN_BSWAP16__
|
||||||
|
#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
|
|
@ -0,0 +1,379 @@
|
||||||
|
#!/usr/bin/perl
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Copyright 2007-2008 rPath, Inc. - All Rights Reserved
|
||||||
|
#
|
||||||
|
# This file is part of the Linux kernel, and is made available under
|
||||||
|
# the terms of the GNU General Public License version 2 or (at your
|
||||||
|
# option) any later version; incorporated herein by reference.
|
||||||
|
#
|
||||||
|
# -----------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Usage: timeconst.pl HZ > timeconst.h
|
||||||
|
#
|
||||||
|
|
||||||
|
# Precomputed values for systems without Math::BigInt
|
||||||
|
# Generated by:
|
||||||
|
# timeconst.pl --can 24 32 48 64 100 122 128 200 250 256 300 512 1000 1024 1200
|
||||||
|
%canned_values = (
|
||||||
|
24 => [
|
||||||
|
'0xa6aaaaab','0x2aaaaaa',26,
|
||||||
|
125,3,
|
||||||
|
'0xc49ba5e4','0x1fbe76c8b4',37,
|
||||||
|
3,125,
|
||||||
|
'0xa2c2aaab','0xaaaa',16,
|
||||||
|
125000,3,
|
||||||
|
'0xc9539b89','0x7fffbce4217d',47,
|
||||||
|
3,125000,
|
||||||
|
], 32 => [
|
||||||
|
'0xfa000000','0x6000000',27,
|
||||||
|
125,4,
|
||||||
|
'0x83126e98','0xfdf3b645a',36,
|
||||||
|
4,125,
|
||||||
|
'0xf4240000','0x0',17,
|
||||||
|
31250,1,
|
||||||
|
'0x8637bd06','0x3fff79c842fa',46,
|
||||||
|
1,31250,
|
||||||
|
], 48 => [
|
||||||
|
'0xa6aaaaab','0x6aaaaaa',27,
|
||||||
|
125,6,
|
||||||
|
'0xc49ba5e4','0xfdf3b645a',36,
|
||||||
|
6,125,
|
||||||
|
'0xa2c2aaab','0x15555',17,
|
||||||
|
62500,3,
|
||||||
|
'0xc9539b89','0x3fffbce4217d',46,
|
||||||
|
3,62500,
|
||||||
|
], 64 => [
|
||||||
|
'0xfa000000','0xe000000',28,
|
||||||
|
125,8,
|
||||||
|
'0x83126e98','0x7ef9db22d',35,
|
||||||
|
8,125,
|
||||||
|
'0xf4240000','0x0',18,
|
||||||
|
15625,1,
|
||||||
|
'0x8637bd06','0x1fff79c842fa',45,
|
||||||
|
1,15625,
|
||||||
|
], 100 => [
|
||||||
|
'0xa0000000','0x0',28,
|
||||||
|
10,1,
|
||||||
|
'0xcccccccd','0x733333333',35,
|
||||||
|
1,10,
|
||||||
|
'0x9c400000','0x0',18,
|
||||||
|
10000,1,
|
||||||
|
'0xd1b71759','0x1fff2e48e8a7',45,
|
||||||
|
1,10000,
|
||||||
|
], 122 => [
|
||||||
|
'0x8325c53f','0xfbcda3a',28,
|
||||||
|
500,61,
|
||||||
|
'0xf9db22d1','0x7fbe76c8b',35,
|
||||||
|
61,500,
|
||||||
|
'0x8012e2a0','0x3ef36',18,
|
||||||
|
500000,61,
|
||||||
|
'0xffda4053','0x1ffffbce4217',45,
|
||||||
|
61,500000,
|
||||||
|
], 128 => [
|
||||||
|
'0xfa000000','0x1e000000',29,
|
||||||
|
125,16,
|
||||||
|
'0x83126e98','0x3f7ced916',34,
|
||||||
|
16,125,
|
||||||
|
'0xf4240000','0x40000',19,
|
||||||
|
15625,2,
|
||||||
|
'0x8637bd06','0xfffbce4217d',44,
|
||||||
|
2,15625,
|
||||||
|
], 200 => [
|
||||||
|
'0xa0000000','0x0',29,
|
||||||
|
5,1,
|
||||||
|
'0xcccccccd','0x333333333',34,
|
||||||
|
1,5,
|
||||||
|
'0x9c400000','0x0',19,
|
||||||
|
5000,1,
|
||||||
|
'0xd1b71759','0xfff2e48e8a7',44,
|
||||||
|
1,5000,
|
||||||
|
], 250 => [
|
||||||
|
'0x80000000','0x0',29,
|
||||||
|
4,1,
|
||||||
|
'0x80000000','0x180000000',33,
|
||||||
|
1,4,
|
||||||
|
'0xfa000000','0x0',20,
|
||||||
|
4000,1,
|
||||||
|
'0x83126e98','0x7ff7ced9168',43,
|
||||||
|
1,4000,
|
||||||
|
], 256 => [
|
||||||
|
'0xfa000000','0x3e000000',30,
|
||||||
|
125,32,
|
||||||
|
'0x83126e98','0x1fbe76c8b',33,
|
||||||
|
32,125,
|
||||||
|
'0xf4240000','0xc0000',20,
|
||||||
|
15625,4,
|
||||||
|
'0x8637bd06','0x7ffde7210be',43,
|
||||||
|
4,15625,
|
||||||
|
], 300 => [
|
||||||
|
'0xd5555556','0x2aaaaaaa',30,
|
||||||
|
10,3,
|
||||||
|
'0x9999999a','0x1cccccccc',33,
|
||||||
|
3,10,
|
||||||
|
'0xd0555556','0xaaaaa',20,
|
||||||
|
10000,3,
|
||||||
|
'0x9d495183','0x7ffcb923a29',43,
|
||||||
|
3,10000,
|
||||||
|
], 512 => [
|
||||||
|
'0xfa000000','0x7e000000',31,
|
||||||
|
125,64,
|
||||||
|
'0x83126e98','0xfdf3b645',32,
|
||||||
|
64,125,
|
||||||
|
'0xf4240000','0x1c0000',21,
|
||||||
|
15625,8,
|
||||||
|
'0x8637bd06','0x3ffef39085f',42,
|
||||||
|
8,15625,
|
||||||
|
], 1000 => [
|
||||||
|
'0x80000000','0x0',31,
|
||||||
|
1,1,
|
||||||
|
'0x80000000','0x0',31,
|
||||||
|
1,1,
|
||||||
|
'0xfa000000','0x0',22,
|
||||||
|
1000,1,
|
||||||
|
'0x83126e98','0x1ff7ced9168',41,
|
||||||
|
1,1000,
|
||||||
|
], 1024 => [
|
||||||
|
'0xfa000000','0xfe000000',32,
|
||||||
|
125,128,
|
||||||
|
'0x83126e98','0x7ef9db22',31,
|
||||||
|
128,125,
|
||||||
|
'0xf4240000','0x3c0000',22,
|
||||||
|
15625,16,
|
||||||
|
'0x8637bd06','0x1fff79c842f',41,
|
||||||
|
16,15625,
|
||||||
|
], 1200 => [
|
||||||
|
'0xd5555556','0xd5555555',32,
|
||||||
|
5,6,
|
||||||
|
'0x9999999a','0x66666666',31,
|
||||||
|
6,5,
|
||||||
|
'0xd0555556','0x2aaaaa',22,
|
||||||
|
2500,3,
|
||||||
|
'0x9d495183','0x1ffcb923a29',41,
|
||||||
|
3,2500,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
$has_bigint = eval 'use Math::BigInt qw(bgcd); 1;';
|
||||||
|
|
||||||
|
sub bint($)
|
||||||
|
{
|
||||||
|
my($x) = @_;
|
||||||
|
return Math::BigInt->new($x);
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Constants for division by reciprocal multiplication.
|
||||||
|
# (bits, numerator, denominator)
|
||||||
|
#
|
||||||
|
sub fmul($$$)
|
||||||
|
{
|
||||||
|
my ($b,$n,$d) = @_;
|
||||||
|
|
||||||
|
$n = bint($n);
|
||||||
|
$d = bint($d);
|
||||||
|
|
||||||
|
return scalar (($n << $b)+$d-bint(1))/$d;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fadj($$$)
|
||||||
|
{
|
||||||
|
my($b,$n,$d) = @_;
|
||||||
|
|
||||||
|
$n = bint($n);
|
||||||
|
$d = bint($d);
|
||||||
|
|
||||||
|
$d = $d/bgcd($n, $d);
|
||||||
|
return scalar (($d-bint(1)) << $b)/$d;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fmuls($$$) {
|
||||||
|
my($b,$n,$d) = @_;
|
||||||
|
my($s,$m);
|
||||||
|
my($thres) = bint(1) << ($b-1);
|
||||||
|
|
||||||
|
$n = bint($n);
|
||||||
|
$d = bint($d);
|
||||||
|
|
||||||
|
for ($s = 0; 1; $s++) {
|
||||||
|
$m = fmul($s,$n,$d);
|
||||||
|
return $s if ($m >= $thres);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate a hex value if the result fits in 64 bits;
|
||||||
|
# otherwise skip.
|
||||||
|
sub bignum_hex($) {
|
||||||
|
my($x) = @_;
|
||||||
|
my $s = $x->as_hex();
|
||||||
|
|
||||||
|
return (length($s) > 18) ? undef : $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Provides mul, adj, and shr factors for a specific
|
||||||
|
# (bit, time, hz) combination
|
||||||
|
sub muladj($$$) {
|
||||||
|
my($b, $t, $hz) = @_;
|
||||||
|
my $s = fmuls($b, $t, $hz);
|
||||||
|
my $m = fmul($s, $t, $hz);
|
||||||
|
my $a = fadj($s, $t, $hz);
|
||||||
|
return (bignum_hex($m), bignum_hex($a), $s);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Provides numerator, denominator values
|
||||||
|
sub numden($$) {
|
||||||
|
my($n, $d) = @_;
|
||||||
|
my $g = bgcd($n, $d);
|
||||||
|
return ($n/$g, $d/$g);
|
||||||
|
}
|
||||||
|
|
||||||
|
# All values for a specific (time, hz) combo
|
||||||
|
sub conversions($$) {
|
||||||
|
my ($t, $hz) = @_;
|
||||||
|
my @val = ();
|
||||||
|
|
||||||
|
# HZ_TO_xx
|
||||||
|
push(@val, muladj(32, $t, $hz));
|
||||||
|
push(@val, numden($t, $hz));
|
||||||
|
|
||||||
|
# xx_TO_HZ
|
||||||
|
push(@val, muladj(32, $hz, $t));
|
||||||
|
push(@val, numden($hz, $t));
|
||||||
|
|
||||||
|
return @val;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub compute_values($) {
|
||||||
|
my($hz) = @_;
|
||||||
|
my @val = ();
|
||||||
|
my $s, $m, $a, $g;
|
||||||
|
|
||||||
|
if (!$has_bigint) {
|
||||||
|
die "$0: HZ == $hz not canned and ".
|
||||||
|
"Math::BigInt not available\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# MSEC conversions
|
||||||
|
push(@val, conversions(1000, $hz));
|
||||||
|
|
||||||
|
# USEC conversions
|
||||||
|
push(@val, conversions(1000000, $hz));
|
||||||
|
|
||||||
|
return @val;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub outputval($$)
|
||||||
|
{
|
||||||
|
my($name, $val) = @_;
|
||||||
|
my $csuf;
|
||||||
|
|
||||||
|
if (defined($val)) {
|
||||||
|
if ($name !~ /SHR/) {
|
||||||
|
$val = "U64_C($val)";
|
||||||
|
}
|
||||||
|
printf "#define %-23s %s\n", $name.$csuf, $val.$csuf;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub output($@)
|
||||||
|
{
|
||||||
|
my($hz, @val) = @_;
|
||||||
|
my $pfx, $bit, $suf, $s, $m, $a;
|
||||||
|
|
||||||
|
print "/* Automatically generated by kernel/timeconst.pl */\n";
|
||||||
|
print "/* Conversion constants for HZ == $hz */\n";
|
||||||
|
print "\n";
|
||||||
|
print "#ifndef KERNEL_TIMECONST_H\n";
|
||||||
|
print "#define KERNEL_TIMECONST_H\n";
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
print "#include <linux/param.h>\n";
|
||||||
|
print "#include <linux/types.h>\n";
|
||||||
|
|
||||||
|
print "\n";
|
||||||
|
print "#if HZ != $hz\n";
|
||||||
|
print "#error \"kernel/timeconst.h has the wrong HZ value!\"\n";
|
||||||
|
print "#endif\n";
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
foreach $pfx ('HZ_TO_MSEC','MSEC_TO_HZ',
|
||||||
|
'HZ_TO_USEC','USEC_TO_HZ') {
|
||||||
|
foreach $bit (32) {
|
||||||
|
foreach $suf ('MUL', 'ADJ', 'SHR') {
|
||||||
|
outputval("${pfx}_$suf$bit", shift(@val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach $suf ('NUM', 'DEN') {
|
||||||
|
outputval("${pfx}_$suf", shift(@val));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "\n";
|
||||||
|
print "#endif /* KERNEL_TIMECONST_H */\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Pretty-print Perl values
|
||||||
|
sub perlvals(@) {
|
||||||
|
my $v;
|
||||||
|
my @l = ();
|
||||||
|
|
||||||
|
foreach $v (@_) {
|
||||||
|
if (!defined($v)) {
|
||||||
|
push(@l, 'undef');
|
||||||
|
} elsif ($v =~ /^0x/) {
|
||||||
|
push(@l, "\'".$v."\'");
|
||||||
|
} else {
|
||||||
|
push(@l, $v.'');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return join(',', @l);
|
||||||
|
}
|
||||||
|
|
||||||
|
($hz) = @ARGV;
|
||||||
|
|
||||||
|
# Use this to generate the %canned_values structure
|
||||||
|
if ($hz eq '--can') {
|
||||||
|
shift(@ARGV);
|
||||||
|
@hzlist = sort {$a <=> $b} (@ARGV);
|
||||||
|
|
||||||
|
print "# Precomputed values for systems without Math::BigInt\n";
|
||||||
|
print "# Generated by:\n";
|
||||||
|
print "# timeconst.pl --can ", join(' ', @hzlist), "\n";
|
||||||
|
print "\%canned_values = (\n";
|
||||||
|
my $pf = "\t";
|
||||||
|
foreach $hz (@hzlist) {
|
||||||
|
my @values = compute_values($hz);
|
||||||
|
print "$pf$hz => [\n";
|
||||||
|
while (scalar(@values)) {
|
||||||
|
my $bit;
|
||||||
|
foreach $bit (32) {
|
||||||
|
my $m = shift(@values);
|
||||||
|
my $a = shift(@values);
|
||||||
|
my $s = shift(@values);
|
||||||
|
print "\t\t", perlvals($m,$a,$s), ",\n";
|
||||||
|
}
|
||||||
|
my $n = shift(@values);
|
||||||
|
my $d = shift(@values);
|
||||||
|
print "\t\t", perlvals($n,$d), ",\n";
|
||||||
|
}
|
||||||
|
print "\t]";
|
||||||
|
$pf = ', ';
|
||||||
|
}
|
||||||
|
print "\n);\n";
|
||||||
|
} else {
|
||||||
|
$hz += 0; # Force to number
|
||||||
|
if ($hz < 1) {
|
||||||
|
die "Usage: $0 HZ\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
@val = @{$canned_values{$hz}};
|
||||||
|
#if (!defined(@val)) {
|
||||||
|
if(!@val) {
|
||||||
|
@val = compute_values($hz);
|
||||||
|
}
|
||||||
|
output($hz, @val);
|
||||||
|
}
|
||||||
|
exit 0;
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
|
@ -0,0 +1,2 @@
|
||||||
|
MEM_START_ADDR=0x80000000
|
||||||
|
KERNEL_UPLOAD_ADDR=0x81000000
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516av100
|
||||||
|
CHIP=hi3516av100
|
||||||
|
RAM_SIZE=256M
|
||||||
|
RAM_LINUX_SIZE=128M
|
||||||
|
RAM_MPP_SIZE=128M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516av200
|
||||||
|
CHIP=hi3516av200
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv500
|
||||||
|
CHIP=hi3516av300
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv100
|
||||||
|
CHIP=hi3516cv100
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv500
|
||||||
|
CHIP=hi3516cv500
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516av100
|
||||||
|
CHIP=hi3516dv100
|
||||||
|
RAM_SIZE=256M
|
||||||
|
RAM_LINUX_SIZE=128M
|
||||||
|
RAM_MPP_SIZE=128M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv500
|
||||||
|
CHIP=hi3516dv300
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv100
|
||||||
|
CHIP=hi3518cv100
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516cv100
|
||||||
|
CHIP=hi3518ev100
|
||||||
|
RAM_SIZE=64M
|
||||||
|
RAM_LINUX_SIZE=48M
|
||||||
|
RAM_MPP_SIZE=8M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3519av100
|
||||||
|
CHIP=hi3519av100
|
||||||
|
RAM_SIZE=512M
|
||||||
|
RAM_LINUX_SIZE=256M
|
||||||
|
RAM_MPP_SIZE=256M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3516av200
|
||||||
|
CHIP=hi3519v101
|
||||||
|
RAM_SIZE=128M
|
||||||
|
RAM_LINUX_SIZE=64M
|
||||||
|
RAM_MPP_SIZE=64M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,10 @@
|
||||||
|
VENDOR=unknown
|
||||||
|
MODEL=unknown
|
||||||
|
FAMILY=hi3559av100
|
||||||
|
CHIP=hi3559av100
|
||||||
|
RAM_SIZE=512M
|
||||||
|
RAM_LINUX_SIZE=256M
|
||||||
|
RAM_MPP_SIZE=256M
|
||||||
|
ROM_SIZE=?
|
||||||
|
CMOS=unknown
|
||||||
|
UBOOT_SIZE=1024K
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.37"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/hi3516av100.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/overlay"
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a17_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="3.18.20"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.18.20"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/hi3516av200.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/overlay"
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.37"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/hi3516av300.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/overlay"
|
|
@ -0,0 +1,19 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.8"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/hi3516cv100.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/overlay"
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.37"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/hi3516cv500.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/overlay"
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.37"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/hi3516dv100.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av100/kernel/overlay"
|
|
@ -0,0 +1,22 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="4.9.37"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.37"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/hi3516dv300.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv500/kernel/overlay"
|
|
@ -0,0 +1,19 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.8"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/hi3518cv100.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/overlay"
|
|
@ -0,0 +1,19 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="3.0.8"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_0=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.0.8"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/hi3518ev100.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516cv100/kernel/overlay"
|
|
@ -0,0 +1,24 @@
|
||||||
|
BR2_arm=y
|
||||||
|
BR2_cortex_a17_a7=y
|
||||||
|
BR2_ARM_EABI=y
|
||||||
|
BR2_ARM_FPU_NEON_VFPV4=y
|
||||||
|
BR2_ARM_INSTRUCTIONS_THUMB2=y
|
||||||
|
BR2_KERNEL_HEADERS_VERSION=y
|
||||||
|
BR2_DEFAULT_KERNEL_VERSION="3.18.20"
|
||||||
|
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_LOCALE=y
|
||||||
|
BR2_TOOLCHAIN_BUILDROOT_USE_SSP=y
|
||||||
|
BR2_GCC_VERSION_7_X=y
|
||||||
|
BR2_ROOTFS_OVERLAY="$(TOPDIR)/../overlay-common"
|
||||||
|
BR2_LINUX_KERNEL=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.18.20"
|
||||||
|
BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
|
||||||
|
BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/hi3519v101.generic.config"
|
||||||
|
BR2_LINUX_KERNEL_UIMAGE=y
|
||||||
|
BR2_LINUX_KERNEL_XZ=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS=y
|
||||||
|
BR2_TARGET_ROOTFS_SQUASHFS4_XZ=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER=y
|
||||||
|
BR2_LINUX_KERNEL_EXT_HISI_PATCHER_LIST="$(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/patches/ $(BR2_EXTERNAL_HISICAM_PATH)/board/hi3516av200/kernel/overlay $(BR2_EXTERNAL_HISICAM_PATH)/board/jvt_s274h19v-l29_hi3519v101_imx274/kernel/overlay"
|
Loading…
Reference in New Issue