diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/boot/dts/pistachio/Makefile | 2 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio.dtsi | 12 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_beetle.dtsi | 27 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_beetle_boardtest.dts | 99 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_beetle_mbub.dts | 31 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_board_uboot.dtsi | 15 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_bub.dts | 3 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_concerto.dtsi | 40 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_concerto_mbub.dts | 69 | ||||
-rw-r--r-- | arch/mips/boot/dts/pistachio/pistachio_marduk.dts | 34 | ||||
-rw-r--r-- | arch/mips/configs/pistachio_defconfig | 14 | ||||
-rw-r--r-- | arch/mips/configs/pistachio_prodtest_defconfig | 390 | ||||
-rw-r--r-- | arch/mips/include/asm/syscall.h | 4 | ||||
-rw-r--r-- | arch/mips/kernel/scall32-o32.S | 39 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-64.S | 38 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-n32.S | 19 | ||||
-rw-r--r-- | arch/mips/kernel/scall64-o32.S | 19 | ||||
-rw-r--r-- | arch/mips/pistachio/init.c | 25 |
18 files changed, 587 insertions, 293 deletions
diff --git a/arch/mips/boot/dts/pistachio/Makefile b/arch/mips/boot/dts/pistachio/Makefile index c3f4b766351..3a18b2cde42 100644 --- a/arch/mips/boot/dts/pistachio/Makefile +++ b/arch/mips/boot/dts/pistachio/Makefile @@ -1,4 +1,4 @@ -dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_bub.dtb pistachio_fpga.dtb pistachio_marduk.dtb pistachio_concerto_mbub.dtb pistachio_beetle_mbub.dtb +dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_bub.dtb pistachio_fpga.dtb pistachio_marduk.dtb obj-y += $(patsubst %.dtb, %.dtb.o, $(dtb-y)) diff --git a/arch/mips/boot/dts/pistachio/pistachio.dtsi b/arch/mips/boot/dts/pistachio/pistachio.dtsi index ffaddc3ad92..96f06efb904 100644 --- a/arch/mips/boot/dts/pistachio/pistachio.dtsi +++ b/arch/mips/boot/dts/pistachio/pistachio.dtsi @@ -717,7 +717,7 @@ slew-rate = <1>; drive-strength = <4>; }; - enet-phy-clk { + pin_enet_phy_clk: enet-phy-clk { pins = "mfio71"; function = "eth"; slew-rate = <1>; @@ -797,14 +797,14 @@ }; dac_clk_pin: dac-clk-pin { - dac-clk { + pin_dac_clk: dac-clk { pins = "mfio45"; function = "i2s_dac_clk"; }; }; i2s_mclk_pin: i2s-mclk-pin { - i2s-mclk { + pin_i2s_mclk: i2s-mclk { pins = "mfio36"; function = "i2s_out"; }; @@ -826,7 +826,7 @@ }; i2s_out_pins: i2s-out-pins { - i2s-out { + pins_i2s_out: i2s-out { pins = "mfio37", "mfio38", "mfio39", "mfio40", "mfio41", "mfio42", "mfio43", "mfio44"; @@ -878,7 +878,7 @@ wdt: watchdog@18102100 { compatible = "img,pdc-wdt"; - reg = <0x18102100 0x100>; + reg = <0x18102100 0x20>; interrupts = <GIC_SHARED 52 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk_periph PERIPH_CLK_WD>, <&cr_periph SYS_CLK_WD>; clock-names = "wdt", "sys"; @@ -938,7 +938,7 @@ pinctrl-names = "default"; fifo-depth = <0x20>; num-slots = <1>; - clock-frequency = <200000000>; + clock-frequency = <50000000>; bus-width = <8>; cap-mmc-highspeed; cap-sd-highspeed; diff --git a/arch/mips/boot/dts/pistachio/pistachio_beetle.dtsi b/arch/mips/boot/dts/pistachio/pistachio_beetle.dtsi index 6b7d4b9c0bc..4cff3fd40ca 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_beetle.dtsi +++ b/arch/mips/boot/dts/pistachio/pistachio_beetle.dtsi @@ -43,26 +43,39 @@ reg = <1>; spi-max-frequency = <50000000>; nand-on-flash-bbt; - spi-rx-bus-width = <4>; + spi-rx-bus-width = <2>; #address-cells = <1>; #size-cells = <1>; linux,mtd-name = "spi-nand"; }; }; -&uart0 { - pinctrl-0 = <&uart0_pins>, <&uart0_rts_cts_pins>; - pinctrl-names = "default"; +&uccpsystem { + status = "okay"; +}; + +&uccphostport { + status = "okay"; +}; + +&uccpbthp { + status = "okay"; +}; +&uccpdummyhp { status = "okay"; }; -&uart1 { +&uart0 { status = "okay"; + assigned-clock-rates = <114278400>, <1843200>; }; -&usb { +&sdhost { status = "okay"; + + bus-width = <4>; + disable-wp; }; &i2c3 { @@ -85,7 +98,7 @@ status = "okay"; mac-address0 = [0123456789AC]; mac-address1 = [0123456789AD]; - rf-params = [1E00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F0808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808]; + rf-params = [101F24292E33383C4045484D5157595D6165686C7076262D3135393C41454A4D505356595B5D5F6164676A23282C3135393D4145494D53565A5D616466686B6F24282C3134373C4144484D52555A5E62666A6F747923282C31363A3E4245494E51575B5F63666B71767A1A1F24292E33383C4045484D5055585B5E62666A7223272C3034383C41454A4D5156595C6064686D7277252A2E32373B3F43474B4F55585B5D606467696C7224282C3135393D4044494E52565A5D6165696D7274252A2F33383C4043474C5054595D6165696D73787C1212121212121212121212121210101010101010101010101010121212121212110F0E0A0A1010101010100F0D0C08080F0F0F0F0F0F0E0C0B0707121212121212110F0E0A0A1010101010100F0D0C08080F0F0F0F0F0F0E0C0B0707121212121212110F0E0A0A1010101010100F0D0C08080F0F0F0F0F0F0E0C0B0707121212121212110F0E0A0A1010101010100F0D0C08080F0F0F0F0F0F0E0C0B0707]; num_streams = [02]; io-channels = <&adc 4>; }; diff --git a/arch/mips/boot/dts/pistachio/pistachio_beetle_boardtest.dts b/arch/mips/boot/dts/pistachio/pistachio_beetle_boardtest.dts index bd9bbd30da1..fea3fb8d763 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_beetle_boardtest.dts +++ b/arch/mips/boot/dts/pistachio/pistachio_beetle_boardtest.dts @@ -7,102 +7,41 @@ * published by the Free Software Foundation. */ -/dts-v1/; +#include "pistachio_beetle_mbub.dts" -#include "pistachio_beetle.dtsi" -#include <dt-bindings/sound/pistachio-audio.h> - -/ { - model = "IMG Pistachio Concerto mBuB with a Beetle module"; - compatible = "img,pistachio-bub", "img,pistachio"; - - aliases { - serial0 = &uart0; - serial1 = &uart1; - }; - - chosen { - bootargs = "console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x18101500,115200 root=/dev/sda1 rootwait ro"; - }; - - reg_1v8: fixed-regulator { - compatible = "regulator-fixed"; - regulator-name = "aux_adc_vref"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-boot-on; - }; - - supply5v0: supply5v0@0 { - compatible = "regulator-fixed"; - regulator-name = "5V-supply"; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - }; - - pistachio_audio_card { - compatible = "img,pistachio-audio"; - - clocks = <&clk_core CLK_AUDIO_PLL>, - <&clk_core CLK_I2S>, - <&clk_core CLK_AUDIO>; - clock-names = "audio_pll", "i2s_mclk", "dac_clk"; - - img,cr-periph = <&cr_periph>; - img,event-timer = <&event_timer>; - - parallel-out { - cpu-dai = <¶llel_out>; - sound-dai = <&internal_dac>; - }; - - }; - -}; - -&uccpsystem { - status = "okay"; +&ir { + status = "disabled"; }; -&uccphostport { - status = "okay"; +&pwm { + status = "disabled"; }; -&uccpbthp { - status = "okay"; +&i2c0 { + status = "disabled"; }; -&uccpdummyhp { - status = "okay"; +&i2c1 { + status = "disabled"; }; -&uart0 { - status = "okay"; - assigned-clock-rates = <114278400>, <1843200>; +&i2c2 { + status = "disabled"; }; -&uart1 { - status = "okay"; +&i2s_out { + status = "disabled"; }; -&usb { - status = "okay"; +&i2s_in { + status = "disabled"; }; -&enet { - status = "okay"; - - mac-address = [0123456789AB]; -}; - -&sdhost { - status = "okay"; - - bus-width = <4>; - disable-wp; +&spdif_out { + status = "disabled"; }; -¶llel_out { - status = "okay"; +&spdif_in { + status = "disabled"; }; diff --git a/arch/mips/boot/dts/pistachio/pistachio_beetle_mbub.dts b/arch/mips/boot/dts/pistachio/pistachio_beetle_mbub.dts index 49be49ca189..ad152b5900a 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_beetle_mbub.dts +++ b/arch/mips/boot/dts/pistachio/pistachio_beetle_mbub.dts @@ -11,9 +11,10 @@ #include "pistachio_beetle.dtsi" #include <dt-bindings/sound/pistachio-audio.h> +#include "pistachio_board_uboot.dtsi" / { - model = "IMG Pistachio Concerto mBuB with a Beetle module"; + model = "Beetle Bring-Up Board"; compatible = "img,pistachio-bub", "img,pistachio"; aliases { @@ -95,25 +96,16 @@ }; }; -&uccpsystem { - status = "okay"; +&pin_i2s_mclk { + drive-strength = <2>; }; -&uccphostport { - status = "okay"; +&pin_dac_clk { + drive-strength = <2>; }; -&uccpbthp { - status = "okay"; -}; - -&uccpdummyhp { - status = "okay"; -}; - -&uart0 { - status = "okay"; - assigned-clock-rates = <114278400>, <1843200>; +&pins_i2s_out { + drive-strength = <2>; }; &uart1 { @@ -136,13 +128,6 @@ mac-address = [0123456789AB]; }; -&sdhost { - status = "okay"; - - bus-width = <4>; - disable-wp; -}; - &ir { status = "okay"; }; diff --git a/arch/mips/boot/dts/pistachio/pistachio_board_uboot.dtsi b/arch/mips/boot/dts/pistachio/pistachio_board_uboot.dtsi new file mode 100644 index 00000000000..2fde5435d42 --- /dev/null +++ b/arch/mips/boot/dts/pistachio/pistachio_board_uboot.dtsi @@ -0,0 +1,15 @@ +/* + * Copyright (C) 2015 Imagination Technologies Ltd. + * + * 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. + */ + + +/ { + uboot-count { + compatible = "uboot,bootcount"; + reg = <0x18102120 0x4>; + }; +}; diff --git a/arch/mips/boot/dts/pistachio/pistachio_bub.dts b/arch/mips/boot/dts/pistachio/pistachio_bub.dts index 0750ca8c21a..eb88d6a0a29 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_bub.dts +++ b/arch/mips/boot/dts/pistachio/pistachio_bub.dts @@ -10,6 +10,7 @@ /dts-v1/; #include "pistachio_bub_audio_no_daughterboard_example.dtsi" +#include "pistachio_board_uboot.dtsi" / { model = "IMG Pistachio BuB"; @@ -58,7 +59,7 @@ reg = <1>; spi-max-frequency = <50000000>; nand-on-flash-bbt; - spi-rx-bus-width = <4>; + spi-rx-bus-width = <2>; #address-cells = <1>; #size-cells = <1>; linux,mtd-name = "spi-nand"; diff --git a/arch/mips/boot/dts/pistachio/pistachio_concerto.dtsi b/arch/mips/boot/dts/pistachio/pistachio_concerto.dtsi index 5e35f4d8ef5..bdf7c627318 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_concerto.dtsi +++ b/arch/mips/boot/dts/pistachio/pistachio_concerto.dtsi @@ -31,9 +31,10 @@ cs-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>, <&gpio0 1 GPIO_ACTIVE_HIGH>; flash@0 { - compatible = "spidev"; + compatible = "jedec,spi-nor"; reg = <0>; spi-max-frequency = <50000000>; + linux,mtd-name = "spi-nor"; }; flash@1 { @@ -41,42 +42,53 @@ reg = <1>; spi-max-frequency = <50000000>; nand-on-flash-bbt; - spi-rx-bus-width = <4>; + spi-rx-bus-width = <2>; #address-cells = <1>; #size-cells = <1>; + linux,mtd-name = "spi-nand"; }; }; -&uart0 { - pinctrl-0 = <&uart0_pins>, <&uart0_rts_cts_pins>; - pinctrl-names = "default"; +&uccpsystem { + status = "okay"; +}; +&uccphostport { status = "okay"; }; -&uart1 { +&uccpbthp { status = "okay"; }; -&usb { +&uccpdummyhp { status = "okay"; }; +&uart0 { + status = "okay"; + assigned-clock-rates = <114278400>, <1843200>; +}; + &i2c3 { status = "okay"; clock-frequency = <400000>; }; -//&i2s_out { -// status = "okay"; -//}; - -//&i2s_in { -// status = "okay"; -//}; +&sdhost { + status = "okay"; +}; &adc { status = "okay"; vref-supply = <&adc_1v8>; }; + +&wifi { + status = "okay"; + mac-address0 = [0123456789AC]; + mac-address1 = [0123456789AD]; + rf-params = [1E00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F0808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808]; + num_streams = [02]; +}; diff --git a/arch/mips/boot/dts/pistachio/pistachio_concerto_mbub.dts b/arch/mips/boot/dts/pistachio/pistachio_concerto_mbub.dts index b0d8689a6cc..afddda8bc2d 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_concerto_mbub.dts +++ b/arch/mips/boot/dts/pistachio/pistachio_concerto_mbub.dts @@ -9,11 +9,12 @@ /dts-v1/; -#include "pistachio.dtsi" +#include "pistachio_concerto.dtsi" #include <dt-bindings/sound/pistachio-audio.h> +#include "pistachio_board_uboot.dtsi" / { - model = "IMG Pistachio Concerto mBuB"; + model = "Concerto Bring-Up-Board"; compatible = "img,pistachio-bub", "img,pistachio"; aliases { @@ -101,53 +102,6 @@ }; }; -&spfi1 { - status = "okay"; - - pinctrl-0 = <&spim1_pins>, <&spim1_quad_pins>; - pinctrl-names = "default"; - cs-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>, <&gpio0 1 GPIO_ACTIVE_HIGH>; - - flash@0 { - compatible = "jedec,spi-nor"; - reg = <0>; - spi-max-frequency = <50000000>; - linux,mtd-name = "spi-nor"; - }; - - flash@1 { - compatible = "gigadevice,gd5f"; - reg = <1>; - spi-max-frequency = <50000000>; - nand-on-flash-bbt; - spi-rx-bus-width = <4>; - #address-cells = <1>; - #size-cells = <1>; - linux,mtd-name = "spi-nand"; - }; -}; - -&uccpsystem { - status = "okay"; -}; - -&uccphostport { - status = "okay"; -}; - -&uccpbthp { - status = "okay"; -}; - -&uccpdummyhp { - status = "okay"; -}; - -&uart0 { - status = "okay"; - assigned-clock-rates = <114278400>, <1843200>; -}; - &uart1 { status = "okay"; }; @@ -162,10 +116,6 @@ mac-address = [0123456789AB]; }; -&sdhost { - status = "okay"; -}; - &ir { status = "okay"; }; @@ -198,19 +148,6 @@ clock-frequency = <400000>; }; -&i2c3 { - status = "okay"; - clock-frequency = <400000>; -}; - -&wifi { - status = "okay"; - mac-address0 = [0123456789AC]; - mac-address1 = [0123456789AD]; - rf-params = [1E00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F0808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808]; - num_streams = [02]; -}; - &i2s_out { status = "okay"; }; diff --git a/arch/mips/boot/dts/pistachio/pistachio_marduk.dts b/arch/mips/boot/dts/pistachio/pistachio_marduk.dts index 511386e4cac..e855156e526 100644 --- a/arch/mips/boot/dts/pistachio/pistachio_marduk.dts +++ b/arch/mips/boot/dts/pistachio/pistachio_marduk.dts @@ -10,6 +10,7 @@ #include "pistachio.dtsi" #include <dt-bindings/sound/pistachio-audio.h> +#include "pistachio_board_uboot.dtsi" / { model = "IMG Marduk"; @@ -19,6 +20,8 @@ serial0 = &uart0; serial1 = &uart1; ethernet0 = &enet; + spi0 = &spfi0; + spi1 = &spfi1; }; chosen { @@ -38,14 +41,6 @@ regulator-boot-on; }; - /* EXT clock from cc2520 is fed to sc16is752 */ - cc2520_ext_clk: cc2520-ext-clk { - compatible = "fixed-clock"; - #clock-cells = <0>; - clock-frequency = <16000000>; - clock-output-names = "cc2520_ext_clock"; - }; - pistachio_audio_card { compatible = "img,pistachio-audio"; @@ -81,6 +76,13 @@ i2s-in { cpu-dai = <&i2s_in>; format = "i2s"; + + ak5720vt { + mclk = <PISTACHIO_MCLK_I2S>; + mclk-fs = <256>; + mclk-min-freq = <8192000>; + mclk-max-freq = <24576000>; + }; }; }; @@ -148,7 +150,7 @@ cs-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>, <&gpio0 2 GPIO_ACTIVE_HIGH>, <&gpio1 12 GPIO_ACTIVE_HIGH>, <&gpio1 13 GPIO_ACTIVE_HIGH>; - cc2520@0 { + cc2520: cc2520@0 { compatible = "ti,cc2520"; reg = <0>; spi-max-frequency = <4000000>; @@ -158,13 +160,14 @@ cca-gpio = <&gpio3 6 GPIO_ACTIVE_HIGH>; vreg-gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>; reset-gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>; + #clock-cells = <0>; extclock-freq = <16000000>; }; sc16is752: sc16is752@1 { compatible = "nxp,sc16is752"; reg = <1>; - clocks = <&cc2520_ext_clk>; + clocks = <&cc2520 0>; spi-max-frequency = <4000000>; interrupt-parent = <&gpio0>; interrupts = <11 IRQ_TYPE_EDGE_FALLING>; @@ -204,7 +207,7 @@ reg = <1>; spi-max-frequency = <50000000>; nand-on-flash-bbt; - spi-rx-bus-width = <4>; + spi-rx-bus-width = <2>; #address-cells = <1>; #size-cells = <1>; linux,mtd-name = "spi-nand"; @@ -244,9 +247,13 @@ mac-address = [0019f5ffff00]; }; +&pin_enet_phy_clk { + drive-strength = <2>; +}; + &sdhost { status = "okay"; - bus-width = <4>; + bus-width = <4>; disable-wp; }; @@ -265,6 +272,7 @@ &adc { status = "okay"; vref-supply = <®_1v8>; + adc-reserved-channels = <0x10>; }; &i2c2 { @@ -281,7 +289,7 @@ status = "okay"; mac-address0 = [0019f5ffff01]; mac-address1 = [0019f5ffff02]; - rf-params = [1E00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F00000000002426292A2C2E3237393F454A52576066000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F000000002B2C3033373A3D44474D51575A61656B6F0808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808080808]; + rf-params = [1A1c1f24292e33383c4045484d5157595d6165686d712023263d3135393c41454a4d505356595c5f6164672023282c3135393d4145494d53565a5e626567696c1c20252b3134373c4144484d52555a5e62666a6f742023282c31363a3e4245494e51575b5f63666b71761c1f24292e33383c4045494d5155585b5e62666a6f1e22262d3135393d42464b4e52575a5c6064676b702023282c3135393d4145494d5356595b5e606366692023272a31363b3f44484c5054575a5e6165696d711f2225292f33383c4043474c5054595d6165696d730B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B]; num_streams = [02]; }; diff --git a/arch/mips/configs/pistachio_defconfig b/arch/mips/configs/pistachio_defconfig index 8c995b4b472..0d3786bba43 100644 --- a/arch/mips/configs/pistachio_defconfig +++ b/arch/mips/configs/pistachio_defconfig @@ -37,6 +37,8 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODULE_FORCE_UNLOAD=y CONFIG_PARTITION_ADVANCED=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y CONFIG_PM_DEBUG=y CONFIG_PM_ADVANCED_DEBUG=y CONFIG_CPU_FREQ=y @@ -162,13 +164,14 @@ CONFIG_MTD_BLOCK=y CONFIG_MTD_M25P80=y CONFIG_MTD_SPI_NAND=y CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_WINBOND_OTP=y CONFIG_MTD_UBI=y CONFIG_MTD_UBI_BLOCK=y CONFIG_ZRAM=m CONFIG_BLK_DEV_LOOP=y CONFIG_SRAM=y +CONFIG_UBOOT_BOOTCOUNT=y CONFIG_ATU=y -CONFIG_SND_SOC_IMG_PISTACHIO_EVENT_TIMER_ATU=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_BLK_DEV_SR=m @@ -223,7 +226,7 @@ CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_8250_DW=y CONFIG_SERIAL_OF_PLATFORM=y -CONFIG_SERIAL_SC16IS7XX=m +CONFIG_SERIAL_SC16IS7XX=y # CONFIG_SERIAL_SC16IS7XX_I2C is not set CONFIG_SERIAL_SC16IS7XX_SPI=y CONFIG_HW_RANDOM=y @@ -334,7 +337,7 @@ CONFIG_ISO9660_FS=m CONFIG_JOLIET=y CONFIG_ZISOFS=y CONFIG_UDF_FS=m -CONFIG_VFAT_FS=m +CONFIG_VFAT_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_ECRYPT_FS=y @@ -349,9 +352,9 @@ CONFIG_PSTORE_RAM=y CONFIG_NFS_FS=y CONFIG_ROOT_NFS=y CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=m +CONFIG_NLS_ISO8859_1=y CONFIG_PRINTK_TIME=y CONFIG_DEBUG_INFO=y CONFIG_MAGIC_SYSRQ=y @@ -384,3 +387,4 @@ CONFIG_CRC_T10DIF=m CONFIG_CRC7=m CONFIG_LIBCRC32C=m # CONFIG_XZ_DEC_X86 is not set +CONFIG_MAC80211_RC_MINSTREL_VHT=y diff --git a/arch/mips/configs/pistachio_prodtest_defconfig b/arch/mips/configs/pistachio_prodtest_defconfig new file mode 100644 index 00000000000..74bea909d06 --- /dev/null +++ b/arch/mips/configs/pistachio_prodtest_defconfig @@ -0,0 +1,390 @@ +CONFIG_MACH_PISTACHIO=y +CONFIG_PISTACHIO_GPTIMER_CLKSRC=y +CONFIG_MIPS_MT_SMP=y +CONFIG_MIPS_CPS=y +# CONFIG_COMPACTION is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +CONFIG_CMA=y +CONFIG_ZSMALLOC=y +CONFIG_NR_CPUS=4 +CONFIG_PREEMPT_VOLUNTARY=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZO=y +CONFIG_DEFAULT_HOSTNAME="localhost" +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_IKCONFIG=m +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_NAMESPACES=y +CONFIG_USER_NS=y +CONFIG_BLK_DEV_INITRD=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_EMBEDDED=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_CC_STACKPROTECTOR_STRONG=y +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_DEBUG=y +CONFIG_PM_ADVANCED_DEBUG=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPUFREQ_DT=y +CONFIG_CPU_IDLE=y +# CONFIG_MIPS_CPS_CPUIDLE is not set +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_NET_KEY=m +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=m +CONFIG_INET_ESP=m +CONFIG_INET_IPCOMP=m +CONFIG_INET_XFRM_MODE_TRANSPORT=m +CONFIG_INET_XFRM_MODE_TUNNEL=m +CONFIG_INET_XFRM_MODE_BEET=m +# CONFIG_INET_DIAG is not set +CONFIG_TCP_CONG_ADVANCED=y +# CONFIG_TCP_CONG_BIC is not set +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_HTCP is not set +CONFIG_TCP_CONG_LP=m +CONFIG_TCP_MD5SIG=y +CONFIG_IPV6=y +CONFIG_INET6_AH=m +CONFIG_INET6_ESP=m +CONFIG_INET6_XFRM_MODE_TRANSPORT=m +CONFIG_INET6_XFRM_MODE_TUNNEL=m +CONFIG_INET6_XFRM_MODE_BEET=m +CONFIG_IPV6_SIT=m +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +# CONFIG_BRIDGE_NETFILTER is not set +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CT_NETLINK=y +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +CONFIG_NETFILTER_XT_TARGET_DSCP=y +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +CONFIG_NETFILTER_XT_TARGET_SECMARK=y +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_DSCP=y +CONFIG_NETFILTER_XT_MATCH_POLICY=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_NAT_IPV4=m +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_MANGLE=y +CONFIG_NF_CONNTRACK_IPV6=m +CONFIG_NF_NAT_IPV6=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_BRIDGE=m +CONFIG_VLAN_8021Q=m +CONFIG_6LOWPAN=y +CONFIG_IEEE802154=y +CONFIG_IEEE802154_6LOWPAN=y +CONFIG_MAC802154=y +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_CODEL=m +CONFIG_NET_SCH_FQ_CODEL=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_MARK=y +CONFIG_NET_PKTGEN=y +CONFIG_BT=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=y +CONFIG_BT_HCIBTUSB=y +CONFIG_BT_HCIBTSDIO=y +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIBFUSB=y +CONFIG_BT_HCIVHCI=y +CONFIG_BT_IMG=m +CONFIG_CFG80211=m +CONFIG_NL80211_TESTMODE=y +# CONFIG_CFG80211_DEFAULT_PS is not set +CONFIG_CFG80211_DEBUGFS=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=m +CONFIG_MAC80211_LEDS=y +CONFIG_MAC80211_DEBUGFS=y +CONFIG_MAC80211_DEBUG_MENU=y +CONFIG_MAC80211_VERBOSE_DEBUG=y +CONFIG_RFKILL=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_DEBUG_DEVRES=y +CONFIG_CONNECTOR=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NAND=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPI_NOR_WINBOND_OTP=y +CONFIG_MTD_UBI=y +CONFIG_MTD_UBI_BLOCK=y +CONFIG_ZRAM=m +CONFIG_BLK_DEV_LOOP=y +CONFIG_SRAM=y +CONFIG_UBOOT_BOOTCOUNT=y +CONFIG_ATU=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=m +CONFIG_SCSI_SPI_ATTRS=y +CONFIG_MD=y +CONFIG_BLK_DEV_DM=y +CONFIG_DM_CRYPT=y +CONFIG_DM_VERITY=y +CONFIG_NETDEVICES=y +CONFIG_TUN=m +CONFIG_VETH=m +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SMSC is not set +CONFIG_STMMAC_ETH=y +# CONFIG_NET_VENDOR_VIA is not set +CONFIG_PPP=m +CONFIG_PPP_ASYNC=m +CONFIG_USB_PEGASUS=m +CONFIG_USB_RTL8150=m +CONFIG_USB_RTL8152=m +CONFIG_USB_NET_DM9601=m +CONFIG_USB_NET_SMSC75XX=m +CONFIG_USB_NET_SMSC95XX=m +CONFIG_USB_NET_MCS7830=m +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_ZAURUS is not set +CONFIG_LIBERTAS_THINFIRM=m +CONFIG_USB_NET_RNDIS_WLAN=m +CONFIG_MAC80211_HWSIM=m +CONFIG_HOSTAP=m +CONFIG_HOSTAP_FIRMWARE=y +CONFIG_HOSTAP_FIRMWARE_NVRAM=y +CONFIG_RT2X00=m +CONFIG_RT2800USB=m +CONFIG_UCCP420WLAN=m +CONFIG_IEEE802154_CC2520=y +# CONFIG_INPUT_MOUSEDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_GPIO=y +# CONFIG_INPUT_MOUSE is not set +# CONFIG_SERIO is not set +# CONFIG_VT is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_DEVKMEM is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_CONSOLE is not set +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_SERIAL_SC16IS7XX=y +# CONFIG_SERIAL_SC16IS7XX_I2C is not set +CONFIG_SERIAL_SC16IS7XX_SPI=y +CONFIG_HW_RANDOM=y +CONFIG_TCG_TPM=y +CONFIG_TCG_TIS_I2C_INFINEON=y +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=m +CONFIG_I2C_IMG=y +CONFIG_I2C_STUB=m +CONFIG_SPI=y +CONFIG_SPI_BITBANG=m +CONFIG_SPI_IMG_SPFI=y +CONFIG_SPI_SPIDEV=y +CONFIG_DEBUG_GPIO=y +CONFIG_GPIO_SYSFS=y +CONFIG_POWER_SUPPLY=y +CONFIG_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_CORE=y +CONFIG_IMGPDC_WDT=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_REGULATOR_GPIO=y +CONFIG_MEDIA_SUPPORT=y +CONFIG_MEDIA_RC_SUPPORT=y +# CONFIG_RC_DECODERS is not set +CONFIG_RC_DEVICES=y +CONFIG_IR_IMG=y +CONFIG_IR_IMG_NEC=y +CONFIG_IR_IMG_JVC=y +CONFIG_IR_IMG_SONY=y +CONFIG_IR_IMG_SHARP=y +CONFIG_IR_IMG_SANYO=y +CONFIG_IR_IMG_RC5=y +CONFIG_IR_IMG_RC6=y +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set +CONFIG_FB=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_LCD_CLASS_DEVICE is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SEQUENCER=m +CONFIG_SND_SEQ_DUMMY=m +CONFIG_SND_HRTIMER=m +CONFIG_SND_DYNAMIC_MINORS=y +# CONFIG_SND_SPI is not set +CONFIG_SND_USB_AUDIO=m +CONFIG_SND_SOC=y +CONFIG_SND_SOC_IMG=y +CONFIG_SND_SOC_IMG_PISTACHIO_BUB=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_OTG=y +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_ACM=y +CONFIG_USB_STORAGE=y +CONFIG_USB_DWC2=y +CONFIG_USB_DWC2_PLATFORM=y +CONFIG_USB_SERIAL=y +CONFIG_USB_SERIAL_GENERIC=y +CONFIG_USB_SERIAL_CP210X=m +CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_KEYSPAN=m +CONFIG_USB_SERIAL_PL2303=m +CONFIG_USB_SERIAL_OTI6858=m +CONFIG_USB_SERIAL_QUALCOMM=m +CONFIG_USB_SERIAL_SIERRAWIRELESS=m +CONFIG_USB_SERIAL_OPTION=m +CONFIG_USB_GADGET=y +CONFIG_USB_MASS_STORAGE=m +CONFIG_USB_G_SERIAL=m +CONFIG_MMC=y +CONFIG_MMC_BLOCK_MINORS=16 +CONFIG_MMC_TEST=m +CONFIG_MMC_DW=y +CONFIG_MMC_DW_IDMAC=y +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y +CONFIG_LEDS_GPIO=m +CONFIG_LEDS_TRIGGER_HEARTBEAT=m +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PISTACHIO=y +CONFIG_DMADEVICES=y +CONFIG_IMG_MDC_DMA=y +CONFIG_STAGING=y +CONFIG_ASHMEM=y +# CONFIG_ANDROID_TIMED_OUTPUT is not set +# CONFIG_IOMMU_SUPPORT is not set +CONFIG_SOC_IMG=y +CONFIG_MEMORY=y +CONFIG_IIO=y +CONFIG_CC10001_ADC=y +CONFIG_PWM=y +CONFIG_PWM_IMG=y +CONFIG_PHY_PISTACHIO_USB=y +CONFIG_ANDROID=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +# CONFIG_DNOTIFY is not set +CONFIG_FUSE_FS=m +CONFIG_OVERLAY_FS=y +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_UDF_FS=m +CONFIG_VFAT_FS=m +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_ECRYPT_FS=y +CONFIG_HFSPLUS_FS=m +CONFIG_UBIFS_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_LZO=y +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +CONFIG_NFS_FS=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=m +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +CONFIG_PRINTK_TIME=y +CONFIG_DEBUG_INFO=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 +CONFIG_LOCKUP_DETECTOR=y +CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y +CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y +# CONFIG_SCHED_DEBUG is not set +CONFIG_SCHEDSTATS=y +CONFIG_TIMER_STATS=y +CONFIG_DEBUG_SPINLOCK=y +CONFIG_DEBUG_CREDENTIALS=y +CONFIG_FUNCTION_TRACER=y +CONFIG_BLK_DEV_IO_TRACE=y +CONFIG_LKDTM=y +CONFIG_TEST_UDELAY=m +CONFIG_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_NETWORK=y +CONFIG_SECURITY_YAMA=y +CONFIG_SECURITY_YAMA_STACKED=y +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DEV_IMGTEC_HASH=y +CONFIG_CRC_T10DIF=m +CONFIG_CRC7=m +CONFIG_LIBCRC32C=m +# CONFIG_XZ_DEC_X86 is not set +CONFIG_MAC80211_RC_MINSTREL_VHT=y diff --git a/arch/mips/include/asm/syscall.h b/arch/mips/include/asm/syscall.h index 6499d93ae68..47bc45a67e9 100644 --- a/arch/mips/include/asm/syscall.h +++ b/arch/mips/include/asm/syscall.h @@ -101,10 +101,8 @@ static inline void syscall_get_arguments(struct task_struct *task, /* O32 ABI syscall() - Either 64-bit with O32 or 32-bit */ if ((config_enabled(CONFIG_32BIT) || test_tsk_thread_flag(task, TIF_32BIT_REGS)) && - (regs->regs[2] == __NR_syscall)) { + (regs->regs[2] == __NR_syscall)) i++; - n++; - } while (n--) ret |= mips_get_syscall_arg(args++, task, regs, i++); diff --git a/arch/mips/kernel/scall32-o32.S b/arch/mips/kernel/scall32-o32.S index 4cc13508d96..aa2df3e8dba 100644 --- a/arch/mips/kernel/scall32-o32.S +++ b/arch/mips/kernel/scall32-o32.S @@ -36,16 +36,8 @@ NESTED(handle_sys, PT_SIZE, sp) lw t1, PT_EPC(sp) # skip syscall on return subu v0, v0, __NR_O32_Linux # check syscall number - sltiu t0, v0, __NR_O32_Linux_syscalls + 1 addiu t1, 4 # skip to next instruction sw t1, PT_EPC(sp) - beqz t0, illegal_syscall - - sll t0, v0, 2 - la t1, sys_call_table - addu t1, t0 - lw t2, (t1) # syscall routine - beqz t2, illegal_syscall sw a3, PT_R26(sp) # save a3 for syscall restarting @@ -96,6 +88,16 @@ loads_done: li t1, _TIF_WORK_SYSCALL_ENTRY and t0, t1 bnez t0, syscall_trace_entry # -> yes +syscall_common: + sltiu t0, v0, __NR_O32_Linux_syscalls + 1 + beqz t0, illegal_syscall + + sll t0, v0, 2 + la t1, sys_call_table + addu t1, t0 + lw t2, (t1) # syscall routine + + beqz t2, illegal_syscall jalr t2 # Do The Real Thing (TM) @@ -116,7 +118,7 @@ o32_syscall_exit: syscall_trace_entry: SAVE_STATIC - move s0, t2 + move s0, v0 move a0, sp /* @@ -129,27 +131,18 @@ syscall_trace_entry: 1: jal syscall_trace_enter - bltz v0, 2f # seccomp failed? Skip syscall + bltz v0, 1f # seccomp failed? Skip syscall + + move v0, s0 # restore syscall - move t0, s0 RESTORE_STATIC lw a0, PT_R4(sp) # Restore argument registers lw a1, PT_R5(sp) lw a2, PT_R6(sp) lw a3, PT_R7(sp) - jalr t0 - - li t0, -EMAXERRNO - 1 # error? - sltu t0, t0, v0 - sw t0, PT_R7(sp) # set error flag - beqz t0, 1f - - lw t1, PT_R2(sp) # syscall number - negu v0 # error - sw t1, PT_R0(sp) # save it for syscall restarting -1: sw v0, PT_R2(sp) # result + j syscall_common -2: j syscall_exit +1: j syscall_exit /* ------------------------------------------------------------------------ */ diff --git a/arch/mips/kernel/scall64-64.S b/arch/mips/kernel/scall64-64.S index ad4d44635c7..676fda7dc0a 100644 --- a/arch/mips/kernel/scall64-64.S +++ b/arch/mips/kernel/scall64-64.S @@ -39,18 +39,11 @@ NESTED(handle_sys64, PT_SIZE, sp) .set at #endif - dsubu t0, v0, __NR_64_Linux # check syscall number - sltiu t0, t0, __NR_64_Linux_syscalls + 1 #if !defined(CONFIG_MIPS32_O32) && !defined(CONFIG_MIPS32_N32) ld t1, PT_EPC(sp) # skip syscall on return daddiu t1, 4 # skip to next instruction sd t1, PT_EPC(sp) #endif - beqz t0, illegal_syscall - - dsll t0, v0, 3 # offset into table - ld t2, (sys_call_table - (__NR_64_Linux * 8))(t0) - # syscall routine sd a3, PT_R26(sp) # save a3 for syscall restarting @@ -59,6 +52,17 @@ NESTED(handle_sys64, PT_SIZE, sp) and t0, t1, t0 bnez t0, syscall_trace_entry +syscall_common: + dsubu t2, v0, __NR_64_Linux + sltiu t0, t2, __NR_64_Linux_syscalls + 1 + beqz t0, illegal_syscall + + dsll t0, t2, 3 # offset into table + dla t2, sys_call_table + daddu t0, t2, t0 + ld t2, (t0) # syscall routine + beqz t2, illegal_syscall + jalr t2 # Do The Real Thing (TM) li t0, -EMAXERRNO - 1 # error? @@ -78,14 +82,14 @@ n64_syscall_exit: syscall_trace_entry: SAVE_STATIC - move s0, t2 + move s0, v0 move a0, sp daddiu a1, v0, __NR_64_Linux jal syscall_trace_enter - bltz v0, 2f # seccomp failed? Skip syscall + bltz v0, 1f # seccomp failed? Skip syscall - move t0, s0 + move v0, s0 RESTORE_STATIC ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) @@ -93,19 +97,9 @@ syscall_trace_entry: ld a3, PT_R7(sp) ld a4, PT_R8(sp) ld a5, PT_R9(sp) - jalr t0 - - li t0, -EMAXERRNO - 1 # error? - sltu t0, t0, v0 - sd t0, PT_R7(sp) # set error flag - beqz t0, 1f - - ld t1, PT_R2(sp) # syscall number - dnegu v0 # error - sd t1, PT_R0(sp) # save it for syscall restarting -1: sd v0, PT_R2(sp) # result + j syscall_common -2: j syscall_exit +1: j syscall_exit illegal_syscall: /* This also isn't a 64-bit syscall, throw an error. */ diff --git a/arch/mips/kernel/scall64-n32.S b/arch/mips/kernel/scall64-n32.S index 446cc654da5..611ba3bdbb8 100644 --- a/arch/mips/kernel/scall64-n32.S +++ b/arch/mips/kernel/scall64-n32.S @@ -52,6 +52,7 @@ NESTED(handle_sysn32, PT_SIZE, sp) and t0, t1, t0 bnez t0, n32_syscall_trace_entry +syscall_common: jalr t2 # Do The Real Thing (TM) li t0, -EMAXERRNO - 1 # error? @@ -75,9 +76,9 @@ n32_syscall_trace_entry: daddiu a1, v0, __NR_N32_Linux jal syscall_trace_enter - bltz v0, 2f # seccomp failed? Skip syscall + bltz v0, 1f # seccomp failed? Skip syscall - move t0, s0 + move t2, s0 RESTORE_STATIC ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) @@ -85,19 +86,9 @@ n32_syscall_trace_entry: ld a3, PT_R7(sp) ld a4, PT_R8(sp) ld a5, PT_R9(sp) - jalr t0 + j syscall_common - li t0, -EMAXERRNO - 1 # error? - sltu t0, t0, v0 - sd t0, PT_R7(sp) # set error flag - beqz t0, 1f - - ld t1, PT_R2(sp) # syscall number - dnegu v0 # error - sd t1, PT_R0(sp) # save it for syscall restarting -1: sd v0, PT_R2(sp) # result - -2: j syscall_exit +1: j syscall_exit not_n32_scall: /* This is not an n32 compatibility syscall, pass it on to diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S index 66d618bb2fa..64397d266b7 100644 --- a/arch/mips/kernel/scall64-o32.S +++ b/arch/mips/kernel/scall64-o32.S @@ -87,6 +87,7 @@ loads_done: and t0, t1, t0 bnez t0, trace_a_syscall +syscall_common: jalr t2 # Do The Real Thing (TM) li t0, -EMAXERRNO - 1 # error? @@ -130,9 +131,9 @@ trace_a_syscall: 1: jal syscall_trace_enter - bltz v0, 2f # seccomp failed? Skip syscall + bltz v0, 1f # seccomp failed? Skip syscall - move t0, s0 + move t2, s0 RESTORE_STATIC ld a0, PT_R4(sp) # Restore argument registers ld a1, PT_R5(sp) @@ -142,19 +143,9 @@ trace_a_syscall: ld a5, PT_R9(sp) ld a6, PT_R10(sp) ld a7, PT_R11(sp) # For indirect syscalls - jalr t0 + j syscall_common - li t0, -EMAXERRNO - 1 # error? - sltu t0, t0, v0 - sd t0, PT_R7(sp) # set error flag - beqz t0, 1f - - ld t1, PT_R2(sp) # syscall number - dnegu v0 # error - sd t1, PT_R0(sp) # save it for syscall restarting -1: sd v0, PT_R2(sp) # result - -2: j syscall_exit +1: j syscall_exit /* ------------------------------------------------------------------------ */ diff --git a/arch/mips/pistachio/init.c b/arch/mips/pistachio/init.c index 890ac8ad903..1f90fd9097b 100644 --- a/arch/mips/pistachio/init.c +++ b/arch/mips/pistachio/init.c @@ -2,6 +2,7 @@ * Pistachio platform setup * * Copyright (C) 2014 Google, Inc. + * Copyright (C) 2016 Imagination Technologies * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -9,6 +10,7 @@ */ #include <linux/init.h> +#include <linux/io.h> #include <linux/kernel.h> #include <linux/of_address.h> #include <linux/of_fdt.h> @@ -26,9 +28,28 @@ #include <asm/traps.h> #include <asm/reboot.h> +/* + * Core revision register decoding + * Bits 23 to 20: Major rev + * Bits 15 to 8: Minor rev + * Bits 7 to 0: Maintenance rev + */ +#define PISTACHIO_CORE_REV_REG 0xB81483D0 +#define PISTACHIO_CORE_REV_A1 0x00100006 +#define PISTACHIO_CORE_REV_B0 0x00100106 + const char *get_system_type(void) { - return "IMG Pistachio SoC"; + u32 core_rev; + + core_rev = __raw_readl((const void *)PISTACHIO_CORE_REV_REG); + + if (core_rev == PISTACHIO_CORE_REV_B0) + return "IMG Pistachio SoC (B0)"; + else if (core_rev == PISTACHIO_CORE_REV_A1) + return "IMG_Pistachio SoC (A1)"; + else + return "IMG_Pistachio SoC"; } static void __init plat_setup_iocoherency(void) @@ -130,6 +151,8 @@ void __init prom_init(void) mips_cm_probe(); mips_cpc_probe(); register_cps_smp_ops(); + + pr_info("SoC Type: %s\n", get_system_type()); } void __init prom_free_prom_memory(void) |