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

Merge tag 'mips_5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux

Pull MIPS updates from Thomas Bogendoerfer:

- converted Pistachio platform to use MIPS generic kernel

- fixes and cleanups

* tag 'mips_5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (29 commits)
MIPS: Malta: fix alignment of the devicetree buffer
MIPS: ingenic: Unconditionally enable clock of CPU #0
MIPS: mscc: ocelot: mark the phy-mode for internal PHY ports
MIPS: mscc: ocelot: disable all switch ports by default
MAINTAINERS: adjust PISTACHIO SOC SUPPORT after its retirement
MIPS: Return true/false (not 1/0) from bool functions
MIPS: generic: Return true/false (not 1/0) from bool functions
MIPS: Make a alias for pistachio_defconfig
MIPS: Retire MACH_PISTACHIO
MIPS: config: generic: Add config for Marduk board
pinctrl: pistachio: Make it as an option
phy: pistachio-usb: Depend on MIPS || COMPILE_TEST
clocksource/drivers/pistachio: Make it selectable for MIPS
clk: pistachio: Make it selectable for generic MIPS kernel
MIPS: DTS: Pistachio add missing cpc and cdmm
MIPS: generic: Allow generating FIT image for Marduk board
MIPS: locking/atomic: Fix atomic{_64,}_sub_if_positive
MIPS: loongson2ef: don't build serial.o unconditionally
MIPS: Replace deprecated CPU-hotplug functions.
MIPS: Alchemy: Fix spelling contraction "cant" -> "can't"
...

