Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'mips_6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS updates from Thomas Bogendoerfer:

- DT updates for ralink, mobileye and atheros/qualcomm

- Clean up of mc146818 usage

- Speed up delay calibration for CPS

- Other cleanups and fixes

* tag 'mips_6.17' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (50 commits)
MIPS: Don't use %pK through printk
MIPS: Update Joshua Kinard's e-mail address
MIPS: mobileye: dts: eyeq5,eyeq6h: rename the emmc controller
MIPS: mm: tlb-r4k: Uniquify TLB entries on init
MIPS: SGI-IP27: Delete an unnecessary check before kfree() in hub_domain_free()
mips/malta,loongson2ef: use generic mc146818_get_time function
mips: remove redundant macro mc146818_decode_year
mips/mach-rm: remove custom mc146818rtc.h file
mips: remove unused function mc146818_set_rtc_mmss
MIPS: CPS: Optimise delay CPU calibration for SMP
MIPS: CPS: Improve mips_cps_first_online_in_cluster()
MIPS: disable MMID when not supported by the hardware
MIPS: eyeq5_defconfig: add I2C subsystem, driver and temp sensor driver
MIPS: eyeq5_defconfig: add GPIO subsystem & driver
MIPS: mobileye: eyeq5: add two GPIO bank nodes
MIPS: mobileye: eyeq5: add evaluation board I2C temp sensor
MIPS: mobileye: eyeq5: add 5 I2C controller nodes
MIPS: eyeq5_defconfig: Update for v6.16-rc1
MIPS: vpe-mt: add missing prototypes for vpe_{alloc,start,stop,free}
mips: boot: use 'targets' instead of extra-y in Makefile
...

+569 -247
+16 -12
Documentation/devicetree/bindings/clock/mediatek,mtmips-sysc.yaml
··· 26 26 27 27 properties: 28 28 compatible: 29 - items: 30 - - enum: 31 - - ralink,mt7620-sysc 32 - - ralink,mt7628-sysc 33 - - ralink,mt7688-sysc 34 - - ralink,rt2880-sysc 35 - - ralink,rt3050-sysc 36 - - ralink,rt3052-sysc 37 - - ralink,rt3352-sysc 38 - - ralink,rt3883-sysc 39 - - ralink,rt5350-sysc 40 - - const: syscon 29 + oneOf: 30 + - items: 31 + - enum: 32 + - ralink,mt7620-sysc 33 + - ralink,mt7688-sysc 34 + - ralink,rt2880-sysc 35 + - ralink,rt3050-sysc 36 + - ralink,rt3052-sysc 37 + - ralink,rt3352-sysc 38 + - ralink,rt3883-sysc 39 + - ralink,rt5350-sysc 40 + - const: syscon 41 + - items: 42 + - const: ralink,mt7628-sysc 43 + - const: ralink,mt7688-sysc 44 + - const: syscon 41 45 42 46 reg: 43 47 maxItems: 1
+2
arch/mips/Kconfig
··· 562 562 select MIPS_L1_CACHE_SHIFT_6 563 563 select MIPS_MSC 564 564 select PCI_GT64XXX_PCI0 565 + select RTC_MC146818_LIB 565 566 select SMP_UP if SMP 566 567 select SWAP_IO_SPACE 567 568 select SYS_HAS_CPU_MIPS32_R1 ··· 1837 1836 select CPU_SUPPORTS_64BIT_KERNEL 1838 1837 select CPU_SUPPORTS_HIGHMEM 1839 1838 select CPU_SUPPORTS_HUGEPAGES 1839 + select RTC_MC146818_LIB 1840 1840 1841 1841 config CPU_LOONGSON32 1842 1842 bool
+4 -4
arch/mips/boot/Makefile
··· 54 54 # Compressed vmlinux images 55 55 # 56 56 57 - extra-y += vmlinux.bin.bz2 58 - extra-y += vmlinux.bin.gz 59 - extra-y += vmlinux.bin.lzma 60 - extra-y += vmlinux.bin.lzo 57 + targets += vmlinux.bin.bz2 58 + targets += vmlinux.bin.gz 59 + targets += vmlinux.bin.lzma 60 + targets += vmlinux.bin.lzo 61 61 62 62 $(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE 63 63 $(call if_changed,bzip2)
+8
arch/mips/boot/dts/mobileye/eyeq5-epm5.dts
··· 21 21 <0x8 0x02000000 0x0 0x7E000000>; 22 22 }; 23 23 }; 24 + 25 + &i2c2 { 26 + temperature-sensor@48 { 27 + compatible = "ti,tmp112"; 28 + reg = <0x48>; 29 + label = "U60"; 30 + }; 31 + };
+127
arch/mips/boot/dts/mobileye/eyeq5.dtsi
··· 110 110 ranges; 111 111 compatible = "simple-bus"; 112 112 113 + i2c0: i2c@300000 { 114 + compatible = "mobileye,eyeq5-i2c", "arm,primecell"; 115 + reg = <0 0x300000 0x0 0x1000>; 116 + interrupt-parent = <&gic>; 117 + interrupts = <GIC_SHARED 1 IRQ_TYPE_LEVEL_HIGH>; 118 + clock-frequency = <400000>; /* Fast mode */ 119 + #address-cells = <1>; 120 + #size-cells = <0>; 121 + clocks = <&olb 35>, <&olb EQ5C_PER_I2C>; 122 + clock-names = "i2cclk", "apb_pclk"; 123 + resets = <&olb 0 13>; 124 + i2c-transfer-timeout-us = <10000>; 125 + mobileye,olb = <&olb 0>; 126 + }; 127 + 128 + i2c1: i2c@400000 { 129 + compatible = "mobileye,eyeq5-i2c", "arm,primecell"; 130 + reg = <0 0x400000 0x0 0x1000>; 131 + interrupt-parent = <&gic>; 132 + interrupts = <GIC_SHARED 2 IRQ_TYPE_LEVEL_HIGH>; 133 + clock-frequency = <400000>; /* Fast mode */ 134 + #address-cells = <1>; 135 + #size-cells = <0>; 136 + clocks = <&olb 35>, <&olb EQ5C_PER_I2C>; 137 + clock-names = "i2cclk", "apb_pclk"; 138 + resets = <&olb 0 14>; 139 + i2c-transfer-timeout-us = <10000>; 140 + mobileye,olb = <&olb 1>; 141 + }; 142 + 143 + i2c2: i2c@500000 { 144 + compatible = "mobileye,eyeq5-i2c", "arm,primecell"; 145 + reg = <0 0x500000 0x0 0x1000>; 146 + interrupt-parent = <&gic>; 147 + interrupts = <GIC_SHARED 3 IRQ_TYPE_LEVEL_HIGH>; 148 + clock-frequency = <400000>; /* Fast mode */ 149 + #address-cells = <1>; 150 + #size-cells = <0>; 151 + clocks = <&olb 35>, <&olb EQ5C_PER_I2C>; 152 + clock-names = "i2cclk", "apb_pclk"; 153 + resets = <&olb 0 15>; 154 + i2c-transfer-timeout-us = <10000>; 155 + mobileye,olb = <&olb 2>; 156 + }; 157 + 158 + i2c3: i2c@600000 { 159 + compatible = "mobileye,eyeq5-i2c", "arm,primecell"; 160 + reg = <0 0x600000 0x0 0x1000>; 161 + interrupt-parent = <&gic>; 162 + interrupts = <GIC_SHARED 4 IRQ_TYPE_LEVEL_HIGH>; 163 + clock-frequency = <400000>; /* Fast mode */ 164 + #address-cells = <1>; 165 + #size-cells = <0>; 166 + clocks = <&olb 35>, <&olb EQ5C_PER_I2C>; 167 + clock-names = "i2cclk", "apb_pclk"; 168 + resets = <&olb 0 16>; 169 + i2c-transfer-timeout-us = <10000>; 170 + mobileye,olb = <&olb 3>; 171 + }; 172 + 173 + i2c4: i2c@700000 { 174 + compatible = "mobileye,eyeq5-i2c", "arm,primecell"; 175 + reg = <0 0x700000 0x0 0x1000>; 176 + interrupt-parent = <&gic>; 177 + interrupts = <GIC_SHARED 5 IRQ_TYPE_LEVEL_HIGH>; 178 + clock-frequency = <400000>; /* Fast mode */ 179 + #address-cells = <1>; 180 + #size-cells = <0>; 181 + clocks = <&olb 35>, <&olb EQ5C_PER_I2C>; 182 + clock-names = "i2cclk", "apb_pclk"; 183 + resets = <&olb 0 17>; 184 + i2c-transfer-timeout-us = <10000>; 185 + mobileye,olb = <&olb 4>; 186 + }; 187 + 113 188 uart0: serial@800000 { 114 189 compatible = "arm,pl011", "arm,primecell"; 115 190 reg = <0 0x800000 0x0 0x1000>; ··· 252 177 interrupts = <GIC_LOCAL 1 IRQ_TYPE_NONE>; 253 178 clocks = <&olb EQ5C_CPU_CORE0>; 254 179 }; 180 + }; 181 + 182 + emmc: mmc@2200000 { 183 + compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc"; 184 + reg = <0 0x2200000 0x0 0x1000>; 185 + interrupt-parent = <&gic>; 186 + interrupts = <GIC_SHARED 10 IRQ_TYPE_LEVEL_HIGH>; 187 + clocks = <&olb EQ5C_PER_EMMC>; 188 + bus-width = <8>; 189 + max-frequency = <200000000>; 190 + mmc-ddr-1_8v; 191 + sd-uhs-ddr50; 192 + mmc-hs200-1_8v; 193 + mmc-hs400-1_8v; 194 + mmc-hs400-enhanced-strobe; 195 + 196 + cdns,phy-input-delay-legacy = <4>; 197 + cdns,phy-input-delay-mmc-highspeed = <2>; 198 + cdns,phy-input-delay-mmc-ddr = <3>; 199 + cdns,phy-dll-delay-sdclk = <32>; 200 + cdns,phy-dll-delay-sdclk-hsmmc = <32>; 201 + cdns,phy-dll-delay-strobe = <32>; 202 + }; 203 + 204 + gpio0: gpio@1400000 { 205 + compatible = "mobileye,eyeq5-gpio"; 206 + reg = <0x0 0x1400000 0x0 0x1000>; 207 + gpio-bank = <0>; 208 + ngpios = <29>; 209 + interrupt-parent = <&gic>; 210 + interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>; 211 + gpio-controller; 212 + #gpio-cells = <2>; 213 + gpio-ranges = <&olb 0 0 29>; 214 + interrupt-controller; 215 + #interrupt-cells = <2>; 216 + resets = <&olb 0 26>; 217 + }; 218 + 219 + gpio1: gpio@1500000 { 220 + compatible = "mobileye,eyeq5-gpio"; 221 + reg = <0x0 0x1500000 0x0 0x1000>; 222 + gpio-bank = <1>; 223 + ngpios = <23>; 224 + interrupt-parent = <&gic>; 225 + interrupts = <GIC_SHARED 14 IRQ_TYPE_LEVEL_HIGH>; 226 + gpio-controller; 227 + #gpio-cells = <2>; 228 + gpio-ranges = <&olb 0 29 23>; 229 + interrupt-controller; 230 + #interrupt-cells = <2>; 231 + resets = <&olb 0 26>; 255 232 }; 256 233 }; 257 234 };
+22
arch/mips/boot/dts/mobileye/eyeq6h.dtsi
··· 109 109 clock-names = "ref"; 110 110 }; 111 111 112 + emmc: mmc@d8010000 { 113 + compatible = "mobileye,eyeq-sd4hc", "cdns,sd4hc"; 114 + reg = <0 0xd8010000 0x0 0x1000>; 115 + interrupt-parent = <&gic>; 116 + interrupts = <GIC_SHARED 91 IRQ_TYPE_LEVEL_HIGH>; 117 + clocks = <&olb_south EQ6HC_SOUTH_DIV_EMMC>; 118 + bus-width = <8>; 119 + max-frequency = <200000000>; 120 + mmc-ddr-1_8v; 121 + sd-uhs-ddr50; 122 + mmc-hs200-1_8v; 123 + mmc-hs400-1_8v; 124 + mmc-hs400-enhanced-strobe; 125 + 126 + cdns,phy-input-delay-legacy = <4>; 127 + cdns,phy-input-delay-mmc-highspeed = <2>; 128 + cdns,phy-input-delay-mmc-ddr = <3>; 129 + cdns,phy-dll-delay-sdclk = <32>; 130 + cdns,phy-dll-delay-sdclk-hsmmc = <32>; 131 + cdns,phy-dll-delay-strobe = <32>; 132 + }; 133 + 112 134 olb_south: system-controller@d8013000 { 113 135 compatible = "mobileye,eyeq6h-south-olb", "syscon"; 114 136 reg = <0x0 0xd8013000 0x0 0x1000>;
+9
arch/mips/boot/dts/qca/ar9132.dtsi
··· 156 156 #address-cells = <1>; 157 157 #size-cells = <0>; 158 158 }; 159 + 160 + wifi: wifi@180c0000 { 161 + compatible = "qca,ar9130-wifi"; 162 + reg = <0x180c0000 0x230000>; 163 + 164 + interrupts = <2>; 165 + 166 + status = "disabled"; 167 + }; 159 168 }; 160 169 161 170 usb_phy: usb-phy {
+4
arch/mips/boot/dts/qca/ar9132_tl_wr1043nd_v1.dts
··· 108 108 }; 109 109 }; 110 110 }; 111 + 112 + &wifi { 113 + status = "okay"; 114 + };
+9
arch/mips/boot/dts/qca/ar9331.dtsi
··· 285 285 286 286 status = "disabled"; 287 287 }; 288 + 289 + wifi: wifi@18100000 { 290 + compatible = "qca,ar9330-wifi"; 291 + reg = <0x18100000 0x20000>; 292 + 293 + interrupts = <2>; 294 + 295 + status = "disabled"; 296 + }; 288 297 }; 289 298 290 299 usb_phy: usb-phy {
+4
arch/mips/boot/dts/qca/ar9331_dpt_module.dts
··· 97 97 &phy_port4 { 98 98 status = "okay"; 99 99 }; 100 + 101 + &wifi { 102 + status = "okay"; 103 + };
+4
arch/mips/boot/dts/qca/ar9331_dragino_ms14.dts
··· 98 98 reg = <0>; 99 99 }; 100 100 }; 101 + 102 + &wifi { 103 + status = "okay"; 104 + };
+4
arch/mips/boot/dts/qca/ar9331_omega.dts
··· 74 74 reg = <0>; 75 75 }; 76 76 }; 77 + 78 + &wifi { 79 + status = "okay"; 80 + };
+4
arch/mips/boot/dts/qca/ar9331_openembed_som9331_board.dts
··· 106 106 &phy_port4 { 107 107 status = "okay"; 108 108 }; 109 + 110 + &wifi { 111 + status = "okay"; 112 + };
+4
arch/mips/boot/dts/qca/ar9331_tl_mr3020.dts
··· 114 114 reg = <0>; 115 115 }; 116 116 }; 117 + 118 + &wifi { 119 + status = "okay"; 120 + };
+1 -1
arch/mips/boot/dts/ralink/gardena_smart_gateway_mt7688.dts
··· 56 56 led-power-green { 57 57 label = "smartgw:power:green"; 58 58 gpios = <&gpio 19 GPIO_ACTIVE_HIGH>; 59 - default-state = "off"; 59 + linux,default-trigger = "timer"; 60 60 }; 61 61 62 62 led-power-red {
+3 -8
arch/mips/boot/dts/ralink/mt7628a.dtsi
··· 33 33 #size-cells = <1>; 34 34 35 35 sysc: syscon@0 { 36 - compatible = "ralink,mt7628-sysc", "syscon"; 36 + compatible = "ralink,mt7628-sysc", "ralink,mt7688-sysc", "syscon"; 37 37 reg = <0x0 0x60>; 38 38 #clock-cells = <1>; 39 39 #reset-cells = <1>; ··· 134 134 135 135 watchdog: watchdog@100 { 136 136 compatible = "mediatek,mt7621-wdt"; 137 - reg = <0x100 0x30>; 138 - 139 - resets = <&sysc 8>; 140 - reset-names = "wdt"; 141 - 142 - interrupt-parent = <&intc>; 143 - interrupts = <24>; 137 + reg = <0x100 0x100>; 138 + mediatek,sysctl = <&sysc>; 144 139 145 140 status = "disabled"; 146 141 };
+96
arch/mips/boot/dts/realtek/cameo-rtl9302c-2x-rtl8224-2xge.dts
··· 71 71 }; 72 72 }; 73 73 }; 74 + 75 + &mdio0 { 76 + /* External RTL8224 */ 77 + phy0: ethernet-phy@0 { 78 + reg = <0>; 79 + compatible = "ethernet-phy-ieee802.3-c45"; 80 + }; 81 + phy1: ethernet-phy@1 { 82 + reg = <1>; 83 + compatible = "ethernet-phy-ieee802.3-c45"; 84 + }; 85 + phy2: ethernet-phy@2 { 86 + reg = <2>; 87 + compatible = "ethernet-phy-ieee802.3-c45"; 88 + }; 89 + phy3: ethernet-phy@3 { 90 + reg = <3>; 91 + compatible = "ethernet-phy-ieee802.3-c45"; 92 + }; 93 + }; 94 + 95 + &mdio1 { 96 + /* External RTL8224 */ 97 + phy4: ethernet-phy@0 { 98 + reg = <0>; 99 + compatible = "ethernet-phy-ieee802.3-c45"; 100 + }; 101 + phy5: ethernet-phy@1 { 102 + reg = <1>; 103 + compatible = "ethernet-phy-ieee802.3-c45"; 104 + }; 105 + phy6: ethernet-phy@2 { 106 + reg = <2>; 107 + compatible = "ethernet-phy-ieee802.3-c45"; 108 + }; 109 + phy7: ethernet-phy@3 { 110 + reg = <3>; 111 + compatible = "ethernet-phy-ieee802.3-c45"; 112 + }; 113 + }; 114 + 115 + &switch0 { 116 + ethernet-ports { 117 + #address-cells = <1>; 118 + #size-cells = <0>; 119 + 120 + port@0 { 121 + reg = <0>; 122 + phy-handle = <&phy0>; 123 + phy-mode = "usxgmii"; 124 + }; 125 + port@1 { 126 + reg = <1>; 127 + phy-handle = <&phy1>; 128 + phy-mode = "usxgmii"; 129 + }; 130 + port@2 { 131 + reg = <2>; 132 + phy-handle = <&phy2>; 133 + phy-mode = "usxgmii"; 134 + }; 135 + port@3 { 136 + reg = <3>; 137 + phy-handle = <&phy3>; 138 + phy-mode = "usxgmii"; 139 + }; 140 + port@16 { 141 + reg = <16>; 142 + phy-handle = <&phy4>; 143 + phy-mode = "usxgmii"; 144 + }; 145 + port@17 { 146 + reg = <17>; 147 + phy-handle = <&phy5>; 148 + phy-mode = "usxgmii"; 149 + }; 150 + port@18 { 151 + reg = <18>; 152 + phy-handle = <&phy6>; 153 + phy-mode = "usxgmii"; 154 + }; 155 + port@19 { 156 + reg = <19>; 157 + phy-handle = <&phy7>; 158 + phy-mode = "usxgmii"; 159 + }; 160 + port@24{ 161 + reg = <24>; 162 + phy-mode = "10gbase-r"; 163 + }; 164 + port@25{ 165 + reg = <25>; 166 + phy-mode = "10gbase-r"; 167 + }; 168 + }; 169 + };
+31
arch/mips/boot/dts/realtek/rtl930x.dtsi
··· 48 48 #address-cells = <1>; 49 49 #size-cells = <1>; 50 50 51 + interrupt-parent = <&intc>; 52 + interrupts = <23>, <24>; 53 + interrupt-names = "switch", "nic"; 54 + 51 55 reboot@c { 52 56 compatible = "syscon-reboot"; 53 57 reg = <0x0c 0x4>; ··· 140 136 interrupt-parent = <&intc>; 141 137 interrupts = <7>, <8>, <9>, <10>, <11>; 142 138 clocks = <&lx_clk>; 139 + }; 140 + 141 + watchdog0: watchdog@3260 { 142 + compatible = "realtek,rtl9300-wdt"; 143 + reg = <0x3260 0xc>; 144 + 145 + realtek,reset-mode = "soc"; 146 + 147 + clocks = <&lx_clk>; 148 + timeout-sec = <30>; 149 + 150 + interrupt-parent = <&intc>; 151 + interrupt-names = "phase1", "phase2"; 152 + interrupts = <5>, <6>; 153 + }; 154 + 155 + gpio0: gpio@3300 { 156 + compatible = "realtek,rtl9300-gpio", "realtek,otto-gpio"; 157 + reg = <0x3300 0x1c>, <0x3338 0x8>; 158 + gpio-controller; 159 + #gpio-cells = <2>; 160 + ngpios = <24>; 161 + 162 + interrupt-controller; 163 + #interrupt-cells = <2>; 164 + interrupt-parent = <&intc>; 165 + interrupts = <13>; 143 166 }; 144 167 145 168 snand: spi@1a400 {
+9 -3
arch/mips/configs/eyeq5_defconfig
··· 19 19 CONFIG_BLK_DEV_INITRD=y 20 20 CONFIG_EXPERT=y 21 21 CONFIG_EYEQ=y 22 - CONFIG_MACH_EYEQ5=y 23 22 CONFIG_FIT_IMAGE_FDT_EPM5=y 24 - CONFIG_PAGE_SIZE_16KB=y 25 23 CONFIG_MIPS_CPS=y 26 24 CONFIG_CPU_HAS_MSA=y 27 25 CONFIG_NR_CPUS=16 28 26 CONFIG_MIPS_RAW_APPENDED_DTB=y 29 27 CONFIG_JUMP_LABEL=y 28 + CONFIG_PAGE_SIZE_16KB=y 30 29 CONFIG_COMPAT_32BIT_TIME=y 31 30 CONFIG_MODULES=y 32 31 CONFIG_MODULE_UNLOAD=y 33 32 CONFIG_TRIM_UNUSED_KSYMS=y 34 33 # CONFIG_COMPAT_BRK is not set 35 - CONFIG_SPARSEMEM_MANUAL=y 36 34 CONFIG_USERFAULTFD=y 37 35 CONFIG_NET=y 38 36 CONFIG_PACKET=y ··· 62 64 CONFIG_SERIAL_AMBA_PL011=y 63 65 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y 64 66 CONFIG_HW_RANDOM=y 67 + CONFIG_I2C=y 68 + CONFIG_I2C_CHARDEV=y 69 + CONFIG_I2C_NOMADIK=y 65 70 # CONFIG_PTP_1588_CLOCK is not set 66 71 CONFIG_PINCTRL=y 72 + CONFIG_GPIOLIB=y 73 + CONFIG_GPIO_NOMADIK=y 74 + CONFIG_SENSORS_LM75=y 67 75 CONFIG_MFD_SYSCON=y 68 76 CONFIG_HID_A4TECH=y 69 77 CONFIG_HID_BELKIN=y ··· 83 79 CONFIG_HID_MONTEREY=y 84 80 CONFIG_MMC=y 85 81 CONFIG_MMC_SDHCI=y 82 + CONFIG_MMC_SDHCI_PLTFM=y 83 + CONFIG_MMC_SDHCI_CADENCE=y 86 84 # CONFIG_IOMMU_SUPPORT is not set 87 85 CONFIG_RESET_CONTROLLER=y 88 86 # CONFIG_NVMEM is not set
+2
arch/mips/configs/eyeq6_defconfig
··· 82 82 CONFIG_HID_MONTEREY=y 83 83 CONFIG_MMC=y 84 84 CONFIG_MMC_SDHCI=y 85 + CONFIG_MMC_SDHCI_PLTFM=y 86 + CONFIG_MMC_SDHCI_CADENCE=y 85 87 # CONFIG_IOMMU_SUPPORT is not set 86 88 CONFIG_RESET_CONTROLLER=y 87 89 # CONFIG_NVMEM is not set
+1
arch/mips/include/asm/cpu-info.h
··· 123 123 124 124 extern void cpu_probe(void); 125 125 extern void cpu_report(void); 126 + extern void cpu_disable_mmid(void); 126 127 127 128 extern const char *__cpu_name[]; 128 129 #define cpu_name_string() __cpu_name[raw_smp_processor_id()]
-4
arch/mips/include/asm/mach-generic/mc146818rtc.h
··· 29 29 30 30 #define RTC_ALWAYS_BCD 0 31 31 32 - #ifndef mc146818_decode_year 33 - #define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1900) 34 - #endif 35 - 36 32 #endif /* __ASM_MACH_GENERIC_MC146818RTC_H */
+1 -1
arch/mips/include/asm/mach-ip30/cpu-feature-overrides.h
··· 5 5 * Copyright (C) 2003 Ralf Baechle <ralf@linux-mips.org> 6 6 * 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 7 7 * 2009 Johannes Dickgreber <tanzy@gmx.de> 8 - * 2015 Joshua Kinard <kumba@gentoo.org> 8 + * 2015 Joshua Kinard <linux@kumba.dev> 9 9 * 10 10 */ 11 11 #ifndef __ASM_MACH_IP30_CPU_FEATURE_OVERRIDES_H
+1 -1
arch/mips/include/asm/mach-ip30/spaces.h
··· 1 1 /* SPDX-License-Identifier: GPL-2.0 */ 2 2 /* 3 - * Copyright (C) 2016 Joshua Kinard <kumba@gentoo.org> 3 + * Copyright (C) 2016 Joshua Kinard <linux@kumba.dev> 4 4 * 5 5 */ 6 6 #ifndef _ASM_MACH_IP30_SPACES_H
-2
arch/mips/include/asm/mach-jazz/mc146818rtc.h
··· 33 33 34 34 #define RTC_ALWAYS_BCD 0 35 35 36 - #define mc146818_decode_year(year) ((year) + 1980) 37 - 38 36 #endif /* __ASM_MACH_JAZZ_MC146818RTC_H */
+3
arch/mips/include/asm/mach-lantiq/xway/lantiq_soc.h
··· 99 99 extern void ltq_pmu_enable(unsigned int module); 100 100 extern void ltq_pmu_disable(unsigned int module); 101 101 102 + /* VMMC */ 103 + extern unsigned int *ltq_get_cp1_base(void); 104 + 102 105 #endif /* CONFIG_SOC_TYPE_XWAY */ 103 106 #endif /* _LTQ_XWAY_H__ */
-2
arch/mips/include/asm/mach-malta/mc146818rtc.h
··· 31 31 32 32 #define RTC_ALWAYS_BCD 0 33 33 34 - #define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1900) 35 - 36 34 #endif /* __ASM_MACH_MALTA_MC146818RTC_H */
-21
arch/mips/include/asm/mach-rm/mc146818rtc.h
··· 1 - /* 2 - * This file is subject to the terms and conditions of the GNU General Public 3 - * License. See the file "COPYING" in the main directory of this archive 4 - * for more details. 5 - * 6 - * Copyright (C) 2004 by Ralf Baechle 7 - * 8 - * RTC routines for PC style attached Dallas chip with ARC epoch. 9 - */ 10 - #ifndef __ASM_MACH_RM_MC146818RTC_H 11 - #define __ASM_MACH_RM_MC146818RTC_H 12 - 13 - #ifdef CONFIG_CPU_BIG_ENDIAN 14 - #define mc146818_decode_year(year) ((year) < 70 ? (year) + 2000 : (year) + 1900) 15 - #else 16 - #define mc146818_decode_year(year) ((year) + 1980) 17 - #endif 18 - 19 - #include <asm/mach-generic/mc146818rtc.h> 20 - 21 - #endif /* __ASM_MACH_RM_MC146818RTC_H */
+7 -98
arch/mips/include/asm/mc146818-time.h
··· 8 8 #ifndef __ASM_MC146818_TIME_H 9 9 #define __ASM_MC146818_TIME_H 10 10 11 - #include <linux/bcd.h> 12 11 #include <linux/mc146818rtc.h> 13 12 #include <linux/time.h> 14 13 15 - /* 16 - * For check timing call set_rtc_mmss() 500ms; used in timer interrupt. 17 - */ 18 - #define USEC_AFTER 500000 19 - #define USEC_BEFORE 500000 20 - 21 - /* 22 - * In order to set the CMOS clock precisely, set_rtc_mmss has to be 23 - * called 500 ms after the second nowtime has started, because when 24 - * nowtime is written into the registers of the CMOS clock, it will 25 - * jump to the next second precisely 500 ms later. Check the Motorola 26 - * MC146818A or Dallas DS12887 data sheet for details. 27 - * 28 - * BUG: This routine does not handle hour overflow properly; it just 29 - * sets the minutes. Usually you'll only notice that after reboot! 30 - */ 31 - static inline int mc146818_set_rtc_mmss(unsigned long nowtime) 32 - { 33 - int real_seconds, real_minutes, cmos_minutes; 34 - unsigned char save_control, save_freq_select; 35 - int retval = 0; 36 - unsigned long flags; 37 - 38 - spin_lock_irqsave(&rtc_lock, flags); 39 - save_control = CMOS_READ(RTC_CONTROL); /* tell the clock it's being set */ 40 - CMOS_WRITE((save_control|RTC_SET), RTC_CONTROL); 41 - 42 - save_freq_select = CMOS_READ(RTC_FREQ_SELECT); /* stop and reset prescaler */ 43 - CMOS_WRITE((save_freq_select|RTC_DIV_RESET2), RTC_FREQ_SELECT); 44 - 45 - cmos_minutes = CMOS_READ(RTC_MINUTES); 46 - if (!(save_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) 47 - cmos_minutes = bcd2bin(cmos_minutes); 48 - 49 - /* 50 - * since we're only adjusting minutes and seconds, 51 - * don't interfere with hour overflow. This avoids 52 - * messing with unknown time zones but requires your 53 - * RTC not to be off by more than 15 minutes 54 - */ 55 - real_seconds = nowtime % 60; 56 - real_minutes = nowtime / 60; 57 - if (((abs(real_minutes - cmos_minutes) + 15)/30) & 1) 58 - real_minutes += 30; /* correct for half hour time zone */ 59 - real_minutes %= 60; 60 - 61 - if (abs(real_minutes - cmos_minutes) < 30) { 62 - if (!(save_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) { 63 - real_seconds = bin2bcd(real_seconds); 64 - real_minutes = bin2bcd(real_minutes); 65 - } 66 - CMOS_WRITE(real_seconds, RTC_SECONDS); 67 - CMOS_WRITE(real_minutes, RTC_MINUTES); 68 - } else { 69 - printk_once(KERN_NOTICE 70 - "set_rtc_mmss: can't update from %d to %d\n", 71 - cmos_minutes, real_minutes); 72 - retval = -1; 73 - } 74 - 75 - /* The following flags have to be released exactly in this order, 76 - * otherwise the DS12887 (popular MC146818A clone with integrated 77 - * battery and quartz) will not reset the oscillator and will not 78 - * update precisely 500 ms later. You won't find this mentioned in 79 - * the Dallas Semiconductor data sheets, but who believes data 80 - * sheets anyway ... -- Markus Kuhn 81 - */ 82 - CMOS_WRITE(save_control, RTC_CONTROL); 83 - CMOS_WRITE(save_freq_select, RTC_FREQ_SELECT); 84 - spin_unlock_irqrestore(&rtc_lock, flags); 85 - 86 - return retval; 87 - } 88 - 14 + #ifdef CONFIG_RTC_MC146818_LIB 89 15 static inline time64_t mc146818_get_cmos_time(void) 90 16 { 91 - unsigned int year, mon, day, hour, min, sec; 92 - unsigned long flags; 17 + struct rtc_time tm; 93 18 94 - spin_lock_irqsave(&rtc_lock, flags); 95 - 96 - do { 97 - sec = CMOS_READ(RTC_SECONDS); 98 - min = CMOS_READ(RTC_MINUTES); 99 - hour = CMOS_READ(RTC_HOURS); 100 - day = CMOS_READ(RTC_DAY_OF_MONTH); 101 - mon = CMOS_READ(RTC_MONTH); 102 - year = CMOS_READ(RTC_YEAR); 103 - } while (sec != CMOS_READ(RTC_SECONDS)); 104 - 105 - if (!(CMOS_READ(RTC_CONTROL) & RTC_DM_BINARY) || RTC_ALWAYS_BCD) { 106 - sec = bcd2bin(sec); 107 - min = bcd2bin(min); 108 - hour = bcd2bin(hour); 109 - day = bcd2bin(day); 110 - mon = bcd2bin(mon); 111 - year = bcd2bin(year); 19 + if (mc146818_get_time(&tm, 1000)) { 20 + pr_err("Unable to read current time from RTC\n"); 21 + return 0; 112 22 } 113 - spin_unlock_irqrestore(&rtc_lock, flags); 114 - year = mc146818_decode_year(year); 115 23 116 - return mktime64(year, mon, day, hour, min, sec); 24 + return rtc_tm_to_time64(&tm); 117 25 } 26 + #endif /* CONFIG_RTC_MC146818_LIB */ 118 27 119 28 #endif /* __ASM_MC146818_TIME_H */
+3 -1
arch/mips/include/asm/mips-cps.h
··· 258 258 259 259 /** 260 260 * mips_cps_first_online_in_cluster() - Detect if CPU is first online in cluster 261 + * @first_cpu: The first other online CPU in cluster, or nr_cpu_ids if 262 + * the function returns true. 261 263 * 262 264 * Determine whether the local CPU is the first to be brought online in its 263 265 * cluster - that is, whether there are any other online CPUs in the local ··· 267 265 * 268 266 * Returns true if this CPU is first online, else false. 269 267 */ 270 - extern unsigned int mips_cps_first_online_in_cluster(void); 268 + extern unsigned int mips_cps_first_online_in_cluster(int *first_cpu); 271 269 272 270 #endif /* __MIPS_ASM_MIPS_CPS_H__ */
+1 -1
arch/mips/include/asm/sgi/heart.h
··· 4 4 * 5 5 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 6 6 * 2009 Johannes Dickgreber <tanzy@gmx.de> 7 - * 2007-2015 Joshua Kinard <kumba@gentoo.org> 7 + * 2007-2015 Joshua Kinard <linux@kumba.dev> 8 8 */ 9 9 #ifndef __ASM_SGI_HEART_H 10 10 #define __ASM_SGI_HEART_H
+1
arch/mips/include/asm/smp-cps.h
··· 24 24 25 25 struct cluster_boot_config { 26 26 unsigned long *core_power; 27 + struct cpumask cpumask; 27 28 struct core_boot_config *core_config; 28 29 }; 29 30
+8
arch/mips/include/asm/vpe.h
··· 119 119 120 120 int __init vpe_module_init(void); 121 121 void __exit vpe_module_exit(void); 122 + 123 + #ifdef CONFIG_MIPS_VPE_LOADER_MT 124 + void *vpe_alloc(void); 125 + int vpe_start(void *vpe, unsigned long start); 126 + int vpe_stop(void *vpe); 127 + int vpe_free(void *vpe); 128 + #endif /* CONFIG_MIPS_VPE_LOADER_MT */ 129 + 122 130 #endif /* _ASM_VPE_H */
+40 -2
arch/mips/kernel/cpu-probe.c
··· 9 9 */ 10 10 #include <linux/init.h> 11 11 #include <linux/kernel.h> 12 + #include <linux/mmu_context.h> 12 13 #include <linux/ptrace.h> 13 14 #include <linux/smp.h> 14 15 #include <linux/stddef.h> ··· 37 36 /* Hardware capabilities */ 38 37 unsigned int elf_hwcap __read_mostly; 39 38 EXPORT_SYMBOL_GPL(elf_hwcap); 39 + 40 + static bool mmid_disabled_quirk; 40 41 41 42 static inline unsigned long cpu_get_msa_id(void) 42 43 { ··· 648 645 config5 &= ~(MIPS_CONF5_UFR | MIPS_CONF5_UFE); 649 646 650 647 if (cpu_has_mips_r6) { 651 - if (!__builtin_constant_p(cpu_has_mmid) || cpu_has_mmid) 648 + if (!mmid_disabled_quirk && (!__builtin_constant_p(cpu_has_mmid) || cpu_has_mmid)) 652 649 config5 |= MIPS_CONF5_MI; 653 650 else 654 651 config5 &= ~MIPS_CONF5_MI; ··· 711 708 max_mmid_width); 712 709 asid_mask = GENMASK(max_mmid_width - 1, 0); 713 710 } 714 - 715 711 set_cpu_asid_mask(c, asid_mask); 716 712 } 717 713 } ··· 2047 2045 2048 2046 cpuinfo->globalnumber &= ~MIPS_GLOBALNUMBER_VP; 2049 2047 cpuinfo->globalnumber |= vpe << MIPS_GLOBALNUMBER_VP_SHF; 2048 + } 2049 + 2050 + void cpu_disable_mmid(void) 2051 + { 2052 + int i; 2053 + unsigned long asid_mask; 2054 + unsigned int cpu = smp_processor_id(); 2055 + struct cpuinfo_mips *c = &current_cpu_data; 2056 + unsigned int config4 = read_c0_config4(); 2057 + unsigned int config5 = read_c0_config5(); 2058 + 2059 + /* Setup the initial ASID mask based on config4 */ 2060 + asid_mask = MIPS_ENTRYHI_ASID; 2061 + if (config4 & MIPS_CONF4_AE) 2062 + asid_mask |= MIPS_ENTRYHI_ASIDX; 2063 + set_cpu_asid_mask(c, asid_mask); 2064 + 2065 + /* Disable MMID in the C0 and update cpuinfo_mips accordingly */ 2066 + config5 &= ~(MIPS_CONF5_UFR | MIPS_CONF5_UFE); 2067 + config5 &= ~MIPS_CONF5_MI; 2068 + write_c0_config5(config5); 2069 + /* Ensure the write to config5 above takes effect */ 2070 + back_to_back_c0_hazard(); 2071 + c->options &= ~MIPS_CPU_MMID; 2072 + 2073 + /* Setup asid cache value cleared in per_cpu_trap_init() */ 2074 + cpu_data[cpu].asid_cache = asid_first_version(cpu); 2075 + 2076 + /* Reinit context for each CPU */ 2077 + for_each_possible_cpu(i) 2078 + set_cpu_context(i, &init_mm, 0); 2079 + 2080 + /* Ensure that now MMID will be seen as disable */ 2081 + mmid_disabled_quirk = true; 2082 + 2083 + pr_info("MMID support disabled due to hardware support issue\n"); 2050 2084 }
+20 -30
arch/mips/kernel/mips-cm.c
··· 10 10 #include <linux/spinlock.h> 11 11 12 12 #include <asm/mips-cps.h> 13 + #include <asm/smp-cps.h> 13 14 #include <asm/mipsregs.h> 14 15 15 16 void __iomem *mips_gcr_base; ··· 249 248 return; 250 249 pr_info("HCI (Hardware Cache Init for the L2 cache) in GCR_L2_RAM_CONFIG from the CM3 is broken"); 251 250 mips_cm_is_l2_hci_broken = true; 251 + 252 + /* Disable MMID only if it was configured */ 253 + if (cpu_has_mmid) 254 + cpu_disable_mmid(); 255 + 252 256 of_node_put(cm_node); 253 257 } 254 258 ··· 535 529 write_gcr_error_cause(cm_error); 536 530 } 537 531 538 - unsigned int mips_cps_first_online_in_cluster(void) 532 + unsigned int mips_cps_first_online_in_cluster(int *first_cpu) 539 533 { 540 - unsigned int local_cl; 541 - int i; 542 - 543 - local_cl = cpu_cluster(&current_cpu_data); 534 + unsigned int local_cl = cpu_cluster(&current_cpu_data); 535 + struct cpumask *local_cl_mask; 544 536 545 537 /* 546 - * We rely upon knowledge that CPUs are numbered sequentially by 547 - * cluster - ie. CPUs 0..X will be in cluster 0, CPUs X+1..Y in cluster 548 - * 1, CPUs Y+1..Z in cluster 2 etc. This means that CPUs in the same 549 - * cluster will immediately precede or follow one another. 550 - * 551 - * First we scan backwards, until we find an online CPU in the cluster 552 - * or we move on to another cluster. 538 + * mips_cps_cluster_bootcfg is allocated in cps_prepare_cpus. If it is 539 + * not yet done, then we are so early that only one CPU is running, so 540 + * it is the first online CPU in the cluster. 553 541 */ 554 - for (i = smp_processor_id() - 1; i >= 0; i--) { 555 - if (cpu_cluster(&cpu_data[i]) != local_cl) 556 - break; 557 - if (!cpu_online(i)) 558 - continue; 559 - return false; 560 - } 542 + if (IS_ENABLED(CONFIG_MIPS_CPS) && mips_cps_cluster_bootcfg) 543 + local_cl_mask = &mips_cps_cluster_bootcfg[local_cl].cpumask; 544 + else 545 + return true; 561 546 562 - /* Then do the same for higher numbered CPUs */ 563 - for (i = smp_processor_id() + 1; i < nr_cpu_ids; i++) { 564 - if (cpu_cluster(&cpu_data[i]) != local_cl) 565 - break; 566 - if (!cpu_online(i)) 567 - continue; 568 - return false; 569 - } 570 - 571 - /* We found no online CPUs in the local cluster */ 572 - return true; 547 + *first_cpu = cpumask_any_and_but(local_cl_mask, 548 + cpu_online_mask, 549 + smp_processor_id()); 550 + return (*first_cpu >= nr_cpu_ids); 573 551 }
+9 -7
arch/mips/kernel/process.c
··· 690 690 } 691 691 692 692 /* Space for the VDSO, data page & GIC user page */ 693 - top -= PAGE_ALIGN(current->thread.abi->vdso->size); 694 - top -= PAGE_SIZE; 695 - top -= mips_gic_present() ? PAGE_SIZE : 0; 693 + if (current->thread.abi) { 694 + top -= PAGE_ALIGN(current->thread.abi->vdso->size); 695 + top -= PAGE_SIZE; 696 + top -= mips_gic_present() ? PAGE_SIZE : 0; 697 + 698 + /* Space to randomize the VDSO base */ 699 + if (current->flags & PF_RANDOMIZE) 700 + top -= VDSO_RANDOMIZE_SIZE; 701 + } 696 702 697 703 /* Space for cache colour alignment */ 698 704 if (cpu_has_dc_aliases) 699 705 top -= shm_align_mask + 1; 700 - 701 - /* Space to randomize the VDSO base */ 702 - if (current->flags & PF_RANDOMIZE) 703 - top -= VDSO_RANDOMIZE_SIZE; 704 706 705 707 return top; 706 708 }
+5 -5
arch/mips/kernel/relocate.c
··· 138 138 apply_r_mips_hi16_rel(loc_orig, loc_new, offset); 139 139 break; 140 140 default: 141 - pr_err("Unhandled relocation type %d at 0x%pK\n", type, 141 + pr_err("Unhandled relocation type %d at 0x%p\n", type, 142 142 loc_orig); 143 143 return -ENOEXEC; 144 144 } ··· 439 439 { 440 440 if (__kaslr_offset > 0) { 441 441 printk(level); 442 - pr_cont("Kernel relocated by 0x%pK\n", (void *)__kaslr_offset); 443 - pr_cont(" .text @ 0x%pK\n", _text); 444 - pr_cont(" .data @ 0x%pK\n", _sdata); 445 - pr_cont(" .bss @ 0x%pK\n", __bss_start); 442 + pr_cont("Kernel relocated by 0x%p\n", (void *)__kaslr_offset); 443 + pr_cont(" .text @ 0x%p\n", _text); 444 + pr_cont(" .data @ 0x%p\n", _sdata); 445 + pr_cont(" .bss @ 0x%p\n", __bss_start); 446 446 } 447 447 } 448 448
+15 -1
arch/mips/kernel/smp-cps.c
··· 281 281 #endif /* CONFIG_MIPS_MT_FPAFF */ 282 282 } 283 283 284 + unsigned long calibrate_delay_is_known(void) 285 + { 286 + int first_cpu_cluster = 0; 287 + 288 + /* The calibration has to be done on the primary CPU of the cluster */ 289 + if (mips_cps_first_online_in_cluster(&first_cpu_cluster)) 290 + return 0; 291 + 292 + return cpu_data[first_cpu_cluster].udelay_val; 293 + } 294 + 284 295 static void __init cps_prepare_cpus(unsigned int max_cpus) 285 296 { 286 - unsigned int nclusters, ncores, core_vpes, c, cl, cca; 297 + unsigned int nclusters, ncores, core_vpes, nvpe = 0, c, cl, cca; 287 298 bool cca_unsuitable, cores_limited; 288 299 struct cluster_boot_config *cluster_bootcfg; 289 300 struct core_boot_config *core_bootcfg; ··· 367 356 368 357 /* Allocate VPE boot configuration structs */ 369 358 for (c = 0; c < ncores; c++) { 359 + int v; 370 360 core_vpes = core_vpe_count(cl, c); 371 361 core_bootcfg[c].vpe_config = kcalloc(core_vpes, 372 362 sizeof(*core_bootcfg[c].vpe_config), 373 363 GFP_KERNEL); 364 + for (v = 0; v < core_vpes; v++) 365 + cpumask_set_cpu(nvpe++, &mips_cps_cluster_bootcfg[cl].cpumask); 374 366 if (!core_bootcfg[c].vpe_config) 375 367 goto err_out; 376 368 }
+1 -1
arch/mips/kvm/mips.c
··· 315 315 * we allocate is out of range, just give up now. 316 316 */ 317 317 if (!cpu_has_ebase_wg && virt_to_phys(gebase) >= 0x20000000) { 318 - kvm_err("CP0_EBase.WG required for guest exception base %pK\n", 318 + kvm_err("CP0_EBase.WG required for guest exception base %p\n", 319 319 gebase); 320 320 err = -ENOMEM; 321 321 goto out_free_gebase;
+2 -2
arch/mips/lantiq/falcon/prom.c
··· 36 36 #define BOOT_NVEC (BOOT_REG_BASE | 0x04) 37 37 #define BOOT_EVEC (BOOT_REG_BASE | 0x08) 38 38 39 - void __init ltq_soc_nmi_setup(void) 39 + static void __init ltq_soc_nmi_setup(void) 40 40 { 41 41 extern void (*nmi_handler)(void); 42 42 43 43 ltq_w32((unsigned long)&nmi_handler, (void *)BOOT_NVEC); 44 44 } 45 45 46 - void __init ltq_soc_ejtag_setup(void) 46 + static void __init ltq_soc_ejtag_setup(void) 47 47 { 48 48 extern void (*ejtag_debug_handler)(void); 49 49
+11 -18
arch/mips/lantiq/falcon/sysctrl.c
··· 14 14 #include <lantiq_soc.h> 15 15 16 16 #include "../clk.h" 17 + #include "../prom.h" 17 18 18 19 /* infrastructure control register */ 19 20 #define SYS1_INFRAC 0x00bc ··· 72 71 73 72 static void __iomem *sysctl_membase[3], *status_membase; 74 73 void __iomem *ltq_sys1_membase, *ltq_ebu_membase; 75 - 76 - void falcon_trigger_hrst(int level) 77 - { 78 - sysctl_w32(SYSCTL_SYS1, level & 1, SYS1_HRSTOUTC); 79 - } 80 74 81 75 static inline void sysctl_wait(struct clk *clk, 82 76 unsigned int test, unsigned int reg) ··· 210 214 of_node_put(np_syseth); 211 215 of_node_put(np_sysgpe); 212 216 213 - if ((request_mem_region(res_status.start, resource_size(&res_status), 214 - res_status.name) < 0) || 215 - (request_mem_region(res_ebu.start, resource_size(&res_ebu), 216 - res_ebu.name) < 0) || 217 - (request_mem_region(res_sys[0].start, 218 - resource_size(&res_sys[0]), 219 - res_sys[0].name) < 0) || 220 - (request_mem_region(res_sys[1].start, 221 - resource_size(&res_sys[1]), 222 - res_sys[1].name) < 0) || 223 - (request_mem_region(res_sys[2].start, 224 - resource_size(&res_sys[2]), 225 - res_sys[2].name) < 0)) 217 + if ((!request_mem_region(res_status.start, resource_size(&res_status), 218 + res_status.name)) || 219 + (!request_mem_region(res_ebu.start, resource_size(&res_ebu), 220 + res_ebu.name)) || 221 + (!request_mem_region(res_sys[0].start, resource_size(&res_sys[0]), 222 + res_sys[0].name)) || 223 + (!request_mem_region(res_sys[1].start, resource_size(&res_sys[1]), 224 + res_sys[1].name)) || 225 + (!request_mem_region(res_sys[2].start, resource_size(&res_sys[2]), 226 + res_sys[2].name))) 226 227 pr_err("Failed to request core resources"); 227 228 228 229 status_membase = ioremap(res_status.start,
+3 -1
arch/mips/lantiq/irq.c
··· 16 16 17 17 #include <asm/bootinfo.h> 18 18 #include <asm/irq_cpu.h> 19 + #include <asm/time.h> 19 20 20 21 #include <lantiq_soc.h> 21 22 #include <irq.h> ··· 336 335 .map = icu_map, 337 336 }; 338 337 339 - int __init icu_of_init(struct device_node *node, struct device_node *parent) 338 + static int __init 339 + icu_of_init(struct device_node *node, struct device_node *parent) 340 340 { 341 341 struct device_node *eiu_node; 342 342 struct resource res;
+1 -1
arch/mips/lantiq/xway/clk.c
··· 74 74 return clk; 75 75 } 76 76 77 - unsigned long ltq_ar9_sys_hz(void) 77 + static unsigned long ltq_ar9_sys_hz(void) 78 78 { 79 79 if (((ltq_cgu_r32(CGU_SYS) >> 3) & 0x3) == 0x2) 80 80 return CLOCK_393M;
+1 -1
arch/mips/lantiq/xway/dcdc.c
··· 46 46 }, 47 47 }; 48 48 49 - int __init dcdc_init(void) 49 + static int __init dcdc_init(void) 50 50 { 51 51 int ret = platform_driver_register(&dcdc_driver); 52 52
+1 -1
arch/mips/lantiq/xway/dma.c
··· 289 289 }, 290 290 }; 291 291 292 - int __init 292 + static int __init 293 293 dma_init(void) 294 294 { 295 295 return platform_driver_register(&dma_driver);
+1 -1
arch/mips/lantiq/xway/gptu.c
··· 194 194 }, 195 195 }; 196 196 197 - int __init gptu_init(void) 197 + static int __init gptu_init(void) 198 198 { 199 199 int ret = platform_driver_register(&dma_driver); 200 200
-1
arch/mips/loongson64/setup.c
··· 3 3 * Copyright (C) 2007 Lemote Inc. & Institute of Computing Technology 4 4 * Author: Fuxin Zhang, zhangfx@lemote.com 5 5 */ 6 - #include <linux/export.h> 7 6 #include <linux/init.h> 8 7 9 8 #include <asm/bootinfo.h>
+1 -1
arch/mips/mm/physaddr.c
··· 30 30 phys_addr_t __virt_to_phys(volatile const void *x) 31 31 { 32 32 WARN(!__debug_virt_addr_valid((unsigned long)x), 33 - "virt_to_phys used for non-linear address: %pK (%pS)\n", 33 + "virt_to_phys used for non-linear address: %p (%pS)\n", 34 34 x, x); 35 35 36 36 return __virt_to_phys_nodebug(x);
+55 -1
arch/mips/mm/tlb-r4k.c
··· 508 508 509 509 __setup("ntlb=", set_ntlb); 510 510 511 + /* Initialise all TLB entries with unique values */ 512 + static void r4k_tlb_uniquify(void) 513 + { 514 + int entry = num_wired_entries(); 515 + 516 + htw_stop(); 517 + write_c0_entrylo0(0); 518 + write_c0_entrylo1(0); 519 + 520 + while (entry < current_cpu_data.tlbsize) { 521 + unsigned long asid_mask = cpu_asid_mask(&current_cpu_data); 522 + unsigned long asid = 0; 523 + int idx; 524 + 525 + /* Skip wired MMID to make ginvt_mmid work */ 526 + if (cpu_has_mmid) 527 + asid = MMID_KERNEL_WIRED + 1; 528 + 529 + /* Check for match before using UNIQUE_ENTRYHI */ 530 + do { 531 + if (cpu_has_mmid) { 532 + write_c0_memorymapid(asid); 533 + write_c0_entryhi(UNIQUE_ENTRYHI(entry)); 534 + } else { 535 + write_c0_entryhi(UNIQUE_ENTRYHI(entry) | asid); 536 + } 537 + mtc0_tlbw_hazard(); 538 + tlb_probe(); 539 + tlb_probe_hazard(); 540 + idx = read_c0_index(); 541 + /* No match or match is on current entry */ 542 + if (idx < 0 || idx == entry) 543 + break; 544 + /* 545 + * If we hit a match, we need to try again with 546 + * a different ASID. 547 + */ 548 + asid++; 549 + } while (asid < asid_mask); 550 + 551 + if (idx >= 0 && idx != entry) 552 + panic("Unable to uniquify TLB entry %d", idx); 553 + 554 + write_c0_index(entry); 555 + mtc0_tlbw_hazard(); 556 + tlb_write_indexed(); 557 + entry++; 558 + } 559 + 560 + tlbw_use_hazard(); 561 + htw_start(); 562 + flush_micro_tlb(); 563 + } 564 + 511 565 /* 512 566 * Configure TLB (for init or after a CPU has been powered off). 513 567 */ ··· 601 547 temp_tlb_entry = current_cpu_data.tlbsize - 1; 602 548 603 549 /* From this point on the ARC firmware is dead. */ 604 - local_flush_tlb_all(); 550 + r4k_tlb_uniquify(); 605 551 606 552 /* Did I tell you that ARC SUCKS? */ 607 553 }
+1 -1
arch/mips/pci/pci-lantiq.c
··· 234 234 }, 235 235 }; 236 236 237 - int __init pcibios_init(void) 237 + static int __init pcibios_init(void) 238 238 { 239 239 int ret = platform_driver_register(&ltq_pci_driver); 240 240 if (ret)
+1 -1
arch/mips/pci/pci-rt2880.c
··· 264 264 }, 265 265 }; 266 266 267 - int __init pcibios_init(void) 267 + static int __init pcibios_init(void) 268 268 { 269 269 int ret = platform_driver_register(&rt288x_pci_driver); 270 270
+1
arch/mips/ralink/irq.c
··· 15 15 16 16 #include <asm/irq_cpu.h> 17 17 #include <asm/mipsregs.h> 18 + #include <asm/time.h> 18 19 19 20 #include "common.h" 20 21
+1 -1
arch/mips/sgi-ip27/ip27-irq.c
··· 165 165 return; 166 166 167 167 irqd = irq_domain_get_irq_data(domain, virq); 168 - if (irqd && irqd->chip_data) 168 + if (irqd) 169 169 kfree(irqd->chip_data); 170 170 } 171 171
+1 -1
arch/mips/sgi-ip30/ip30-power.c
··· 3 3 * ip30-power.c: Software powerdown and reset handling for IP30 architecture. 4 4 * 5 5 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 6 - * 2014 Joshua Kinard <kumba@gentoo.org> 6 + * 2014 Joshua Kinard <linux@kumba.dev> 7 7 * 2009 Johannes Dickgreber <tanzy@gmx.de> 8 8 */ 9 9
+1 -1
arch/mips/sgi-ip30/ip30-setup.c
··· 3 3 * SGI IP30 miscellaneous setup bits. 4 4 * 5 5 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 6 - * 2007 Joshua Kinard <kumba@gentoo.org> 6 + * 2007 Joshua Kinard <linux@kumba.dev> 7 7 * 2009 Johannes Dickgreber <tanzy@gmx.de> 8 8 */ 9 9
+1 -1
arch/mips/sgi-ip30/ip30-smp.c
··· 5 5 * and smp-bmips.c. 6 6 * 7 7 * Copyright (C) 2005-2007 Stanislaw Skowronek <skylark@unaligned.org> 8 - * 2006-2007, 2014-2015 Joshua Kinard <kumba@gentoo.org> 8 + * 2006-2007, 2014-2015 Joshua Kinard <linux@kumba.dev> 9 9 * 2009 Johannes Dickgreber <tanzy@gmx.de> 10 10 */ 11 11
+1 -1
arch/mips/sgi-ip30/ip30-timer.c
··· 5 5 * 6 6 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 7 7 * Copyright (C) 2009 Johannes Dickgreber <tanzy@gmx.de> 8 - * Copyright (C) 2011 Joshua Kinard <kumba@gentoo.org> 8 + * Copyright (C) 2011 Joshua Kinard <linux@kumba.dev> 9 9 */ 10 10 11 11 #include <linux/clocksource.h>
+1 -1
arch/mips/sgi-ip30/ip30-xtalk.c
··· 3 3 * ip30-xtalk.c - Very basic Crosstalk (XIO) detection support. 4 4 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org> 5 5 * Copyright (C) 2009 Johannes Dickgreber <tanzy@gmx.de> 6 - * Copyright (C) 2007, 2014-2016 Joshua Kinard <kumba@gentoo.org> 6 + * Copyright (C) 2007, 2014-2016 Joshua Kinard <linux@kumba.dev> 7 7 */ 8 8 9 9 #include <linux/init.h>
+2 -2
arch/mips/txx9/generic/setup.c
··· 776 776 }; 777 777 778 778 static ssize_t txx9_sram_read(struct file *filp, struct kobject *kobj, 779 - struct bin_attribute *bin_attr, 779 + const struct bin_attribute *bin_attr, 780 780 char *buf, loff_t pos, size_t size) 781 781 { 782 782 struct txx9_sramc_dev *dev = bin_attr->private; ··· 791 791 } 792 792 793 793 static ssize_t txx9_sram_write(struct file *filp, struct kobject *kobj, 794 - struct bin_attribute *bin_attr, 794 + const struct bin_attribute *bin_attr, 795 795 char *buf, loff_t pos, size_t size) 796 796 { 797 797 struct txx9_sramc_dev *dev = bin_attr->private;
+1 -1
drivers/mfd/ioc3.c
··· 6 6 * 7 7 * Based on work by: 8 8 * Stanislaw Skowronek <skylark@unaligned.org> 9 - * Joshua Kinard <kumba@gentoo.org> 9 + * Joshua Kinard <linux@kumba.dev> 10 10 * Brent Casavant <bcasavan@sgi.com> - IOC4 master driver 11 11 * Pat Gefre <pfg@sgi.com> - IOC3 serial port IRQ demuxer 12 12 */
+1 -1
drivers/tty/serial/8250/8250_ioc3.c
··· 5 5 * Copyright (C) 2019 Thomas Bogendoerfer <tbogendoerfer@suse.de> 6 6 * 7 7 * based on code Copyright (C) 2005 Stanislaw Skowronek <skylark@unaligned.org> 8 - * Copyright (C) 2014 Joshua Kinard <kumba@gentoo.org> 8 + * Copyright (C) 2014 Joshua Kinard <linux@kumba.dev> 9 9 */ 10 10 11 11 #include <linux/module.h>
-1
include/linux/bcm47xx_nvram.h
··· 7 7 8 8 #include <linux/errno.h> 9 9 #include <linux/types.h> 10 - #include <linux/kernel.h> 11 10 #include <linux/vmalloc.h> 12 11 13 12 #ifdef CONFIG_BCM47XX_NVRAM
+1 -1
include/linux/bcm47xx_sprom.h
··· 5 5 #ifndef __BCM47XX_SPROM_H 6 6 #define __BCM47XX_SPROM_H 7 7 8 + #include <linux/errno.h> 8 9 #include <linux/types.h> 9 - #include <linux/kernel.h> 10 10 #include <linux/vmalloc.h> 11 11 12 12 struct ssb_sprom;