+346 -783
+1 -9
MAINTAINERS
··· 11120 11120 M: Rahul Bedarkar <rahulbedarkar89@gmail.com> 11121 11121 L: linux-mips@vger.kernel.org 11122 11122 S: Maintained 11123 - F: arch/mips/boot/dts/img/pistachio_marduk.dts 11123 + F: arch/mips/boot/dts/img/pistachio* 11124 11124 11125 11125 MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER 11126 11126 M: Andrew Lunn <andrew@lunn.ch> ··· 14823 14823 S: Maintained 14824 14824 W: http://www.st.com/spear 14825 14825 F: drivers/pinctrl/spear/ 14826 - 14827 - PISTACHIO SOC SUPPORT 14828 - M: James Hartley <james.hartley@sondrel.com> 14829 - L: linux-mips@vger.kernel.org 14830 - S: Odd Fixes 14831 - F: arch/mips/boot/dts/img/pistachio* 14832 - F: arch/mips/configs/pistachio*_defconfig 14833 - F: arch/mips/pistachio/ 14834 14826 14835 14827 PKTCDVD DRIVER 14836 14828 M: linux-block@vger.kernel.org
-1
arch/mips/Kbuild.platforms
··· 21 21 platform-$(CONFIG_MACH_NINTENDO64) += n64/ 22 22 platform-$(CONFIG_NLM_COMMON) += netlogic/ 23 23 platform-$(CONFIG_PIC32MZDA) += pic32/ 24 - platform-$(CONFIG_MACH_PISTACHIO) += pistachio/ 25 24 platform-$(CONFIG_RALINK) += ralink/ 26 25 platform-$(CONFIG_MIKROTIK_RB532) += rb532/ 27 26 platform-$(CONFIG_SGI_IP22) += sgi-ip22/
-30
arch/mips/Kconfig
··· 514 514 and Loongson-2F which will be removed), developed by the Institute 515 515 of Computing Technology (ICT), Chinese Academy of Sciences (CAS). 516 516 517 - config MACH_PISTACHIO 518 - bool "IMG Pistachio SoC based boards" 519 - select BOOT_ELF32 520 - select BOOT_RAW 521 - select CEVT_R4K 522 - select CLKSRC_MIPS_GIC 523 - select COMMON_CLK 524 - select CSRC_R4K 525 - select DMA_NONCOHERENT 526 - select GPIOLIB 527 - select IRQ_MIPS_CPU 528 - select MFD_SYSCON 529 - select MIPS_CPU_SCACHE 530 - select MIPS_GIC 531 - select PINCTRL 532 - select REGULATOR 533 - select SYS_HAS_CPU_MIPS32_R2 534 - select SYS_SUPPORTS_32BIT_KERNEL 535 - select SYS_SUPPORTS_LITTLE_ENDIAN 536 - select SYS_SUPPORTS_MIPS_CPS 537 - select SYS_SUPPORTS_MULTITHREADING 538 - select SYS_SUPPORTS_RELOCATABLE 539 - select SYS_SUPPORTS_ZBOOT 540 - select SYS_HAS_EARLY_PRINTK 541 - select USE_GENERIC_EARLY_PRINTK_8250 542 - select USE_OF 543 - help 544 - This enables support for the IMG Pistachio SoC platform. 545 - 546 517 config MIPS_MALTA 547 518 bool "MIPS Malta board" 548 519 select ARCH_MAY_HAVE_PC_FDC ··· 1060 1089 source "arch/mips/jazz/Kconfig" 1061 1090 source "arch/mips/lantiq/Kconfig" 1062 1091 source "arch/mips/pic32/Kconfig" 1063 - source "arch/mips/pistachio/Kconfig" 1064 1092 source "arch/mips/ralink/Kconfig" 1065 1093 source "arch/mips/sgi-ip27/Kconfig" 1066 1094 source "arch/mips/sibyte/Kconfig"
+3
arch/mips/Makefile
··· 560 560 legacy_defconfigs += xilfpga_defconfig 561 561 xilfpga_defconfig-y := 32r2el_defconfig BOARDS=xilfpga 562 562 563 + legacy_defconfigs += pistachio_defconfig 564 + pistachio_defconfig-y := 32r2el_defconfig BOARDS=marduk 565 + 563 566 .PHONY: $(legacy_defconfigs) 564 567 $(legacy_defconfigs): 565 568 $(Q)$(MAKE) -f $(srctree)/Makefile $($@-y)
+1 -1
arch/mips/alchemy/devboards/db1200.c
··· 835 835 if (!IS_ERR(c)) { 836 836 pfc = clk_round_rate(c, 50000000); 837 837 if ((pfc < 1) || (abs(50000000 - pfc) > 2500000)) 838 - pr_warn("DB1200: cant get I2C close to 50MHz\n"); 838 + pr_warn("DB1200: can't get I2C close to 50MHz\n"); 839 839 else 840 840 clk_set_rate(c, pfc); 841 841 clk_prepare_enable(c);
+1 -1
arch/mips/boot/dts/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 subdir-$(CONFIG_BMIPS_GENERIC) += brcm 3 3 subdir-$(CONFIG_CAVIUM_OCTEON_SOC) += cavium-octeon 4 - subdir-$(CONFIG_MACH_PISTACHIO) += img 4 + subdir-$(CONFIG_FIT_IMAGE_FDT_MARDUK) += img 5 5 subdir-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += img 6 6 subdir-$(CONFIG_MACH_INGENIC) += ingenic 7 7 subdir-$(CONFIG_LANTIQ) += lantiq
+1 -2
arch/mips/boot/dts/img/Makefile
··· 1 1 # SPDX-License-Identifier: GPL-2.0 2 2 dtb-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += boston.dtb 3 3 4 - dtb-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb 5 - obj-$(CONFIG_MACH_PISTACHIO) += pistachio_marduk.dtb.o 4 + dtb-$(CONFIG_FIT_IMAGE_FDT_MARDUK) += pistachio_marduk.dtb
+10
arch/mips/boot/dts/img/pistachio.dtsi
··· 900 900 }; 901 901 }; 902 902 903 + cpc: cpc@1bde0000 { 904 + compatible = "mti,mips-cpc"; 905 + reg = <0x1bde0000 0x10000>; 906 + }; 907 + 908 + cdmm: cdmm@1bdf0000 { 909 + compatible = "mti,mips-cdmm"; 910 + reg = <0x1bdf0000 0x10000>; 911 + }; 912 + 903 913 usb_phy: usb-phy { 904 914 compatible = "img,pistachio-usb-phy"; 905 915 clocks = <&clk_core CLK_USB_PHY>;
+11
arch/mips/boot/dts/mscc/ocelot.dtsi
··· 150 150 151 151 port0: port@0 { 152 152 reg = <0>; 153 + status = "disabled"; 153 154 }; 154 155 port1: port@1 { 155 156 reg = <1>; 157 + status = "disabled"; 156 158 }; 157 159 port2: port@2 { 158 160 reg = <2>; 161 + status = "disabled"; 159 162 }; 160 163 port3: port@3 { 161 164 reg = <3>; 165 + status = "disabled"; 162 166 }; 163 167 port4: port@4 { 164 168 reg = <4>; 169 + status = "disabled"; 165 170 }; 166 171 port5: port@5 { 167 172 reg = <5>; 173 + status = "disabled"; 168 174 }; 169 175 port6: port@6 { 170 176 reg = <6>; 177 + status = "disabled"; 171 178 }; 172 179 port7: port@7 { 173 180 reg = <7>; 181 + status = "disabled"; 174 182 }; 175 183 port8: port@8 { 176 184 reg = <8>; 185 + status = "disabled"; 177 186 }; 178 187 port9: port@9 { 179 188 reg = <9>; 189 + status = "disabled"; 180 190 }; 181 191 port10: port@10 { 182 192 reg = <10>; 193 + status = "disabled"; 183 194 }; 184 195 }; 185 196 };
+12
arch/mips/boot/dts/mscc/ocelot_pcb120.dts
··· 69 69 }; 70 70 71 71 &port0 { 72 + status = "okay"; 72 73 phy-handle = <&phy0>; 74 + phy-mode = "internal"; 73 75 }; 74 76 75 77 &port1 { 78 + status = "okay"; 76 79 phy-handle = <&phy1>; 80 + phy-mode = "internal"; 77 81 }; 78 82 79 83 &port2 { 84 + status = "okay"; 80 85 phy-handle = <&phy2>; 86 + phy-mode = "internal"; 81 87 }; 82 88 83 89 &port3 { 90 + status = "okay"; 84 91 phy-handle = <&phy3>; 92 + phy-mode = "internal"; 85 93 }; 86 94 87 95 &port4 { 96 + status = "okay"; 88 97 phy-handle = <&phy7>; 89 98 phy-mode = "sgmii"; 90 99 phys = <&serdes 4 SERDES1G(2)>; 91 100 }; 92 101 93 102 &port5 { 103 + status = "okay"; 94 104 phy-handle = <&phy4>; 95 105 phy-mode = "sgmii"; 96 106 phys = <&serdes 5 SERDES1G(5)>; 97 107 }; 98 108 99 109 &port6 { 110 + status = "okay"; 100 111 phy-handle = <&phy6>; 101 112 phy-mode = "sgmii"; 102 113 phys = <&serdes 6 SERDES1G(3)>; 103 114 }; 104 115 105 116 &port9 { 117 + status = "okay"; 106 118 phy-handle = <&phy5>; 107 119 phy-mode = "sgmii"; 108 120 phys = <&serdes 9 SERDES1G(4)>;
+8
arch/mips/boot/dts/mscc/ocelot_pcb123.dts
··· 47 47 }; 48 48 49 49 &port0 { 50 + status = "okay"; 50 51 phy-handle = <&phy0>; 52 + phy-mode = "internal"; 51 53 }; 52 54 53 55 &port1 { 56 + status = "okay"; 54 57 phy-handle = <&phy1>; 58 + phy-mode = "internal"; 55 59 }; 56 60 57 61 &port2 { 62 + status = "okay"; 58 63 phy-handle = <&phy2>; 64 + phy-mode = "internal"; 59 65 }; 60 66 61 67 &port3 { 68 + status = "okay"; 62 69 phy-handle = <&phy3>; 70 + phy-mode = "internal"; 63 71 };
+5 -5
arch/mips/cavium-octeon/executive/cvmx-bootmem.c
··· 44 44 45 45 /* See header file for descriptions of functions */ 46 46 47 - /** 47 + /* 48 48 * This macro returns a member of the 49 49 * cvmx_bootmem_named_block_desc_t structure. These members can't 50 50 * be directly addressed as they might be in memory not directly ··· 60 60 offsetof(struct cvmx_bootmem_named_block_desc, field), \ 61 61 sizeof_field(struct cvmx_bootmem_named_block_desc, field)) 62 62 63 - /** 63 + /* 64 64 * This function is the implementation of the get macros defined 65 65 * for individual structure members. The argument are generated 66 66 * by the macros inorder to read only the needed memory. ··· 115 115 return cvmx_read64_uint64((addr + NEXT_OFFSET) | (1ull << 63)); 116 116 } 117 117 118 - /** 118 + /* 119 119 * Allocate a block of memory from the free list that was 120 120 * passed to the application by the bootloader within a specified 121 121 * address range. This is an allocate-only algorithm, so ··· 550 550 551 551 } 552 552 553 - /** 553 + /* 554 554 * Finds a named memory block by name. 555 555 * Also used for finding an unused entry in the named block table. 556 556 * ··· 657 657 } 658 658 EXPORT_SYMBOL(cvmx_bootmem_find_named_block); 659 659 660 - /** 660 + /* 661 661 * Frees a named block. 662 662 * 663 663 * @name: name of block to free
+10 -23
arch/mips/cavium-octeon/executive/cvmx-cmd-queue.c
··· 42 42 #include <asm/octeon/cvmx-pexp-defs.h> 43 43 #include <asm/octeon/cvmx-pko-defs.h> 44 44 45 - /** 45 + /* 46 46 * This application uses this pointer to access the global queue 47 47 * state. It points to a bootmem named block. 48 48 */ 49 49 __cvmx_cmd_queue_all_state_t *__cvmx_cmd_queue_state_ptr; 50 50 EXPORT_SYMBOL_GPL(__cvmx_cmd_queue_state_ptr); 51 51 52 - /** 52 + /* 53 53 * Initialize the Global queue state pointer. 54 54 * 55 55 * Returns CVMX_CMD_QUEUE_SUCCESS or a failure code ··· 57 57 static cvmx_cmd_queue_result_t __cvmx_cmd_queue_init_state_ptr(void) 58 58 { 59 59 char *alloc_name = "cvmx_cmd_queues"; 60 - #if defined(CONFIG_CAVIUM_RESERVE32) && CONFIG_CAVIUM_RESERVE32 61 - extern uint64_t octeon_reserve32_memory; 62 - #endif 63 60 64 61 if (likely(__cvmx_cmd_queue_state_ptr)) 65 62 return CVMX_CMD_QUEUE_SUCCESS; 66 63 67 - #if defined(CONFIG_CAVIUM_RESERVE32) && CONFIG_CAVIUM_RESERVE32 68 - if (octeon_reserve32_memory) 69 - __cvmx_cmd_queue_state_ptr = 70 - cvmx_bootmem_alloc_named_range(sizeof(*__cvmx_cmd_queue_state_ptr), 71 - octeon_reserve32_memory, 72 - octeon_reserve32_memory + 73 - (CONFIG_CAVIUM_RESERVE32 << 74 - 20) - 1, 128, alloc_name); 75 - else 76 - #endif 77 - __cvmx_cmd_queue_state_ptr = 78 - cvmx_bootmem_alloc_named(sizeof(*__cvmx_cmd_queue_state_ptr), 79 - 128, 80 - alloc_name); 64 + __cvmx_cmd_queue_state_ptr = 65 + cvmx_bootmem_alloc_named(sizeof(*__cvmx_cmd_queue_state_ptr), 66 + 128, 67 + alloc_name); 81 68 if (__cvmx_cmd_queue_state_ptr) 82 69 memset(__cvmx_cmd_queue_state_ptr, 0, 83 70 sizeof(*__cvmx_cmd_queue_state_ptr)); ··· 84 97 return CVMX_CMD_QUEUE_SUCCESS; 85 98 } 86 99 87 - /** 100 + /* 88 101 * Initialize a command queue for use. The initial FPA buffer is 89 102 * allocated and the hardware unit is configured to point to the 90 103 * new command queue. ··· 182 195 } 183 196 } 184 197 185 - /** 198 + /* 186 199 * Shutdown a queue a free it's command buffers to the FPA. The 187 200 * hardware connected to the queue must be stopped before this 188 201 * function is called. ··· 218 231 return CVMX_CMD_QUEUE_SUCCESS; 219 232 } 220 233 221 - /** 234 + /* 222 235 * Return the number of command words pending in the queue. This 223 236 * function may be relatively slow for some hardware units. 224 237 * ··· 274 287 return CVMX_CMD_QUEUE_INVALID_PARAM; 275 288 } 276 289 277 - /** 290 + /* 278 291 * Return the command buffer to be written to. The purpose of this 279 292 * function is to allow CVMX routine access t othe low level buffer 280 293 * for initial hardware setup. User applications should not call this
+4 -4
arch/mips/cavium-octeon/executive/cvmx-helper-board.c
··· 44 44 #include <asm/octeon/cvmx-gmxx-defs.h> 45 45 #include <asm/octeon/cvmx-asxx-defs.h> 46 46 47 - /** 47 + /* 48 48 * Return the MII PHY address associated with the given IPD 49 49 * port. A result of -1 means there isn't a MII capable PHY 50 50 * connected to this port. On chips supporting multiple MII ··· 189 189 return -1; 190 190 } 191 191 192 - /** 192 + /* 193 193 * This function is the board specific method of determining an 194 194 * ethernet ports link speed. Most Octeon boards have Marvell PHYs 195 195 * and are handled by the fall through case. This function must be ··· 274 274 return result; 275 275 } 276 276 277 - /** 277 + /* 278 278 * This function is called by cvmx_helper_interface_probe() after it 279 279 * determines the number of ports Octeon can support on a specific 280 280 * interface. This function is the per board location to override ··· 320 320 return supported_ports; 321 321 } 322 322 323 - /** 323 + /* 324 324 * Get the clock type used for the USB block based on board type. 325 325 * Used by the USB code for auto configuration of clock type. 326 326 *
+6 -6
arch/mips/cavium-octeon/executive/cvmx-helper-rgmii.c
··· 42 42 #include <asm/octeon/cvmx-asxx-defs.h> 43 43 #include <asm/octeon/cvmx-dbg-defs.h> 44 44 45 - /** 45 + /* 46 46 * Probe RGMII ports and determine the number present 47 47 * 48 48 * @interface: Interface to probe ··· 88 88 return num_ports; 89 89 } 90 90 91 - /** 91 + /* 92 92 * Put an RGMII interface in loopback mode. Internal packets sent 93 93 * out will be received back again on the same port. Externally 94 94 * received packets will echo back out. ··· 120 120 cvmx_write_csr(CVMX_GMXX_PRTX_CFG(index, interface), gmx_cfg.u64); 121 121 } 122 122 123 - /** 123 + /* 124 124 * Workaround ASX setup errata with CN38XX pass1 125 125 * 126 126 * @interface: Interface to setup ··· 148 148 return 0; 149 149 } 150 150 151 - /** 151 + /* 152 152 * Configure all of the ASX, GMX, and PKO registers required 153 153 * to get RGMII to function on the supplied interface. 154 154 * ··· 251 251 return 0; 252 252 } 253 253 254 - /** 254 + /* 255 255 * Return the link state of an IPD/PKO port as returned by 256 256 * auto negotiation. The result of this function may not match 257 257 * Octeon's link config if auto negotiation has changed since ··· 280 280 return __cvmx_helper_board_link_get(ipd_port); 281 281 } 282 282 283 - /** 283 + /* 284 284 * Configure an IPD/PKO port for the specified link state. This 285 285 * function does not influence auto negotiation at the PHY level. 286 286 * The passed link state must always match the link state returned
+4 -4
arch/mips/cavium-octeon/executive/cvmx-helper-xaui.c
··· 54 54 return 1; 55 55 } 56 56 57 - /** 57 + /* 58 58 * Probe a XAUI interface and determine the number of ports 59 59 * connected to it. The XAUI interface should still be down 60 60 * after this call. ··· 102 102 return __cvmx_helper_xaui_enumerate(interface); 103 103 } 104 104 105 - /** 105 + /* 106 106 * Bringup and enable a XAUI interface. After this call packet 107 107 * I/O should be fully functional. This is called with IPD 108 108 * enabled but PKO disabled. ··· 249 249 return 0; 250 250 } 251 251 252 - /** 252 + /* 253 253 * Return the link state of an IPD/PKO port as returned by 254 254 * auto negotiation. The result of this function may not match 255 255 * Octeon's link config if auto negotiation has changed since ··· 288 288 return result; 289 289 } 290 290 291 - /** 291 + /* 292 292 * Configure an IPD/PKO port for the specified link state. This 293 293 * function does not influence auto negotiation at the PHY level. 294 294 * The passed link state must always match the link state returned
+12 -5
arch/mips/cavium-octeon/executive/cvmx-interrupt-decodes.c
··· 46 46 47 47 48 48 /** 49 - * __cvmx_interrupt_gmxx_rxx_int_en_enable enables all interrupt bits in cvmx_gmxx_rxx_int_en_t 49 + * __cvmx_interrupt_gmxx_rxx_int_en_enable - enable all interrupt bits in cvmx_gmxx_rxx_int_en_t 50 + * @index: interrupt register offset 51 + * @block: interrupt register block_id 50 52 */ 51 53 void __cvmx_interrupt_gmxx_rxx_int_en_enable(int index, int block) 52 54 { ··· 229 227 cvmx_write_csr(CVMX_GMXX_RXX_INT_EN(index, block), gmx_rx_int_en.u64); 230 228 } 231 229 /** 232 - * __cvmx_interrupt_pcsx_intx_en_reg_enable enables all interrupt bits in cvmx_pcsx_intx_en_reg_t 230 + * __cvmx_interrupt_pcsx_intx_en_reg_enable - enable all interrupt bits in cvmx_pcsx_intx_en_reg_t 231 + * @index: interrupt register offset 232 + * @block: interrupt register block_id 233 233 */ 234 234 void __cvmx_interrupt_pcsx_intx_en_reg_enable(int index, int block) 235 235 { ··· 272 268 cvmx_write_csr(CVMX_PCSX_INTX_EN_REG(index, block), pcs_int_en_reg.u64); 273 269 } 274 270 /** 275 - * __cvmx_interrupt_pcsxx_int_en_reg_enable enables all interrupt bits in cvmx_pcsxx_int_en_reg_t 271 + * __cvmx_interrupt_pcsxx_int_en_reg_enable - enable all interrupt bits in cvmx_pcsxx_int_en_reg_t 272 + * @index: interrupt register block_id 276 273 */ 277 274 void __cvmx_interrupt_pcsxx_int_en_reg_enable(int index) 278 275 { ··· 303 298 } 304 299 305 300 /** 306 - * __cvmx_interrupt_spxx_int_msk_enable enables all interrupt bits in cvmx_spxx_int_msk_t 301 + * __cvmx_interrupt_spxx_int_msk_enable - enable all interrupt bits in cvmx_spxx_int_msk_t 302 + * @index: interrupt register block_id 307 303 */ 308 304 void __cvmx_interrupt_spxx_int_msk_enable(int index) 309 305 { ··· 343 337 cvmx_write_csr(CVMX_SPXX_INT_MSK(index), spx_int_msk.u64); 344 338 } 345 339 /** 346 - * __cvmx_interrupt_stxx_int_msk_enable enables all interrupt bits in cvmx_stxx_int_msk_t 340 + * __cvmx_interrupt_stxx_int_msk_enable - enable all interrupt bits in cvmx_stxx_int_msk_t 341 + * @index: interrupt register block_id 347 342 */ 348 343 void __cvmx_interrupt_stxx_int_msk_enable(int index) 349 344 {
+4 -5
arch/mips/cavium-octeon/executive/cvmx-l2c.c
··· 281 281 } 282 282 } 283 283 284 - /** 284 + /* 285 285 * @INTERNAL 286 286 * Helper function use to fault in cache lines for L2 cache locking 287 287 * ··· 575 575 }; 576 576 577 577 578 - /** 578 + /* 579 579 * @INTERNAL 580 580 * Function to read a L2C tag. This code make the current core 581 581 * the 'debug core' for the L2. This code must only be executed by ··· 764 764 CVMX_CACHE_LINE_SIZE; 765 765 } 766 766 767 - /** 767 + /* 768 768 * Return log base 2 of the number of sets in the L2 cache 769 - * Returns 770 769 */ 771 770 int cvmx_l2c_get_set_bits(void) 772 771 { ··· 856 857 return l2_assoc; 857 858 } 858 859 859 - /** 860 + /* 860 861 * Flush a line from the L2 cache 861 862 * This should only be called from one core at a time, as this routine 862 863 * sets the core to the 'debug' core in order to flush the line.
+11 -11
arch/mips/cavium-octeon/executive/cvmx-pko.c
··· 35 35 #include <asm/octeon/cvmx-pko.h> 36 36 #include <asm/octeon/cvmx-helper.h> 37 37 38 - /** 38 + /* 39 39 * Internal state of packet output 40 40 */ 41 41 ··· 176 176 } 177 177 } 178 178 179 - /** 179 + /* 180 180 * Call before any other calls to initialize the packet 181 181 * output system. This does chip global config, and should only be 182 182 * done by one core. ··· 229 229 } 230 230 } 231 231 232 - /** 232 + /* 233 233 * This function does per-core initialization required by the PKO routines. 234 234 * This must be called on all cores that will do packet output, and must 235 235 * be called after the FPA has been initialized and filled with pages. ··· 243 243 return 0; 244 244 } 245 245 246 - /** 246 + /* 247 247 * Enables the packet output hardware. It must already be 248 248 * configured. 249 249 */ ··· 266 266 cvmx_write_csr(CVMX_PKO_REG_FLAGS, flags.u64); 267 267 } 268 268 269 - /** 269 + /* 270 270 * Disables the packet output. Does not affect any configuration. 271 271 */ 272 272 void cvmx_pko_disable(void) ··· 278 278 } 279 279 EXPORT_SYMBOL_GPL(cvmx_pko_disable); 280 280 281 - /** 281 + /* 282 282 * Reset the packet output. 283 283 */ 284 284 static void __cvmx_pko_reset(void) ··· 289 289 cvmx_write_csr(CVMX_PKO_REG_FLAGS, pko_reg_flags.u64); 290 290 } 291 291 292 - /** 292 + /* 293 293 * Shutdown and free resources required by packet output. 294 294 */ 295 295 void cvmx_pko_shutdown(void) ··· 320 320 } 321 321 EXPORT_SYMBOL_GPL(cvmx_pko_shutdown); 322 322 323 - /** 323 + /* 324 324 * Configure a output port and the associated queues for use. 325 325 * 326 326 * @port: Port to configure. ··· 548 548 } 549 549 550 550 #ifdef PKO_DEBUG 551 - /** 551 + /* 552 552 * Show map of ports -> queues for different cores. 553 553 */ 554 554 void cvmx_pko_show_queue_map() ··· 573 573 } 574 574 #endif 575 575 576 - /** 576 + /* 577 577 * Rate limit a PKO port to a max packets/sec. This function is only 578 578 * supported on CN51XX and higher, excluding CN58XX. 579 579 * ··· 606 606 return 0; 607 607 } 608 608 609 - /** 609 + /* 610 610 * Rate limit a PKO port to a max bits/sec. This function is only 611 611 * supported on CN51XX and higher, excluding CN58XX. 612 612 *
+10 -10
arch/mips/cavium-octeon/executive/cvmx-spi.c
··· 66 66 .interface_up_cb = cvmx_spi_interface_up_cb 67 67 }; 68 68 69 - /** 69 + /* 70 70 * Get current SPI4 initialization callbacks 71 71 * 72 72 * @callbacks: Pointer to the callbacks structure.to fill ··· 78 78 memcpy(callbacks, &cvmx_spi_callbacks, sizeof(cvmx_spi_callbacks)); 79 79 } 80 80 81 - /** 81 + /* 82 82 * Set new SPI4 initialization callbacks 83 83 * 84 84 * @new_callbacks: Pointer to an updated callbacks structure. ··· 88 88 memcpy(&cvmx_spi_callbacks, new_callbacks, sizeof(cvmx_spi_callbacks)); 89 89 } 90 90 91 - /** 91 + /* 92 92 * Initialize and start the SPI interface. 93 93 * 94 94 * @interface: The identifier of the packet interface to configure and ··· 133 133 return res; 134 134 } 135 135 136 - /** 136 + /* 137 137 * This routine restarts the SPI interface after it has lost synchronization 138 138 * with its correspondent system. 139 139 * ··· 179 179 } 180 180 EXPORT_SYMBOL_GPL(cvmx_spi_restart_interface); 181 181 182 - /** 182 + /* 183 183 * Callback to perform SPI4 reset 184 184 * 185 185 * @interface: The identifier of the packet interface to configure and ··· 294 294 return 0; 295 295 } 296 296 297 - /** 297 + /* 298 298 * Callback to setup calendar and miscellaneous settings before clock detection 299 299 * 300 300 * @interface: The identifier of the packet interface to configure and ··· 413 413 return 0; 414 414 } 415 415 416 - /** 416 + /* 417 417 * Callback to perform clock detection 418 418 * 419 419 * @interface: The identifier of the packet interface to configure and ··· 491 491 return 0; 492 492 } 493 493 494 - /** 494 + /* 495 495 * Callback to perform link training 496 496 * 497 497 * @interface: The identifier of the packet interface to configure and ··· 560 560 return 0; 561 561 } 562 562 563 - /** 563 + /* 564 564 * Callback to perform calendar data synchronization 565 565 * 566 566 * @interface: The identifier of the packet interface to configure and ··· 617 617 return 0; 618 618 } 619 619 620 - /** 620 + /* 621 621 * Callback to handle interface up 622 622 * 623 623 * @interface: The identifier of the packet interface to configure and
+1 -1
arch/mips/cavium-octeon/flash_setup.c
··· 62 62 up(&octeon_bootbus_sem); 63 63 } 64 64 65 - /** 65 + /* 66 66 * Module/ driver initialization. 67 67 * 68 68 * Returns Zero on success
+23 -58
arch/mips/cavium-octeon/setup.c
··· 284 284 285 285 #endif /* CONFIG_KEXEC */ 286 286 287 - #ifdef CONFIG_CAVIUM_RESERVE32 288 - uint64_t octeon_reserve32_memory; 289 - EXPORT_SYMBOL(octeon_reserve32_memory); 290 - #endif 291 - 292 287 #ifdef CONFIG_KEXEC 293 288 /* crashkernel cmdline parameter is parsed _after_ memory setup 294 289 * we also parse it here (workaround for EHB5200) */ ··· 295 300 extern asmlinkage void handle_int(void); 296 301 297 302 /** 298 - * Return non zero if we are currently running in the Octeon simulator 303 + * octeon_is_simulation - Return non-zero if we are currently running 304 + * in the Octeon simulator 299 305 * 300 - * Returns 306 + * Return: non-0 if running in the Octeon simulator, 0 otherwise 301 307 */ 302 308 int octeon_is_simulation(void) 303 309 { ··· 307 311 EXPORT_SYMBOL(octeon_is_simulation); 308 312 309 313 /** 310 - * Return true if Octeon is in PCI Host mode. This means 314 + * octeon_is_pci_host - Return true if Octeon is in PCI Host mode. This means 311 315 * Linux can control the PCI bus. 312 316 * 313 - * Returns Non zero if Octeon in host mode. 317 + * Return: Non-zero if Octeon is in host mode. 314 318 */ 315 319 int octeon_is_pci_host(void) 316 320 { ··· 322 326 } 323 327 324 328 /** 325 - * Get the clock rate of Octeon 329 + * octeon_get_clock_rate - Get the clock rate of Octeon 326 330 * 327 - * Returns Clock rate in HZ 331 + * Return: Clock rate in HZ 328 332 */ 329 333 uint64_t octeon_get_clock_rate(void) 330 334 { ··· 344 348 345 349 346 350 /** 347 - * Write to the LCD display connected to the bootbus. This display 348 - * exists on most Cavium evaluation boards. If it doesn't exist, then 349 - * this function doesn't do anything. 350 - * 351 + * octeon_write_lcd - Write to the LCD display connected to the bootbus. 351 352 * @s: String to write 353 + * 354 + * This display exists on most Cavium evaluation boards. If it doesn't exist, 355 + * then this function doesn't do anything. 352 356 */ 353 357 static void octeon_write_lcd(const char *s) 354 358 { ··· 368 372 } 369 373 370 374 /** 371 - * Return the console uart passed by the bootloader 375 + * octeon_get_boot_uart - Return the console uart passed by the bootloader 372 376 * 373 - * Returns uart (0 or 1) 377 + * Return: uart number (0 or 1) 374 378 */ 375 379 static int octeon_get_boot_uart(void) 376 380 { ··· 379 383 } 380 384 381 385 /** 382 - * Get the coremask Linux was booted on. 386 + * octeon_get_boot_coremask - Get the coremask Linux was booted on. 383 387 * 384 - * Returns Core mask 388 + * Return: Core mask 385 389 */ 386 390 int octeon_get_boot_coremask(void) 387 391 { ··· 389 393 } 390 394 391 395 /** 392 - * Check the hardware BIST results for a CPU 396 + * octeon_check_cpu_bist - Check the hardware BIST results for a CPU 393 397 */ 394 398 void octeon_check_cpu_bist(void) 395 399 { ··· 420 424 } 421 425 422 426 /** 423 - * Reboot Octeon 427 + * octeon_restart - Reboot Octeon 424 428 * 425 429 * @command: Command to pass to the bootloader. Currently ignored. 426 430 */ ··· 445 449 446 450 447 451 /** 448 - * Permanently stop a core. 452 + * octeon_kill_core - Permanently stop a core. 449 453 * 450 454 * @arg: Ignored. 451 455 */ ··· 465 469 466 470 467 471 /** 468 - * Halt the system 472 + * octeon_halt - Halt the system 469 473 */ 470 474 static void octeon_halt(void) 471 475 { ··· 508 512 } 509 513 510 514 /** 511 - * Return a string representing the system type 515 + * octeon_board_type_string - Return a string representing the system type 512 516 * 513 - * Returns 517 + * Return: system type string 514 518 */ 515 519 const char *octeon_board_type_string(void) 516 520 { ··· 651 655 } 652 656 653 657 /** 654 - * Early entry point for arch setup 658 + * prom_init - Early entry point for arch setup 655 659 */ 656 660 void __init prom_init(void) 657 661 { ··· 661 665 int i; 662 666 u64 t; 663 667 int argc; 664 - #ifdef CONFIG_CAVIUM_RESERVE32 665 - int64_t addr = -1; 666 - #endif 668 + 667 669 /* 668 670 * The bootloader passes a pointer to the boot descriptor in 669 671 * $a3, this is available as fw_arg3. ··· 776 782 cvmx_write_csr(CVMX_LED_UDD_DATX(1), 0); 777 783 cvmx_write_csr(CVMX_LED_EN, 1); 778 784 } 779 - #ifdef CONFIG_CAVIUM_RESERVE32 780 - /* 781 - * We need to temporarily allocate all memory in the reserve32 782 - * region. This makes sure the kernel doesn't allocate this 783 - * memory when it is getting memory from the 784 - * bootloader. Later, after the memory allocations are 785 - * complete, the reserve32 will be freed. 786 - * 787 - * Allocate memory for RESERVED32 aligned on 2MB boundary. This 788 - * is in case we later use hugetlb entries with it. 789 - */ 790 - addr = cvmx_bootmem_phy_named_block_alloc(CONFIG_CAVIUM_RESERVE32 << 20, 791 - 0, 0, 2 << 20, 792 - "CAVIUM_RESERVE32", 0); 793 - if (addr < 0) 794 - pr_err("Failed to allocate CAVIUM_RESERVE32 memory area\n"); 795 - else 796 - octeon_reserve32_memory = addr; 797 - #endif 798 785 799 786 #ifdef CONFIG_CAVIUM_OCTEON_LOCK_L2 800 787 if (cvmx_read_csr(CVMX_L2D_FUS3) & (3ull << 34)) { ··· 1052 1077 } 1053 1078 cvmx_bootmem_unlock(); 1054 1079 #endif /* CONFIG_CRASH_DUMP */ 1055 - 1056 - #ifdef CONFIG_CAVIUM_RESERVE32 1057 - /* 1058 - * Now that we've allocated the kernel memory it is safe to 1059 - * free the reserved region. We free it here so that builtin 1060 - * drivers can use the memory. 1061 - */ 1062 - if (octeon_reserve32_memory) 1063 - cvmx_bootmem_free_named("CAVIUM_RESERVE32"); 1064 - #endif /* CONFIG_CAVIUM_RESERVE32 */ 1065 1080 1066 1081 if (total == 0) 1067 1082 panic("Unable to allocate memory from "
+6 -8
arch/mips/cavium-octeon/smp.c
··· 91 91 return IRQ_HANDLED; 92 92 } 93 93 94 - /** 94 + /* 95 95 * Cause the function described by call_data to be executed on the passed 96 96 * cpu. When the function has finished, increment the finished field of 97 97 * call_data. ··· 115 115 octeon_send_ipi_single(i, action); 116 116 } 117 117 118 - /** 118 + /* 119 119 * Detect available CPUs, populate cpu_possible_mask 120 120 */ 121 121 static void octeon_smp_hotplug_setup(void) ··· 202 202 } 203 203 #endif /* CONFIG_RELOCATABLE */ 204 204 205 - /** 205 + /* 206 206 * Firmware CPU startup hook 207 - * 208 207 */ 209 208 static int octeon_boot_secondary(int cpu, struct task_struct *idle) 210 209 { ··· 231 232 return 0; 232 233 } 233 234 234 - /** 235 + /* 235 236 * After we've done initial boot, this function is called to allow the 236 237 * board code to clean up state, if needed 237 238 */ ··· 249 250 octeon_irq_setup_secondary(); 250 251 } 251 252 252 - /** 253 + /* 253 254 * Callout to firmware before smp_init 254 - * 255 255 */ 256 256 static void __init octeon_prepare_cpus(unsigned int max_cpus) 257 257 { ··· 266 268 } 267 269 } 268 270 269 - /** 271 + /* 270 272 * Last chance for the board code to finish SMP initialization before 271 273 * the CPU is "online". 272 274 */
+53
arch/mips/configs/generic/board-marduk.config
··· 1 + CONFIG_FIT_IMAGE_FDT_MARDUK=y 2 + 3 + CONFIG_SCSI=y 4 + CONFIG_BLK_DEV_SD=y 5 + 6 + CONFIG_CLKSRC_PISTACHIO=y 7 + 8 + CONFIG_COMMON_CLK_PISTACHIO=y 9 + 10 + CONFIG_DMADEVICES=y 11 + CONFIG_IMG_MDC_DMA=y 12 + 13 + CONFIG_GPIOLIB=y 14 + CONFIG_GPIO_SYSFS=y 15 + CONFIG_GPIO_PCH=y 16 + 17 + CONFIG_I2C=y 18 + CONFIG_I2C_IMG=y 19 + 20 + CONFIG_MMC=y 21 + CONFIG_MMC_SDHCI=y 22 + CONFIG_MMC_DW=y 23 + CONFIG_MMC_DW_PLTFM=y 24 + 25 + CONFIG_NETDEVICES=y 26 + CONFIG_STMMAC_ETH=y 27 + CONFIG_STMMAC_PLATFORM=y 28 + 29 + CONFIG_PHY_PISTACHIO_USB=y 30 + 31 + CONFIG_PINCTRL=y 32 + CONFIG_PINCTRL_PISTACHIO=y 33 + 34 + CONFIG_RESET_PISTACHIO=y 35 + 36 + CONFIG_SERIAL_8250=y 37 + CONFIG_SERIAL_8250_CONSOLE=y 38 + CONFIG_SERIAL_OF_PLATFORM=y 39 + CONFIG_SERIAL_8250_DW=y 40 + 41 + CONFIG_SPI=y 42 + CONFIG_SRAM=y 43 + 44 + CONFIG_USB=y 45 + CONFIG_USB_EHCI_HCD=y 46 + CONFIG_USB_OHCI_HCD=y 47 + CONFIG_USB_DWC2=y 48 + 49 + CONFIG_CRYPTO_DEV_IMGTEC_HASH=y 50 + CONFIG_IMGPDC_WDT=y 51 + CONFIG_IR_IMG=y 52 + CONFIG_CC10001_ADC=y 53 + CONFIG_SND_SOC_IMG=y
-316
arch/mips/configs/pistachio_defconfig
··· 1 - # CONFIG_LOCALVERSION_AUTO is not set 2 - CONFIG_DEFAULT_HOSTNAME="localhost" 3 - CONFIG_SYSVIPC=y 4 - CONFIG_NO_HZ=y 5 - CONFIG_HIGH_RES_TIMERS=y 6 - CONFIG_PREEMPT_VOLUNTARY=y 7 - CONFIG_IKCONFIG=m 8 - CONFIG_IKCONFIG_PROC=y 9 - CONFIG_LOG_BUF_SHIFT=18 10 - CONFIG_CGROUPS=y 11 - CONFIG_CGROUP_SCHED=y 12 - CONFIG_CFS_BANDWIDTH=y 13 - CONFIG_CGROUP_FREEZER=y 14 - CONFIG_NAMESPACES=y 15 - CONFIG_USER_NS=y 16 - CONFIG_BLK_DEV_INITRD=y 17 - # CONFIG_RD_BZIP2 is not set 18 - # CONFIG_RD_LZMA is not set 19 - # CONFIG_RD_LZO is not set 20 - # CONFIG_RD_LZ4 is not set 21 - CONFIG_CC_OPTIMIZE_FOR_SIZE=y 22 - CONFIG_EMBEDDED=y 23 - # CONFIG_COMPAT_BRK is not set 24 - CONFIG_PROFILING=y 25 - CONFIG_MACH_PISTACHIO=y 26 - CONFIG_MIPS_CPS=y 27 - CONFIG_NR_CPUS=4 28 - CONFIG_PM_DEBUG=y 29 - CONFIG_PM_ADVANCED_DEBUG=y 30 - CONFIG_CPU_IDLE=y 31 - # CONFIG_MIPS_CPS_CPUIDLE is not set 32 - CONFIG_MODULES=y 33 - CONFIG_MODULE_UNLOAD=y 34 - CONFIG_MODULE_FORCE_UNLOAD=y 35 - CONFIG_PARTITION_ADVANCED=y 36 - # CONFIG_COMPACTION is not set 37 - CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 38 - CONFIG_ZSMALLOC=y 39 - CONFIG_NET=y 40 - CONFIG_PACKET=y 41 - CONFIG_UNIX=y 42 - CONFIG_NET_KEY=m 43 - CONFIG_INET=y 44 - CONFIG_IP_MULTICAST=y 45 - CONFIG_IP_ADVANCED_ROUTER=y 46 - CONFIG_IP_MULTIPLE_TABLES=y 47 - CONFIG_IP_ROUTE_MULTIPATH=y 48 - CONFIG_IP_ROUTE_VERBOSE=y 49 - CONFIG_IP_PNP=y 50 - CONFIG_IP_PNP_DHCP=y 51 - CONFIG_IP_MROUTE=y 52 - CONFIG_IP_PIMSM_V1=y 53 - CONFIG_IP_PIMSM_V2=y 54 - CONFIG_SYN_COOKIES=y 55 - CONFIG_INET_AH=m 56 - CONFIG_INET_ESP=m 57 - CONFIG_INET_IPCOMP=m 58 - CONFIG_INET_XFRM_MODE_TRANSPORT=m 59 - CONFIG_INET_XFRM_MODE_TUNNEL=m 60 - CONFIG_INET_XFRM_MODE_BEET=m 61 - # CONFIG_INET_DIAG is not set 62 - CONFIG_TCP_CONG_ADVANCED=y 63 - # CONFIG_TCP_CONG_BIC is not set 64 - # CONFIG_TCP_CONG_WESTWOOD is not set 65 - # CONFIG_TCP_CONG_HTCP is not set 66 - CONFIG_TCP_CONG_LP=m 67 - CONFIG_TCP_MD5SIG=y 68 - CONFIG_INET6_AH=m 69 - CONFIG_INET6_ESP=m 70 - CONFIG_INET6_XFRM_MODE_TRANSPORT=m 71 - CONFIG_INET6_XFRM_MODE_TUNNEL=m 72 - CONFIG_INET6_XFRM_MODE_BEET=m 73 - CONFIG_IPV6_SIT=m 74 - CONFIG_NETWORK_SECMARK=y 75 - CONFIG_NETFILTER=y 76 - # CONFIG_BRIDGE_NETFILTER is not set 77 - CONFIG_NF_CONNTRACK=y 78 - CONFIG_NF_CT_NETLINK=y 79 - CONFIG_NETFILTER_XT_MARK=m 80 - CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y 81 - CONFIG_NETFILTER_XT_TARGET_DSCP=y 82 - CONFIG_NETFILTER_XT_TARGET_NFLOG=y 83 - CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y 84 - CONFIG_NETFILTER_XT_TARGET_SECMARK=y 85 - CONFIG_NETFILTER_XT_TARGET_TCPMSS=m 86 - CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y 87 - CONFIG_NETFILTER_XT_MATCH_DSCP=y 88 - CONFIG_NETFILTER_XT_MATCH_POLICY=y 89 - CONFIG_NETFILTER_XT_MATCH_STATE=y 90 - CONFIG_NF_NAT_IPV4=m 91 - CONFIG_IP_NF_IPTABLES=y 92 - CONFIG_IP_NF_FILTER=y 93 - CONFIG_IP_NF_TARGET_REJECT=y 94 - CONFIG_IP_NF_MANGLE=y 95 - CONFIG_NF_NAT_IPV6=m 96 - CONFIG_IP6_NF_IPTABLES=m 97 - CONFIG_IP6_NF_MATCH_IPV6HEADER=m 98 - CONFIG_IP6_NF_FILTER=m 99 - CONFIG_IP6_NF_TARGET_REJECT=m 100 - CONFIG_IP6_NF_MANGLE=m 101 - CONFIG_BRIDGE=m 102 - CONFIG_VLAN_8021Q=m 103 - CONFIG_NET_SCHED=y 104 - CONFIG_NET_SCH_HTB=m 105 - CONFIG_NET_SCH_CODEL=m 106 - CONFIG_NET_SCH_FQ_CODEL=m 107 - CONFIG_NET_CLS_U32=m 108 - CONFIG_CLS_U32_MARK=y 109 - CONFIG_BT=m 110 - CONFIG_BT_RFCOMM=m 111 - CONFIG_BT_HCIBTUSB=m 112 - CONFIG_BT_HCIBFUSB=m 113 - CONFIG_BT_HCIVHCI=m 114 - CONFIG_CFG80211=m 115 - CONFIG_NL80211_TESTMODE=y 116 - CONFIG_CFG80211_DEBUGFS=y 117 - CONFIG_CFG80211_WEXT=y 118 - CONFIG_MAC80211=m 119 - CONFIG_MAC80211_LEDS=y 120 - CONFIG_MAC80211_DEBUGFS=y 121 - CONFIG_MAC80211_DEBUG_MENU=y 122 - CONFIG_MAC80211_VERBOSE_DEBUG=y 123 - CONFIG_RFKILL=y 124 - CONFIG_DEVTMPFS=y 125 - CONFIG_DEVTMPFS_MOUNT=y 126 - CONFIG_DEBUG_DEVRES=y 127 - CONFIG_CONNECTOR=y 128 - CONFIG_MTD=y 129 - CONFIG_MTD_BLOCK=y 130 - CONFIG_MTD_SPI_NOR=y 131 - CONFIG_MTD_UBI=y 132 - CONFIG_MTD_UBI_BLOCK=y 133 - CONFIG_ZRAM=m 134 - CONFIG_BLK_DEV_LOOP=y 135 - CONFIG_SCSI=y 136 - CONFIG_BLK_DEV_SD=y 137 - CONFIG_BLK_DEV_SR=m 138 - CONFIG_SCSI_SPI_ATTRS=y 139 - CONFIG_MD=y 140 - CONFIG_BLK_DEV_DM=y 141 - CONFIG_DM_CRYPT=y 142 - CONFIG_DM_VERITY=y 143 - CONFIG_NETDEVICES=y 144 - CONFIG_TUN=m 145 - CONFIG_VETH=m 146 - # CONFIG_NET_VENDOR_MARVELL is not set 147 - # CONFIG_NET_VENDOR_MICREL is not set 148 - # CONFIG_NET_VENDOR_MICROCHIP is not set 149 - # CONFIG_NET_VENDOR_NATSEMI is not set 150 - # CONFIG_NET_VENDOR_SEEQ is not set 151 - # CONFIG_NET_VENDOR_SMSC is not set 152 - CONFIG_STMMAC_ETH=y 153 - # CONFIG_NET_VENDOR_VIA is not set 154 - CONFIG_PPP=m 155 - CONFIG_PPP_ASYNC=m 156 - CONFIG_USB_PEGASUS=m 157 - CONFIG_USB_RTL8150=m 158 - CONFIG_USB_RTL8152=m 159 - CONFIG_USB_NET_DM9601=m 160 - CONFIG_USB_NET_SMSC75XX=m 161 - CONFIG_USB_NET_SMSC95XX=m 162 - CONFIG_USB_NET_MCS7830=m 163 - # CONFIG_USB_NET_CDC_SUBSET is not set 164 - # CONFIG_USB_NET_ZAURUS is not set 165 - CONFIG_HOSTAP=m 166 - CONFIG_HOSTAP_FIRMWARE=y 167 - CONFIG_HOSTAP_FIRMWARE_NVRAM=y 168 - CONFIG_LIBERTAS_THINFIRM=m 169 - CONFIG_RT2X00=m 170 - CONFIG_RT2800USB=m 171 - CONFIG_MAC80211_HWSIM=m 172 - CONFIG_USB_NET_RNDIS_WLAN=m 173 - CONFIG_INPUT_EVDEV=y 174 - # CONFIG_KEYBOARD_ATKBD is not set 175 - CONFIG_KEYBOARD_GPIO=y 176 - # CONFIG_INPUT_MOUSE is not set 177 - # CONFIG_SERIO is not set 178 - # CONFIG_VT is not set 179 - # CONFIG_LEGACY_PTYS is not set 180 - CONFIG_SERIAL_8250=y 181 - # CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set 182 - CONFIG_SERIAL_8250_CONSOLE=y 183 - CONFIG_SERIAL_8250_DW=y 184 - CONFIG_SERIAL_OF_PLATFORM=y 185 - CONFIG_HW_RANDOM=y 186 - CONFIG_TCG_TPM=y 187 - CONFIG_I2C=y 188 - CONFIG_I2C_CHARDEV=m 189 - CONFIG_I2C_IMG=y 190 - CONFIG_I2C_STUB=m 191 - CONFIG_SPI=y 192 - CONFIG_SPI_BITBANG=m 193 - CONFIG_SPI_IMG_SPFI=y 194 - CONFIG_SPI_SPIDEV=y 195 - CONFIG_DEBUG_GPIO=y 196 - CONFIG_GPIO_SYSFS=y 197 - CONFIG_POWER_SUPPLY=y 198 - CONFIG_THERMAL=y 199 - CONFIG_WATCHDOG=y 200 - CONFIG_IMGPDC_WDT=y 201 - CONFIG_REGULATOR_FIXED_VOLTAGE=y 202 - CONFIG_REGULATOR_GPIO=y 203 - CONFIG_RC_CORE=y 204 - CONFIG_RC_DEVICES=y 205 - CONFIG_IR_IMG=y 206 - CONFIG_IR_IMG_NEC=y 207 - CONFIG_IR_IMG_JVC=y 208 - CONFIG_IR_IMG_SONY=y 209 - CONFIG_IR_IMG_SHARP=y 210 - CONFIG_IR_IMG_SANYO=y 211 - CONFIG_IR_IMG_RC5=y 212 - CONFIG_IR_IMG_RC6=y 213 - CONFIG_MEDIA_SUPPORT=y 214 - CONFIG_FB=y 215 - CONFIG_FB_MODE_HELPERS=y 216 - # CONFIG_LCD_CLASS_DEVICE is not set 217 - CONFIG_BACKLIGHT_CLASS_DEVICE=y 218 - CONFIG_SOUND=y 219 - CONFIG_SND=y 220 - CONFIG_SND_HRTIMER=m 221 - CONFIG_SND_DYNAMIC_MINORS=y 222 - CONFIG_SND_SEQUENCER=m 223 - CONFIG_SND_SEQ_DUMMY=m 224 - # CONFIG_SND_SPI is not set 225 - CONFIG_SND_USB_AUDIO=m 226 - CONFIG_USB=y 227 - CONFIG_USB_ANNOUNCE_NEW_DEVICES=y 228 - # CONFIG_USB_DEFAULT_PERSIST is not set 229 - CONFIG_USB_MON=y 230 - CONFIG_USB_EHCI_HCD=y 231 - CONFIG_USB_EHCI_ROOT_HUB_TT=y 232 - CONFIG_USB_ACM=y 233 - CONFIG_USB_STORAGE=y 234 - CONFIG_USB_DWC2=y 235 - CONFIG_USB_SERIAL=y 236 - CONFIG_USB_SERIAL_GENERIC=y 237 - CONFIG_USB_SERIAL_CP210X=m 238 - CONFIG_USB_SERIAL_FTDI_SIO=m 239 - CONFIG_USB_SERIAL_KEYSPAN=m 240 - CONFIG_USB_SERIAL_PL2303=m 241 - CONFIG_USB_SERIAL_OTI6858=m 242 - CONFIG_USB_SERIAL_QUALCOMM=m 243 - CONFIG_USB_SERIAL_SIERRAWIRELESS=m 244 - CONFIG_USB_SERIAL_OPTION=m 245 - CONFIG_MMC=y 246 - CONFIG_MMC_BLOCK_MINORS=16 247 - CONFIG_MMC_TEST=m 248 - CONFIG_MMC_DW=y 249 - CONFIG_NEW_LEDS=y 250 - CONFIG_LEDS_CLASS=y 251 - CONFIG_RTC_CLASS=y 252 - CONFIG_DMADEVICES=y 253 - CONFIG_IMG_MDC_DMA=y 254 - CONFIG_STAGING=y 255 - CONFIG_ASHMEM=y 256 - # CONFIG_IOMMU_SUPPORT is not set 257 - CONFIG_MEMORY=y 258 - CONFIG_IIO=y 259 - CONFIG_CC10001_ADC=y 260 - CONFIG_PWM=y 261 - CONFIG_PWM_IMG=y 262 - CONFIG_PHY_PISTACHIO_USB=y 263 - CONFIG_ANDROID=y 264 - CONFIG_EXT4_FS=y 265 - CONFIG_EXT4_FS_POSIX_ACL=y 266 - CONFIG_EXT4_FS_SECURITY=y 267 - # CONFIG_DNOTIFY is not set 268 - CONFIG_FUSE_FS=m 269 - CONFIG_ISO9660_FS=m 270 - CONFIG_JOLIET=y 271 - CONFIG_ZISOFS=y 272 - CONFIG_UDF_FS=m 273 - CONFIG_VFAT_FS=m 274 - CONFIG_TMPFS=y 275 - CONFIG_TMPFS_POSIX_ACL=y 276 - CONFIG_ECRYPT_FS=y 277 - CONFIG_HFSPLUS_FS=m 278 - CONFIG_UBIFS_FS=y 279 - CONFIG_SQUASHFS=y 280 - CONFIG_SQUASHFS_FILE_DIRECT=y 281 - CONFIG_SQUASHFS_LZO=y 282 - CONFIG_PSTORE=y 283 - CONFIG_PSTORE_CONSOLE=y 284 - CONFIG_PSTORE_RAM=y 285 - CONFIG_NFS_FS=y 286 - CONFIG_ROOT_NFS=y 287 - CONFIG_NLS_DEFAULT="utf8" 288 - CONFIG_NLS_CODEPAGE_437=m 289 - CONFIG_NLS_ASCII=m 290 - CONFIG_NLS_ISO8859_1=m 291 - CONFIG_SECURITY=y 292 - CONFIG_SECURITY_NETWORK=y 293 - CONFIG_SECURITY_YAMA=y 294 - CONFIG_CRYPTO_AUTHENC=y 295 - CONFIG_CRYPTO_HMAC=y 296 - CONFIG_CRYPTO_SHA1=y 297 - CONFIG_CRYPTO_SHA256=y 298 - CONFIG_CRYPTO_SHA512=m 299 - CONFIG_CRYPTO_ARC4=y 300 - CONFIG_CRYPTO_DES=y 301 - CONFIG_CRC_CCITT=y 302 - CONFIG_CRC_T10DIF=m 303 - CONFIG_CRC7=m 304 - # CONFIG_XZ_DEC_X86 is not set 305 - CONFIG_PRINTK_TIME=y 306 - CONFIG_DEBUG_INFO=y 307 - CONFIG_MAGIC_SYSRQ=y 308 - CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0 309 - # CONFIG_SCHED_DEBUG is not set 310 - CONFIG_SCHEDSTATS=y 311 - CONFIG_DEBUG_SPINLOCK=y 312 - CONFIG_DEBUG_CREDENTIALS=y 313 - CONFIG_FUNCTION_TRACER=y 314 - CONFIG_BLK_DEV_IO_TRACE=y 315 - CONFIG_LKDTM=y 316 - CONFIG_TEST_UDELAY=m
+6
arch/mips/generic/Kconfig
··· 58 58 enable this if you wish to boot on a MIPS Boston board, as it is 59 59 expected by the bootloader. 60 60 61 + config FIT_IMAGE_FDT_MARDUK 62 + bool "Include FDT for IMG Pistachio Marduk (CI40) boards" 63 + help 64 + Enable this to include the FDT for the IMG Pistachio Marduk (CI40) 65 + from Imagination Technologies in the FIT kernel image. 66 + 61 67 config FIT_IMAGE_FDT_NI169445 62 68 bool "Include FDT for NI 169445" 63 69 help
+1
arch/mips/generic/Platform
··· 24 24 its-$(CONFIG_FIT_IMAGE_FDT_JAGUAR2) += board-jaguar2.its.S 25 25 its-$(CONFIG_FIT_IMAGE_FDT_SERVAL) += board-serval.its.S 26 26 its-$(CONFIG_FIT_IMAGE_FDT_XILFPGA) += board-xilfpga.its.S 27 + its-$(CONFIG_FIT_IMAGE_FDT_MARDUK) += board-marduk.its.S
+49
arch/mips/generic/board-ingenic.c
··· 7 7 * Copyright (C) 2020 Paul Cercueil <paul@crapouillou.net> 8 8 */ 9 9 10 + #include <linux/clk.h> 11 + #include <linux/of.h> 10 12 #include <linux/of_address.h> 11 13 #include <linux/of_fdt.h> 12 14 #include <linux/pm.h> ··· 23 21 static __init char *ingenic_get_system_type(unsigned long machtype) 24 22 { 25 23 switch (machtype) { 24 + case MACH_INGENIC_X2100: 25 + return "X2100"; 26 + case MACH_INGENIC_X2000H: 27 + return "X2000H"; 26 28 case MACH_INGENIC_X2000E: 27 29 return "X2000E"; 28 30 case MACH_INGENIC_X2000: ··· 43 37 return "JZ4775"; 44 38 case MACH_INGENIC_JZ4770: 45 39 return "JZ4770"; 40 + case MACH_INGENIC_JZ4760B: 41 + return "JZ4760B"; 42 + case MACH_INGENIC_JZ4760: 43 + return "JZ4760"; 44 + case MACH_INGENIC_JZ4755: 45 + return "JZ4755"; 46 + case MACH_INGENIC_JZ4750: 47 + return "JZ4750"; 46 48 case MACH_INGENIC_JZ4725B: 47 49 return "JZ4725B"; 50 + case MACH_INGENIC_JZ4730: 51 + return "JZ4730"; 48 52 default: 49 53 return "JZ4740"; 50 54 } ··· 77 61 } 78 62 79 63 static const struct of_device_id ingenic_of_match[] __initconst = { 64 + { .compatible = "ingenic,jz4730", .data = (void *)MACH_INGENIC_JZ4730 }, 80 65 { .compatible = "ingenic,jz4740", .data = (void *)MACH_INGENIC_JZ4740 }, 81 66 { .compatible = "ingenic,jz4725b", .data = (void *)MACH_INGENIC_JZ4725B }, 67 + { .compatible = "ingenic,jz4750", .data = (void *)MACH_INGENIC_JZ4750 }, 68 + { .compatible = "ingenic,jz4755", .data = (void *)MACH_INGENIC_JZ4755 }, 69 + { .compatible = "ingenic,jz4760", .data = (void *)MACH_INGENIC_JZ4760 }, 70 + { .compatible = "ingenic,jz4760b", .data = (void *)MACH_INGENIC_JZ4760B }, 82 71 { .compatible = "ingenic,jz4770", .data = (void *)MACH_INGENIC_JZ4770 }, 83 72 { .compatible = "ingenic,jz4775", .data = (void *)MACH_INGENIC_JZ4775 }, 84 73 { .compatible = "ingenic,jz4780", .data = (void *)MACH_INGENIC_JZ4780 }, ··· 92 71 { .compatible = "ingenic,x1830", .data = (void *)MACH_INGENIC_X1830 }, 93 72 { .compatible = "ingenic,x2000", .data = (void *)MACH_INGENIC_X2000 }, 94 73 { .compatible = "ingenic,x2000e", .data = (void *)MACH_INGENIC_X2000E }, 74 + { .compatible = "ingenic,x2000h", .data = (void *)MACH_INGENIC_X2000H }, 75 + { .compatible = "ingenic,x2100", .data = (void *)MACH_INGENIC_X2100 }, 95 76 {} 96 77 }; 97 78 ··· 131 108 132 109 static int __init ingenic_pm_init(void) 133 110 { 111 + struct device_node *cpu_node; 112 + struct clk *cpu0_clk; 113 + int ret; 114 + 134 115 if (boot_cpu_type() == CPU_XBURST) { 135 116 if (IS_ENABLED(CONFIG_PM_SLEEP)) 136 117 suspend_set_ops(&ingenic_pm_ops); 137 118 _machine_halt = ingenic_halt; 119 + 120 + /* 121 + * Unconditionally enable the clock for the first CPU. 122 + * This makes sure that the PLL that feeds the CPU won't be 123 + * stopped while the kernel is running. 124 + */ 125 + cpu_node = of_get_cpu_node(0, NULL); 126 + if (!cpu_node) { 127 + pr_err("Unable to get CPU node\n"); 128 + } else { 129 + cpu0_clk = of_clk_get(cpu_node, 0); 130 + if (IS_ERR(cpu0_clk)) { 131 + pr_err("Unable to get CPU0 clock\n"); 132 + return PTR_ERR(cpu0_clk); 133 + } 134 + 135 + ret = clk_prepare_enable(cpu0_clk); 136 + if (ret) { 137 + pr_err("Unable to enable CPU0 clock\n"); 138 + return ret; 139 + } 140 + } 138 141 } 139 142 140 143 return 0;
+22
arch/mips/generic/board-marduk.its.S
··· 1 + / { 2 + images { 3 + fdt-marduk { 4 + description = "img,pistachio-marduk Device Tree"; 5 + data = /incbin/("boot/dts/img/pistachio_marduk.dtb"); 6 + type = "flat_dt"; 7 + arch = "mips"; 8 + compression = "none"; 9 + hash { 10 + algo = "sha1"; 11 + }; 12 + }; 13 + }; 14 + 15 + configurations { 16 + conf-marduk { 17 + description = "Marduk Linux kernel"; 18 + kernel = "kernel"; 19 + fdt = "fdt-marduk"; 20 + }; 21 + }; 22 + };
+3 -3
arch/mips/generic/board-ocelot.c
··· 26 26 tlb_probe_hazard(); 27 27 idx = read_c0_index(); 28 28 if (idx < 0) 29 - return 0; 29 + return false; 30 30 31 31 /* A TLB entry exists, lets assume its usable and check the CHIP ID */ 32 32 rev = __raw_readl((void __iomem *)DEVCPU_GCB_CHIP_REGS_CHIP_ID); 33 33 34 34 if ((rev & CHIP_ID_PART_ID) != OCELOT_PART_ID) 35 - return 0; 35 + return false; 36 36 37 37 /* Copy command line from bootloader early for Initrd detection */ 38 38 if (fw_arg0 < 10 && (fw_arg1 & 0xFFF00000) == 0x80000000) { ··· 44 44 strcpy(arcs_cmdline, prom_argv[1]); 45 45 } 46 46 47 - return 1; 47 + return true; 48 48 } 49 49 50 50 static void __init ocelot_earlyprintk_init(void)
+1 -1
arch/mips/include/asm/atomic.h
··· 206 206 * The function returns the old value of @v minus @i. 207 207 */ 208 208 #define ATOMIC_SIP_OP(pfx, type, op, ll, sc) \ 209 - static __inline__ int arch_##pfx##_sub_if_positive(type i, pfx##_t * v) \ 209 + static __inline__ type arch_##pfx##_sub_if_positive(type i, pfx##_t * v) \ 210 210 { \ 211 211 type temp, result; \ 212 212 \
+3
arch/mips/include/asm/bootinfo.h
··· 75 75 MACH_INGENIC_JZ4750, 76 76 MACH_INGENIC_JZ4755, 77 77 MACH_INGENIC_JZ4760, 78 + MACH_INGENIC_JZ4760B, 78 79 MACH_INGENIC_JZ4770, 79 80 MACH_INGENIC_JZ4775, 80 81 MACH_INGENIC_JZ4780, ··· 84 83 MACH_INGENIC_X1830, 85 84 MACH_INGENIC_X2000, 86 85 MACH_INGENIC_X2000E, 86 + MACH_INGENIC_X2000H, 87 + MACH_INGENIC_X2100, 87 88 }; 88 89 89 90 extern char *system_type;
+2 -2
arch/mips/include/asm/cpu.h
··· 46 46 #define PRID_COMP_NETLOGIC 0x0c0000 47 47 #define PRID_COMP_CAVIUM 0x0d0000 48 48 #define PRID_COMP_LOONGSON 0x140000 49 - #define PRID_COMP_INGENIC_13 0x130000 /* X2000 */ 50 - #define PRID_COMP_INGENIC_D0 0xd00000 /* JZ4740, JZ4750, X1830 */ 49 + #define PRID_COMP_INGENIC_13 0x130000 /* X2000, X2100 */ 50 + #define PRID_COMP_INGENIC_D0 0xd00000 /* JZ4730, JZ4740, JZ4750, JZ4755, JZ4760, X1830 */ 51 51 #define PRID_COMP_INGENIC_D1 0xd10000 /* JZ4770, JZ4775, X1000 */ 52 52 #define PRID_COMP_INGENIC_E1 0xe10000 /* JZ4780 */ 53 53
+5 -5
arch/mips/kernel/mips-mt-fpaff.c
··· 76 76 if (copy_from_user(&new_mask, user_mask_ptr, sizeof(new_mask))) 77 77 return -EFAULT; 78 78 79 - get_online_cpus(); 79 + cpus_read_lock(); 80 80 rcu_read_lock(); 81 81 82 82 p = find_process_by_pid(pid); 83 83 if (!p) { 84 84 rcu_read_unlock(); 85 - put_online_cpus(); 85 + cpus_read_unlock(); 86 86 return -ESRCH; 87 87 } 88 88 ··· 147 147 free_cpumask_var(cpus_allowed); 148 148 out_put_task: 149 149 put_task_struct(p); 150 - put_online_cpus(); 150 + cpus_read_unlock(); 151 151 return retval; 152 152 } 153 153 ··· 166 166 if (len < real_len) 167 167 return -EINVAL; 168 168 169 - get_online_cpus(); 169 + cpus_read_lock(); 170 170 rcu_read_lock(); 171 171 172 172 retval = -ESRCH; ··· 182 182 183 183 out_unlock: 184 184 rcu_read_unlock(); 185 - put_online_cpus(); 185 + cpus_read_unlock(); 186 186 if (retval) 187 187 return retval; 188 188 if (copy_to_user(user_mask_ptr, &mask, real_len))
+2 -2
arch/mips/kernel/process.c
··· 859 859 * scheduled in then it will already have picked up the new FP mode 860 860 * whilst doing so. 861 861 */ 862 - get_online_cpus(); 862 + cpus_read_lock(); 863 863 for_each_cpu_and(cpu, &process_cpus, cpu_online_mask) 864 864 work_on_cpu(cpu, prepare_for_fp_mode_switch, NULL); 865 - put_online_cpus(); 865 + cpus_read_unlock(); 866 866 867 867 return 0; 868 868 }
+5 -5
arch/mips/kernel/uprobes.c
··· 75 75 case tlt_op: 76 76 case tltu_op: 77 77 case tne_op: 78 - return 1; 78 + return true; 79 79 } 80 80 break; 81 81 ··· 87 87 case tlti_op: 88 88 case tltiu_op: 89 89 case tnei_op: 90 - return 1; 90 + return true; 91 91 } 92 92 break; 93 93 } 94 94 95 - return 0; 95 + return false; 96 96 } 97 97 98 98 #define UPROBE_TRAP_NR ULONG_MAX ··· 254 254 * See if the instruction can be emulated. 255 255 * Returns true if instruction was emulated, false otherwise. 256 256 * 257 - * For now we always emulate so this function just returns 0. 257 + * For now we always emulate so this function just returns false. 258 258 */ 259 259 bool arch_uprobe_skip_sstep(struct arch_uprobe *auprobe, struct pt_regs *regs) 260 260 { 261 - return 0; 261 + return false; 262 262 }
+8 -11
arch/mips/kvm/Makefile
··· 2 2 # Makefile for KVM support for MIPS 3 3 # 4 4 5 - common-objs-y = $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o binary_stats.o) 5 + ccflags-y += -Ivirt/kvm -Iarch/mips/kvm 6 6 7 - EXTRA_CFLAGS += -Ivirt/kvm -Iarch/mips/kvm 7 + kvm-y := $(addprefix ../../../virt/kvm/, kvm_main.o coalesced_mmio.o eventfd.o binary_stats.o) 8 + kvm-$(CONFIG_CPU_HAS_MSA) += msa.o 8 9 9 - common-objs-$(CONFIG_CPU_HAS_MSA) += msa.o 10 - 11 - kvm-objs := $(common-objs-y) mips.o emulate.o entry.o \ 10 + kvm-y += mips.o emulate.o entry.o \ 12 11 interrupt.o stats.o \ 13 12 fpu.o 14 - kvm-objs += hypcall.o 15 - kvm-objs += mmu.o 16 - ifdef CONFIG_CPU_LOONGSON64 17 - kvm-objs += loongson_ipi.o 18 - endif 13 + kvm-y += hypcall.o 14 + kvm-y += mmu.o 15 + kvm-$(CONFIG_CPU_LOONGSON64) += loongson_ipi.o 19 16 20 - kvm-objs += vz.o 17 + kvm-y += vz.o 21 18 obj-$(CONFIG_KVM) += kvm.o 22 19 obj-y += callback.o tlb.o
+2 -2
arch/mips/kvm/mmu.c
··· 442 442 bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range) 443 443 { 444 444 kvm_mips_flush_gpa_pt(kvm, range->start, range->end); 445 - return 1; 445 + return true; 446 446 } 447 447 448 448 bool kvm_set_spte_gfn(struct kvm *kvm, struct kvm_gfn_range *range) ··· 486 486 pte_t *gpa_pte = kvm_mips_pte_for_gpa(kvm, NULL, gpa); 487 487 488 488 if (!gpa_pte) 489 - return 0; 489 + return false; 490 490 return pte_young(*gpa_pte); 491 491 } 492 492
+3 -1
arch/mips/loongson2ef/common/Makefile
··· 4 4 # 5 5 6 6 obj-y += setup.o init.o env.o time.o reset.o irq.o \ 7 - bonito-irq.o mem.o machtype.o platform.o serial.o 7 + bonito-irq.o mem.o machtype.o platform.o 8 8 obj-$(CONFIG_PCI) += pci.o 9 9 10 10 # 11 11 # Serial port support 12 12 # 13 + obj-$(CONFIG_LOONGSON_UART_BASE) += serial.o 14 + obj-$(CONFIG_EARLY_PRINTK) += serial.o 13 15 obj-$(CONFIG_LOONGSON_UART_BASE) += uart_base.o 14 16 obj-$(CONFIG_LOONGSON_MC146818) += rtc.o 15 17
+14 -15
arch/mips/mm/c-octeon.c
··· 30 30 unsigned long long cache_err_dcache[NR_CPUS]; 31 31 EXPORT_SYMBOL_GPL(cache_err_dcache); 32 32 33 - /** 33 + /* 34 34 * Octeon automatically flushes the dcache on tlb changes, so 35 35 * from Linux's viewpoint it acts much like a physically 36 36 * tagged cache. No flushing is needed ··· 56 56 } 57 57 58 58 /** 59 - * Flush caches as necessary for all cores affected by a 60 - * vma. If no vma is supplied, all cores are flushed. 59 + * octeon_flush_icache_all_cores - Flush caches as necessary for all cores 60 + * affected by a vma. If no vma is supplied, all cores are flushed. 61 61 * 62 62 * @vma: VMA to flush or NULL to flush all icaches. 63 63 */ ··· 92 92 } 93 93 94 94 95 - /** 95 + /* 96 96 * Called to flush the icache on all cores 97 97 */ 98 98 static void octeon_flush_icache_all(void) ··· 102 102 103 103 104 104 /** 105 - * Called to flush all memory associated with a memory 106 - * context. 105 + * octeon_flush_cache_mm - flush all memory associated with a memory context. 107 106 * 108 107 * @mm: Memory context to flush 109 108 */ ··· 115 116 } 116 117 117 118 118 - /** 119 + /* 119 120 * Flush a range of kernel addresses out of the icache 120 121 * 121 122 */ ··· 126 127 127 128 128 129 /** 129 - * Flush a range out of a vma 130 + * octeon_flush_cache_range - Flush a range out of a vma 130 131 * 131 132 * @vma: VMA to flush 132 - * @start: 133 - * @end: 133 + * @start: beginning address for flush 134 + * @end: ending address for flush 134 135 */ 135 136 static void octeon_flush_cache_range(struct vm_area_struct *vma, 136 137 unsigned long start, unsigned long end) ··· 141 142 142 143 143 144 /** 144 - * Flush a specific page of a vma 145 + * octeon_flush_cache_page - Flush a specific page of a vma 145 146 * 146 147 * @vma: VMA to flush page for 147 148 * @page: Page to flush 148 - * @pfn: 149 + * @pfn: Page frame number 149 150 */ 150 151 static void octeon_flush_cache_page(struct vm_area_struct *vma, 151 152 unsigned long page, unsigned long pfn) ··· 159 160 BUG(); 160 161 } 161 162 162 - /** 163 + /* 163 164 * Probe Octeon's caches 164 165 * 165 166 */ ··· 255 256 set_handler(0x100, &except_vec2_octeon, 0x80); 256 257 } 257 258 258 - /** 259 + /* 259 260 * Setup the Octeon cache flush routines 260 261 * 261 262 */ ··· 340 341 co_cache_error_call_notifiers(0); 341 342 } 342 343 343 - /** 344 + /* 344 345 * Called when the the exception is not recoverable 345 346 */ 346 347
+1 -1
arch/mips/mti-malta/malta-dtshim.c
··· 22 22 #define ROCIT_CONFIG_GEN1_MEMMAP_SHIFT 8 23 23 #define ROCIT_CONFIG_GEN1_MEMMAP_MASK (0xf << 8) 24 24 25 - static unsigned char fdt_buf[16 << 10] __initdata; 25 + static unsigned char fdt_buf[16 << 10] __initdata __aligned(8); 26 26 27 27 /* determined physical memory size, not overridden by command line args */ 28 28 extern unsigned long physical_memsize;
+9 -6
arch/mips/netlogic/xlr/fmn-config.c
··· 103 103 } 104 104 105 105 /** 106 - * Configure bucket size and credits for a device. 'size' is the size of 107 - * the buckets for the device. This size is distributed among all the CPUs 108 - * so that all of them can send messages to the device. 109 - * 110 - * The device is also given 'cpu_credits' to send messages to the CPUs 111 - * 106 + * setup_fmn_cc - Configure bucket size and credits for a device. 112 107 * @dev_info: FMN information structure for each devices 113 108 * @start_stn_id: Starting station id of dev_info 114 109 * @end_stn_id: End station id of dev_info 115 110 * @num_buckets: Total number of buckets for den_info 116 111 * @cpu_credits: Allowed credits to cpu for each devices pointing by dev_info 117 112 * @size: Size of the each buckets in the device station 113 + * 114 + * 'size' is the size of the buckets for the device. This size is 115 + * distributed among all the CPUs 116 + * so that all of them can send messages to the device. 117 + * 118 + * The device is also given 'cpu_credits' to send messages to the CPUs 118 119 */ 119 120 static void setup_fmn_cc(struct xlr_fmn_info *dev_info, int start_stn_id, 120 121 int end_stn_id, int num_buckets, int cpu_credits, int size) ··· 175 174 } 176 175 177 176 /** 177 + * xlr_board_info_setup - Setup FMN details 178 + * 178 179 * Setup the FMN details for each devices according to the device available 179 180 * in each variant of XLR/XLS processor 180 181 */
-14
arch/mips/pistachio/Kconfig
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - config PISTACHIO_GPTIMER_CLKSRC 3 - bool "Enable General Purpose Timer based clocksource" 4 - depends on MACH_PISTACHIO 5 - select CLKSRC_PISTACHIO 6 - select MIPS_EXTERNAL_TIMER 7 - help 8 - This option enables a clocksource driver based on a Pistachio 9 - SoC General Purpose external timer. 10 - 11 - If you want to enable the CPUFreq, you need to enable 12 - this option. 13 - 14 - If you don't want to enable CPUFreq, you can leave this disabled.
-2
arch/mips/pistachio/Makefile
··· 1 - # SPDX-License-Identifier: GPL-2.0-only 2 - obj-y += init.o irq.o time.o
-6
arch/mips/pistachio/Platform
··· 1 - # 2 - # IMG Pistachio SoC 3 - # 4 - load-$(CONFIG_MACH_PISTACHIO) += 0xffffffff80400000 5 - zload-$(CONFIG_MACH_PISTACHIO) += 0xffffffff81000000 6 - all-$(CONFIG_MACH_PISTACHIO) := uImage.gz
-125
arch/mips/pistachio/init.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Pistachio platform setup 4 - * 5 - * Copyright (C) 2014 Google, Inc. 6 - * Copyright (C) 2016 Imagination Technologies 7 - */ 8 - 9 - #include <linux/init.h> 10 - #include <linux/io.h> 11 - #include <linux/kernel.h> 12 - #include <linux/of_address.h> 13 - #include <linux/of_fdt.h> 14 - 15 - #include <asm/cacheflush.h> 16 - #include <asm/fw/fw.h> 17 - #include <asm/mips-boards/generic.h> 18 - #include <asm/mips-cps.h> 19 - #include <asm/prom.h> 20 - #include <asm/smp-ops.h> 21 - #include <asm/traps.h> 22 - 23 - /* 24 - * Core revision register decoding 25 - * Bits 23 to 20: Major rev 26 - * Bits 15 to 8: Minor rev 27 - * Bits 7 to 0: Maintenance rev 28 - */ 29 - #define PISTACHIO_CORE_REV_REG 0xB81483D0 30 - #define PISTACHIO_CORE_REV_A1 0x00100006 31 - #define PISTACHIO_CORE_REV_B0 0x00100106 32 - 33 - const char *get_system_type(void) 34 - { 35 - u32 core_rev; 36 - const char *sys_type; 37 - 38 - core_rev = __raw_readl((const void *)PISTACHIO_CORE_REV_REG); 39 - 40 - switch (core_rev) { 41 - case PISTACHIO_CORE_REV_B0: 42 - sys_type = "IMG Pistachio SoC (B0)"; 43 - break; 44 - 45 - case PISTACHIO_CORE_REV_A1: 46 - sys_type = "IMG Pistachio SoC (A1)"; 47 - break; 48 - 49 - default: 50 - sys_type = "IMG Pistachio SoC"; 51 - break; 52 - } 53 - 54 - return sys_type; 55 - } 56 - 57 - void __init *plat_get_fdt(void) 58 - { 59 - if (fw_arg0 != -2) 60 - panic("Device-tree not present"); 61 - return (void *)fw_arg1; 62 - } 63 - 64 - void __init plat_mem_setup(void) 65 - { 66 - __dt_setup_arch(plat_get_fdt()); 67 - } 68 - 69 - #define DEFAULT_CPC_BASE_ADDR 0x1bde0000 70 - #define DEFAULT_CDMM_BASE_ADDR 0x1bdd0000 71 - 72 - phys_addr_t mips_cpc_default_phys_base(void) 73 - { 74 - return DEFAULT_CPC_BASE_ADDR; 75 - } 76 - 77 - phys_addr_t mips_cdmm_phys_base(void) 78 - { 79 - return DEFAULT_CDMM_BASE_ADDR; 80 - } 81 - 82 - static void __init mips_nmi_setup(void) 83 - { 84 - void *base; 85 - 86 - base = cpu_has_veic ? 87 - (void *)(CAC_BASE + 0xa80) : 88 - (void *)(CAC_BASE + 0x380); 89 - memcpy(base, except_vec_nmi, 0x80); 90 - flush_icache_range((unsigned long)base, 91 - (unsigned long)base + 0x80); 92 - } 93 - 94 - static void __init mips_ejtag_setup(void) 95 - { 96 - void *base; 97 - extern char except_vec_ejtag_debug[]; 98 - 99 - base = cpu_has_veic ? 100 - (void *)(CAC_BASE + 0xa00) : 101 - (void *)(CAC_BASE + 0x300); 102 - memcpy(base, except_vec_ejtag_debug, 0x80); 103 - flush_icache_range((unsigned long)base, 104 - (unsigned long)base + 0x80); 105 - } 106 - 107 - void __init prom_init(void) 108 - { 109 - board_nmi_handler_setup = mips_nmi_setup; 110 - board_ejtag_handler_setup = mips_ejtag_setup; 111 - 112 - mips_cm_probe(); 113 - mips_cpc_probe(); 114 - register_cps_smp_ops(); 115 - 116 - pr_info("SoC Type: %s\n", get_system_type()); 117 - } 118 - 119 - void __init device_tree_init(void) 120 - { 121 - if (!initial_boot_params) 122 - return; 123 - 124 - unflatten_and_copy_device_tree(); 125 - }
-24
arch/mips/pistachio/irq.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Pistachio IRQ setup 4 - * 5 - * Copyright (C) 2014 Google, Inc. 6 - */ 7 - 8 - #include <linux/init.h> 9 - #include <linux/irqchip.h> 10 - #include <linux/kernel.h> 11 - 12 - #include <asm/cpu-features.h> 13 - #include <asm/irq_cpu.h> 14 - 15 - void __init arch_init_irq(void) 16 - { 17 - pr_info("EIC is %s\n", cpu_has_veic ? "on" : "off"); 18 - pr_info("VINT is %s\n", cpu_has_vint ? "on" : "off"); 19 - 20 - if (!cpu_has_veic) 21 - mips_cpu_irq_init(); 22 - 23 - irqchip_init(); 24 - }
-55
arch/mips/pistachio/time.c
··· 1 - // SPDX-License-Identifier: GPL-2.0-only 2 - /* 3 - * Pistachio clocksource/timer setup 4 - * 5 - * Copyright (C) 2014 Google, Inc. 6 - */ 7 - 8 - #include <linux/clk.h> 9 - #include <linux/clocksource.h> 10 - #include <linux/init.h> 11 - #include <linux/of.h> 12 - #include <linux/of_clk.h> 13 - 14 - #include <asm/mips-cps.h> 15 - #include <asm/time.h> 16 - 17 - unsigned int get_c0_compare_int(void) 18 - { 19 - return gic_get_c0_compare_int(); 20 - } 21 - 22 - int get_c0_perfcount_int(void) 23 - { 24 - return gic_get_c0_perfcount_int(); 25 - } 26 - EXPORT_SYMBOL_GPL(get_c0_perfcount_int); 27 - 28 - int get_c0_fdc_int(void) 29 - { 30 - return gic_get_c0_fdc_int(); 31 - } 32 - 33 - void __init plat_time_init(void) 34 - { 35 - struct device_node *np; 36 - struct clk *clk; 37 - 38 - of_clk_init(NULL); 39 - timer_probe(); 40 - 41 - np = of_get_cpu_node(0, NULL); 42 - if (!np) { 43 - pr_err("Failed to get CPU node\n"); 44 - return; 45 - } 46 - 47 - clk = of_clk_get(np, 0); 48 - if (IS_ERR(clk)) { 49 - pr_err("Failed to get CPU clock: %ld\n", PTR_ERR(clk)); 50 - return; 51 - } 52 - 53 - mips_hpt_frequency = clk_get_rate(clk) / 2; 54 - clk_put(clk); 55 - }
+1
drivers/clk/Kconfig
··· 403 403 source "drivers/clk/meson/Kconfig" 404 404 source "drivers/clk/mstar/Kconfig" 405 405 source "drivers/clk/mvebu/Kconfig" 406 + source "drivers/clk/pistachio/Kconfig" 406 407 source "drivers/clk/qcom/Kconfig" 407 408 source "drivers/clk/ralink/Kconfig" 408 409 source "drivers/clk/renesas/Kconfig"
+1 -1
drivers/clk/Makefile
··· 97 97 obj-y += mvebu/ 98 98 obj-$(CONFIG_ARCH_MXS) += mxs/ 99 99 obj-$(CONFIG_COMMON_CLK_NXP) += nxp/ 100 - obj-$(CONFIG_MACH_PISTACHIO) += pistachio/ 100 + obj-$(CONFIG_COMMON_CLK_PISTACHIO) += pistachio/ 101 101 obj-$(CONFIG_COMMON_CLK_PXA) += pxa/ 102 102 obj-$(CONFIG_COMMON_CLK_QCOM) += qcom/ 103 103 obj-y += ralink/
+8
drivers/clk/pistachio/Kconfig
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + 3 + config COMMON_CLK_PISTACHIO 4 + bool "Support for IMG Pistachio SoC clock controllers" 5 + depends on MIPS || COMPILE_TEST 6 + help 7 + Support for the IMG Pistachio SoC clock controller. 8 + Say Y if you want to include clock support.
+2 -1
drivers/clocksource/Kconfig
··· 234 234 Support for the LPC32XX clocksource. 235 235 236 236 config CLKSRC_PISTACHIO 237 - bool "Clocksource for Pistachio SoC" if COMPILE_TEST 237 + bool "Clocksource for Pistachio SoC" 238 238 depends on HAS_IOMEM 239 + depends on MIPS || COMPILE_TEST 239 240 select TIMER_OF 240 241 help 241 242 Enables the clocksource for the Pistachio SoC.
+1 -1
drivers/phy/Kconfig
··· 37 37 38 38 config PHY_PISTACHIO_USB 39 39 tristate "IMG Pistachio USB2.0 PHY driver" 40 - depends on MACH_PISTACHIO 40 + depends on MIPS || COMPILE_TEST 41 41 select GENERIC_PHY 42 42 help 43 43 Enable this to support the USB2.0 PHY on the IMG Pistachio SoC.