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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'soc-fixes-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC fixes from Arnd Bergmann:
"Here are the patches for this week that came as the fallout of the
merge window:

- Two fixes for the NVidia memory controller driver

- multiple defconfig files get patched to turn CONFIG_FB back on
after that is no longer selected by CONFIG_DRM

- ffa and scmpi firmware drivers fixes, mostly addressing compiler
and documentation warnings

- Platform specific fixes for device tree files on ASpeed, Renesas
and NVidia SoC, mostly for recent regressions.

- A workaround for a regression on the USB PHY with devlink when the
usb-nop-xceiv driver is not available until the rootfs is mounted.

- Device tree compiler warnings in Arm Versatile-AB"

* tag 'soc-fixes-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (35 commits)
ARM: dts: versatile: Fix up interrupt controller node names
ARM: multi_v7_defconfig: Make NOP_USB_XCEIV driver built-in
ARM: configs: Update u8500_defconfig
ARM: configs: Update Vexpress defconfig
ARM: configs: Update Versatile defconfig
ARM: configs: Update RealView defconfig
ARM: configs: Update Integrator defconfig
arm: Typo s/PCI_IXP4XX_LEGACY/IXP4XX_PCI_LEGACY/
firmware: arm_scmi: Fix range check for the maximum number of pending messages
firmware: arm_scmi: Avoid padding in sensor message structure
firmware: arm_scmi: Fix kernel doc warnings about return values
firmware: arm_scpi: Fix kernel doc warnings
firmware: arm_scmi: Fix kernel doc warnings
ARM: shmobile: defconfig: Restore graphical consoles
firmware: arm_ffa: Fix a possible ffa_linux_errmap buffer overflow
firmware: arm_ffa: Fix the comment style
firmware: arm_ffa: Simplify probe function
firmware: arm_ffa: Ensure drivers provide a probe function
firmware: arm_scmi: Fix possible scmi_linux_errmap buffer overflow
firmware: arm_scmi: Ensure drivers provide a probe function
...

+418 -215
+2 -4
Documentation/devicetree/bindings/iommu/arm,smmu.yaml
··· 52 52 items: 53 53 - const: marvell,ap806-smmu-500 54 54 - const: arm,mmu-500 55 - - description: NVIDIA SoCs that program two ARM MMU-500s identically 56 - items: 57 55 - description: NVIDIA SoCs that require memory controller interaction 58 56 and may program multiple ARM MMU-500s identically with the memory 59 57 controller interleaving translations between multiple instances 60 58 for improved performance. 61 59 items: 62 60 - enum: 63 - - const: nvidia,tegra194-smmu 64 - - const: nvidia,tegra186-smmu 61 + - nvidia,tegra194-smmu 62 + - nvidia,tegra186-smmu 65 63 - const: nvidia,smmu-500 66 64 - items: 67 65 - const: arm,mmu-500
+1 -1
arch/arm/Kconfig
··· 395 395 select IXP4XX_IRQ 396 396 select IXP4XX_TIMER 397 397 # With the new PCI driver this is not needed 398 - select NEED_MACH_IO_H if PCI_IXP4XX_LEGACY 398 + select NEED_MACH_IO_H if IXP4XX_PCI_LEGACY 399 399 select USB_EHCI_BIG_ENDIAN_DESC 400 400 select USB_EHCI_BIG_ENDIAN_MMIO 401 401 help
+3 -1
arch/arm/boot/dts/aspeed-bmc-asrock-e3c246d4i.dts
··· 4 4 #include "aspeed-g5.dtsi" 5 5 #include <dt-bindings/gpio/aspeed-gpio.h> 6 6 #include <dt-bindings/i2c/i2c.h> 7 + #include <dt-bindings/interrupt-controller/irq.h> 7 8 8 9 /{ 9 10 model = "ASRock E3C246D4I BMC"; ··· 74 73 75 74 &vuart { 76 75 status = "okay"; 77 - aspeed,sirq-active-high; 76 + aspeed,lpc-io-reg = <0x2f8>; 77 + aspeed,lpc-interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; 78 78 }; 79 79 80 80 &mac0 {
+6 -5
arch/arm/boot/dts/aspeed-bmc-ibm-everest.dts
··· 406 406 reg = <0x69>; 407 407 }; 408 408 409 - power-supply@6a { 410 - compatible = "ibm,cffps"; 411 - reg = <0x6a>; 412 - }; 413 - 414 409 power-supply@6b { 415 410 compatible = "ibm,cffps"; 416 411 reg = <0x6b>; 412 + }; 413 + 414 + power-supply@6d { 415 + compatible = "ibm,cffps"; 416 + reg = <0x6d>; 417 417 }; 418 418 }; 419 419 ··· 2832 2832 2833 2833 &emmc { 2834 2834 status = "okay"; 2835 + clk-phase-mmc-hs200 = <180>, <180>; 2835 2836 }; 2836 2837 2837 2838 &fsim0 {
+1 -4
arch/arm/boot/dts/aspeed-bmc-ibm-rainier.dts
··· 280 280 /*W0-W7*/ "","","","","","","","", 281 281 /*X0-X7*/ "","","","","","","","", 282 282 /*Y0-Y7*/ "","","","","","","","", 283 - /*Z0-Z7*/ "","","","","","","","", 284 - /*AA0-AA7*/ "","","","","","","","", 285 - /*AB0-AB7*/ "","","","","","","","", 286 - /*AC0-AC7*/ "","","","","","","",""; 283 + /*Z0-Z7*/ "","","","","","","",""; 287 284 288 285 pin_mclr_vpp { 289 286 gpio-hog;
+2 -4
arch/arm/boot/dts/aspeed-bmc-opp-tacoma.dts
··· 136 136 /*W0-W7*/ "","","","","","","","", 137 137 /*X0-X7*/ "","","","","","","","", 138 138 /*Y0-Y7*/ "","","","","","","","", 139 - /*Z0-Z7*/ "","","","","","","","", 140 - /*AA0-AA7*/ "","","","","","","","", 141 - /*AB0-AB7*/ "","","","","","","","", 142 - /*AC0-AC7*/ "","","","","","","",""; 139 + /*Z0-Z7*/ "","","","","","","",""; 143 140 }; 144 141 145 142 &fmc { ··· 186 189 187 190 &emmc { 188 191 status = "okay"; 192 + clk-phase-mmc-hs200 = <36>, <270>; 189 193 }; 190 194 191 195 &fsim0 {
+2 -3
arch/arm/boot/dts/versatile-ab.dts
··· 195 195 #size-cells = <1>; 196 196 ranges; 197 197 198 - vic: intc@10140000 { 198 + vic: interrupt-controller@10140000 { 199 199 compatible = "arm,versatile-vic"; 200 200 interrupt-controller; 201 201 #interrupt-cells = <1>; 202 202 reg = <0x10140000 0x1000>; 203 - clear-mask = <0xffffffff>; 204 203 valid-mask = <0xffffffff>; 205 204 }; 206 205 207 - sic: intc@10003000 { 206 + sic: interrupt-controller@10003000 { 208 207 compatible = "arm,versatile-sic"; 209 208 interrupt-controller; 210 209 #interrupt-cells = <1>;
+1 -1
arch/arm/boot/dts/versatile-pb.dts
··· 7 7 8 8 amba { 9 9 /* The Versatile PB is using more SIC IRQ lines than the AB */ 10 - sic: intc@10003000 { 10 + sic: interrupt-controller@10003000 { 11 11 clear-mask = <0xffffffff>; 12 12 /* 13 13 * Valid interrupt lines mask according to
+1 -4
arch/arm/configs/integrator_defconfig
··· 57 57 CONFIG_DRM_DISPLAY_CONNECTOR=y 58 58 CONFIG_DRM_SIMPLE_BRIDGE=y 59 59 CONFIG_DRM_PL111=y 60 - CONFIG_FB_MODE_HELPERS=y 61 - CONFIG_FB_MATROX=y 62 - CONFIG_FB_MATROX_MILLENIUM=y 63 - CONFIG_FB_MATROX_MYSTIQUE=y 60 + CONFIG_FB=y 64 61 CONFIG_BACKLIGHT_CLASS_DEVICE=y 65 62 # CONFIG_VGA_CONSOLE is not set 66 63 CONFIG_LOGO=y
+1 -1
arch/arm/configs/multi_v7_defconfig
··· 821 821 CONFIG_USB_HSIC_USB3503=y 822 822 CONFIG_AB8500_USB=y 823 823 CONFIG_KEYSTONE_USB_PHY=m 824 - CONFIG_NOP_USB_XCEIV=m 824 + CONFIG_NOP_USB_XCEIV=y 825 825 CONFIG_AM335X_PHY_USB=m 826 826 CONFIG_TWL6030_USB=m 827 827 CONFIG_USB_GPIO_VBUS=y
+1 -3
arch/arm/configs/realview_defconfig
··· 64 64 CONFIG_DRM_DISPLAY_CONNECTOR=y 65 65 CONFIG_DRM_SIMPLE_BRIDGE=y 66 66 CONFIG_DRM_PL111=y 67 - CONFIG_FB_MODE_HELPERS=y 67 + CONFIG_FB=y 68 68 CONFIG_BACKLIGHT_CLASS_DEVICE=y 69 69 CONFIG_LOGO=y 70 - # CONFIG_LOGO_LINUX_MONO is not set 71 - # CONFIG_LOGO_LINUX_VGA16 is not set 72 70 CONFIG_SOUND=y 73 71 CONFIG_SND=y 74 72 # CONFIG_SND_DRIVERS is not set
+1
arch/arm/configs/shmobile_defconfig
··· 135 135 CONFIG_DRM_SIMPLE_BRIDGE=y 136 136 CONFIG_DRM_I2C_ADV7511=y 137 137 CONFIG_DRM_I2C_ADV7511_AUDIO=y 138 + CONFIG_FB=y 138 139 CONFIG_FB_SH_MOBILE_LCDC=y 139 140 CONFIG_BACKLIGHT_PWM=y 140 141 CONFIG_BACKLIGHT_AS3711=y
+5
arch/arm/configs/u8500_defconfig
··· 61 61 CONFIG_TOUCHSCREEN_ATMEL_MXT=y 62 62 CONFIG_TOUCHSCREEN_BU21013=y 63 63 CONFIG_TOUCHSCREEN_CY8CTMA140=y 64 + CONFIG_TOUCHSCREEN_CYTTSP_CORE=y 65 + CONFIG_TOUCHSCREEN_CYTTSP_SPI=y 66 + CONFIG_TOUCHSCREEN_MMS114=y 67 + CONFIG_TOUCHSCREEN_ZINITIX=y 64 68 CONFIG_INPUT_MISC=y 65 69 CONFIG_INPUT_AB8500_PONKEY=y 66 70 CONFIG_INPUT_GPIO_VIBRA=y ··· 104 100 CONFIG_DRM_PANEL_SONY_ACX424AKP=y 105 101 CONFIG_DRM_LIMA=y 106 102 CONFIG_DRM_MCDE=y 103 + CONFIG_FB=y 107 104 CONFIG_BACKLIGHT_CLASS_DEVICE=y 108 105 CONFIG_BACKLIGHT_KTD253=y 109 106 CONFIG_BACKLIGHT_GPIO=y
+1 -3
arch/arm/configs/versatile_defconfig
··· 60 60 CONFIG_DRM_DISPLAY_CONNECTOR=y 61 61 CONFIG_DRM_SIMPLE_BRIDGE=y 62 62 CONFIG_DRM_PL111=y 63 - CONFIG_FB_MODE_HELPERS=y 63 + CONFIG_FB=y 64 64 CONFIG_BACKLIGHT_CLASS_DEVICE=y 65 65 CONFIG_LOGO=y 66 66 CONFIG_SOUND=y ··· 88 88 CONFIG_NFSD_V3=y 89 89 CONFIG_NLS_CODEPAGE_850=m 90 90 CONFIG_NLS_ISO8859_1=m 91 - CONFIG_FONTS=y 92 - CONFIG_FONT_ACORN_8x8=y 93 91 CONFIG_MAGIC_SYSRQ=y 94 92 CONFIG_DEBUG_FS=y 95 93 CONFIG_DEBUG_KERNEL=y
+7 -10
arch/arm/configs/vexpress_defconfig
··· 11 11 # CONFIG_NET_NS is not set 12 12 CONFIG_BLK_DEV_INITRD=y 13 13 CONFIG_PROFILING=y 14 - CONFIG_MODULES=y 15 - CONFIG_MODULE_UNLOAD=y 16 - # CONFIG_BLK_DEV_BSG is not set 17 14 CONFIG_ARCH_VEXPRESS=y 18 15 CONFIG_ARCH_VEXPRESS_DCSCB=y 19 16 CONFIG_ARCH_VEXPRESS_TC2_PM=y ··· 20 23 CONFIG_VMSPLIT_2G=y 21 24 CONFIG_NR_CPUS=8 22 25 CONFIG_ARM_PSCI=y 23 - CONFIG_CMA=y 24 26 CONFIG_ZBOOT_ROM_TEXT=0x0 25 27 CONFIG_ZBOOT_ROM_BSS=0x0 26 28 CONFIG_CMDLINE="console=ttyAMA0" 27 29 CONFIG_CPU_IDLE=y 28 30 CONFIG_VFP=y 29 31 CONFIG_NEON=y 32 + CONFIG_MODULES=y 33 + CONFIG_MODULE_UNLOAD=y 34 + # CONFIG_BLK_DEV_BSG is not set 30 35 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 36 + CONFIG_CMA=y 31 37 CONFIG_NET=y 32 38 CONFIG_PACKET=y 33 39 CONFIG_UNIX=y ··· 43 43 CONFIG_NET_9P=y 44 44 CONFIG_NET_9P_VIRTIO=y 45 45 CONFIG_DEVTMPFS=y 46 - CONFIG_DMA_CMA=y 47 46 CONFIG_MTD=y 48 47 CONFIG_MTD_CMDLINE_PARTS=y 49 48 CONFIG_MTD_BLOCK=y ··· 58 59 CONFIG_BLK_DEV_SD=y 59 60 CONFIG_SCSI_VIRTIO=y 60 61 CONFIG_ATA=y 61 - # CONFIG_SATA_PMP is not set 62 62 CONFIG_NETDEVICES=y 63 63 CONFIG_VIRTIO_NET=y 64 64 CONFIG_SMC91X=y ··· 79 81 CONFIG_DRM_PANEL_SIMPLE=y 80 82 CONFIG_DRM_SII902X=y 81 83 CONFIG_DRM_PL111=y 82 - CONFIG_FB_MODE_HELPERS=y 84 + CONFIG_FB=y 83 85 CONFIG_BACKLIGHT_CLASS_DEVICE=y 84 86 CONFIG_LOGO=y 85 - # CONFIG_LOGO_LINUX_MONO is not set 86 - # CONFIG_LOGO_LINUX_VGA16 is not set 87 87 CONFIG_SOUND=y 88 88 CONFIG_SND=y 89 89 # CONFIG_SND_DRIVERS is not set ··· 132 136 CONFIG_9P_FS=y 133 137 CONFIG_NLS_CODEPAGE_437=y 134 138 CONFIG_NLS_ISO8859_1=y 139 + # CONFIG_CRYPTO_HW is not set 140 + CONFIG_DMA_CMA=y 135 141 CONFIG_DEBUG_INFO=y 136 142 CONFIG_MAGIC_SYSRQ=y 137 143 CONFIG_DEBUG_KERNEL=y 138 144 CONFIG_DETECT_HUNG_TASK=y 139 145 # CONFIG_SCHED_DEBUG is not set 140 146 CONFIG_DEBUG_USER=y 141 - # CONFIG_CRYPTO_HW is not set
+13
arch/arm64/boot/dts/nvidia/tegra194.dtsi
··· 948 948 <&bpmp TEGRA194_CLK_XUSB_SS>, 949 949 <&bpmp TEGRA194_CLK_XUSB_FS>; 950 950 clock-names = "dev", "ss", "ss_src", "fs_src"; 951 + interconnects = <&mc TEGRA194_MEMORY_CLIENT_XUSB_DEVR &emc>, 952 + <&mc TEGRA194_MEMORY_CLIENT_XUSB_DEVW &emc>; 953 + interconnect-names = "dma-mem", "write"; 954 + iommus = <&smmu TEGRA194_SID_XUSB_DEV>; 951 955 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_XUSBB>, 952 956 <&bpmp TEGRA194_POWER_DOMAIN_XUSBA>; 953 957 power-domain-names = "dev", "ss"; ··· 981 977 "xusb_ss", "xusb_ss_src", "xusb_hs_src", 982 978 "xusb_fs_src", "pll_u_480m", "clk_m", 983 979 "pll_e"; 980 + interconnects = <&mc TEGRA194_MEMORY_CLIENT_XUSB_HOSTR &emc>, 981 + <&mc TEGRA194_MEMORY_CLIENT_XUSB_HOSTW &emc>; 982 + interconnect-names = "dma-mem", "write"; 983 + iommus = <&smmu TEGRA194_SID_XUSB_HOST>; 984 984 985 985 power-domains = <&bpmp TEGRA194_POWER_DOMAIN_XUSBC>, 986 986 <&bpmp TEGRA194_POWER_DOMAIN_XUSBA>; ··· 2477 2469 * for 8x and 11.025x sample rate streams. 2478 2470 */ 2479 2471 assigned-clock-rates = <258000000>; 2472 + 2473 + interconnects = <&mc TEGRA194_MEMORY_CLIENT_APEDMAR &emc>, 2474 + <&mc TEGRA194_MEMORY_CLIENT_APEDMAW &emc>; 2475 + interconnect-names = "dma-mem", "write"; 2476 + iommus = <&smmu TEGRA194_SID_APE>; 2480 2477 }; 2481 2478 2482 2479 tcu: tcu {
+2 -2
arch/arm64/boot/dts/renesas/r9a07g044.dtsi
··· 82 82 <GIC_SPI 384 IRQ_TYPE_LEVEL_HIGH>; 83 83 interrupt-names = "eri", "rxi", "txi", 84 84 "bri", "dri", "tei"; 85 - clocks = <&cpg CPG_MOD R9A07G044_CLK_SCIF0>; 85 + clocks = <&cpg CPG_MOD R9A07G044_SCIF0_CLK_PCK>; 86 86 clock-names = "fck"; 87 87 power-domains = <&cpg>; 88 - resets = <&cpg R9A07G044_CLK_SCIF0>; 88 + resets = <&cpg R9A07G044_SCIF0_RST_SYSTEM_N>; 89 89 status = "disabled"; 90 90 }; 91 91
+47 -32
drivers/clk/renesas/r9a07g044-cpg.c
··· 30 30 CLK_PLL2_DIV20, 31 31 CLK_PLL3, 32 32 CLK_PLL3_DIV2, 33 + CLK_PLL3_DIV2_4, 34 + CLK_PLL3_DIV2_4_2, 33 35 CLK_PLL3_DIV4, 34 - CLK_PLL3_DIV8, 35 36 CLK_PLL4, 36 37 CLK_PLL5, 37 38 CLK_PLL5_DIV2, ··· 43 42 }; 44 43 45 44 /* Divider tables */ 46 - static const struct clk_div_table dtable_3b[] = { 45 + static const struct clk_div_table dtable_1_32[] = { 47 46 {0, 1}, 48 47 {1, 2}, 49 48 {2, 4}, 50 49 {3, 8}, 51 50 {4, 32}, 51 + {0, 0}, 52 52 }; 53 53 54 54 static const struct cpg_core_clk r9a07g044_core_clks[] __initconst = { ··· 68 66 DEF_FIXED(".pll2_div20", CLK_PLL2_DIV20, CLK_PLL2, 1, 20), 69 67 70 68 DEF_FIXED(".pll3_div2", CLK_PLL3_DIV2, CLK_PLL3, 1, 2), 69 + DEF_FIXED(".pll3_div2_4", CLK_PLL3_DIV2_4, CLK_PLL3_DIV2, 1, 4), 70 + DEF_FIXED(".pll3_div2_4_2", CLK_PLL3_DIV2_4_2, CLK_PLL3_DIV2_4, 1, 2), 71 71 DEF_FIXED(".pll3_div4", CLK_PLL3_DIV4, CLK_PLL3, 1, 4), 72 - DEF_FIXED(".pll3_div8", CLK_PLL3_DIV8, CLK_PLL3, 1, 8), 73 72 74 73 /* Core output clk */ 75 74 DEF_FIXED("I", R9A07G044_CLK_I, CLK_PLL1, 1, 1), 76 75 DEF_DIV("P0", R9A07G044_CLK_P0, CLK_PLL2_DIV16, DIVPL2A, 77 - dtable_3b, CLK_DIVIDER_HIWORD_MASK), 76 + dtable_1_32, CLK_DIVIDER_HIWORD_MASK), 78 77 DEF_FIXED("TSU", R9A07G044_CLK_TSU, CLK_PLL2_DIV20, 1, 1), 79 - DEF_DIV("P1", R9A07G044_CLK_P1, CLK_PLL3_DIV8, 80 - DIVPL3B, dtable_3b, CLK_DIVIDER_HIWORD_MASK), 78 + DEF_DIV("P1", R9A07G044_CLK_P1, CLK_PLL3_DIV2_4, 79 + DIVPL3B, dtable_1_32, CLK_DIVIDER_HIWORD_MASK), 80 + DEF_DIV("P2", R9A07G044_CLK_P2, CLK_PLL3_DIV2_4_2, 81 + DIVPL3A, dtable_1_32, CLK_DIVIDER_HIWORD_MASK), 81 82 }; 82 83 83 84 static struct rzg2l_mod_clk r9a07g044_mod_clks[] = { 84 - DEF_MOD("gic", R9A07G044_CLK_GIC600, 85 - R9A07G044_CLK_P1, 86 - 0x514, BIT(0), (BIT(0) | BIT(1))), 87 - DEF_MOD("ia55", R9A07G044_CLK_IA55, 88 - R9A07G044_CLK_P1, 89 - 0x518, (BIT(0) | BIT(1)), BIT(0)), 90 - DEF_MOD("scif0", R9A07G044_CLK_SCIF0, 91 - R9A07G044_CLK_P0, 92 - 0x584, BIT(0), BIT(0)), 93 - DEF_MOD("scif1", R9A07G044_CLK_SCIF1, 94 - R9A07G044_CLK_P0, 95 - 0x584, BIT(1), BIT(1)), 96 - DEF_MOD("scif2", R9A07G044_CLK_SCIF2, 97 - R9A07G044_CLK_P0, 98 - 0x584, BIT(2), BIT(2)), 99 - DEF_MOD("scif3", R9A07G044_CLK_SCIF3, 100 - R9A07G044_CLK_P0, 101 - 0x584, BIT(3), BIT(3)), 102 - DEF_MOD("scif4", R9A07G044_CLK_SCIF4, 103 - R9A07G044_CLK_P0, 104 - 0x584, BIT(4), BIT(4)), 105 - DEF_MOD("sci0", R9A07G044_CLK_SCI0, 106 - R9A07G044_CLK_P0, 107 - 0x588, BIT(0), BIT(0)), 85 + DEF_MOD("gic", R9A07G044_GIC600_GICCLK, R9A07G044_CLK_P1, 86 + 0x514, 0), 87 + DEF_MOD("ia55_pclk", R9A07G044_IA55_PCLK, R9A07G044_CLK_P2, 88 + 0x518, 0), 89 + DEF_MOD("ia55_clk", R9A07G044_IA55_CLK, R9A07G044_CLK_P1, 90 + 0x518, 1), 91 + DEF_MOD("scif0", R9A07G044_SCIF0_CLK_PCK, R9A07G044_CLK_P0, 92 + 0x584, 0), 93 + DEF_MOD("scif1", R9A07G044_SCIF1_CLK_PCK, R9A07G044_CLK_P0, 94 + 0x584, 1), 95 + DEF_MOD("scif2", R9A07G044_SCIF2_CLK_PCK, R9A07G044_CLK_P0, 96 + 0x584, 2), 97 + DEF_MOD("scif3", R9A07G044_SCIF3_CLK_PCK, R9A07G044_CLK_P0, 98 + 0x584, 3), 99 + DEF_MOD("scif4", R9A07G044_SCIF4_CLK_PCK, R9A07G044_CLK_P0, 100 + 0x584, 4), 101 + DEF_MOD("sci0", R9A07G044_SCI0_CLKP, R9A07G044_CLK_P0, 102 + 0x588, 0), 103 + }; 104 + 105 + static struct rzg2l_reset r9a07g044_resets[] = { 106 + DEF_RST(R9A07G044_GIC600_GICRESET_N, 0x814, 0), 107 + DEF_RST(R9A07G044_GIC600_DBG_GICRESET_N, 0x814, 1), 108 + DEF_RST(R9A07G044_IA55_RESETN, 0x818, 0), 109 + DEF_RST(R9A07G044_SCIF0_RST_SYSTEM_N, 0x884, 0), 110 + DEF_RST(R9A07G044_SCIF1_RST_SYSTEM_N, 0x884, 1), 111 + DEF_RST(R9A07G044_SCIF2_RST_SYSTEM_N, 0x884, 2), 112 + DEF_RST(R9A07G044_SCIF3_RST_SYSTEM_N, 0x884, 3), 113 + DEF_RST(R9A07G044_SCIF4_RST_SYSTEM_N, 0x884, 4), 114 + DEF_RST(R9A07G044_SCI0_RST, 0x888, 0), 108 115 }; 109 116 110 117 static const unsigned int r9a07g044_crit_mod_clks[] __initconst = { 111 - MOD_CLK_BASE + R9A07G044_CLK_GIC600, 118 + MOD_CLK_BASE + R9A07G044_GIC600_GICCLK, 112 119 }; 113 120 114 121 const struct rzg2l_cpg_info r9a07g044_cpg_info = { ··· 134 123 /* Module Clocks */ 135 124 .mod_clks = r9a07g044_mod_clks, 136 125 .num_mod_clks = ARRAY_SIZE(r9a07g044_mod_clks), 137 - .num_hw_mod_clks = R9A07G044_CLK_MIPI_DSI_PIN + 1, 126 + .num_hw_mod_clks = R9A07G044_TSU_PCLK + 1, 127 + 128 + /* Resets */ 129 + .resets = r9a07g044_resets, 130 + .num_resets = ARRAY_SIZE(r9a07g044_resets), 138 131 };
+58 -50
drivers/clk/renesas/renesas-rzg2l-cpg.c
··· 47 47 #define SDIV(val) DIV_RSMASK(val, 0, 0x7) 48 48 49 49 #define CLK_ON_R(reg) (reg) 50 - #define CLK_MON_R(reg) (0x680 - 0x500 + (reg)) 51 - #define CLK_RST_R(reg) (0x800 - 0x500 + (reg)) 52 - #define CLK_MRST_R(reg) (0x980 - 0x500 + (reg)) 50 + #define CLK_MON_R(reg) (0x180 + (reg)) 51 + #define CLK_RST_R(reg) (reg) 52 + #define CLK_MRST_R(reg) (0x180 + (reg)) 53 53 54 54 #define GET_REG_OFFSET(val) ((val >> 20) & 0xfff) 55 55 #define GET_REG_SAMPLL_CLK1(val) ((val >> 22) & 0xfff) ··· 78 78 struct clk **clks; 79 79 unsigned int num_core_clks; 80 80 unsigned int num_mod_clks; 81 + unsigned int num_resets; 81 82 unsigned int last_dt_core_clk; 82 83 83 84 struct raw_notifier_head notifiers; ··· 316 315 * 317 316 * @hw: handle between common and hardware-specific interfaces 318 317 * @off: register offset 319 - * @onoff: ON/MON bits 320 - * @reset: reset bits 318 + * @bit: ON/MON bit 321 319 * @priv: CPG/MSTP private data 322 320 */ 323 321 struct mstp_clock { 324 322 struct clk_hw hw; 325 323 u16 off; 326 - u8 onoff; 327 - u8 reset; 324 + u8 bit; 328 325 struct rzg2l_cpg_priv *priv; 329 326 }; 330 327 ··· 336 337 struct device *dev = priv->dev; 337 338 unsigned long flags; 338 339 unsigned int i; 340 + u32 bitmask = BIT(clock->bit); 339 341 u32 value; 340 342 341 343 if (!clock->off) { ··· 349 349 spin_lock_irqsave(&priv->rmw_lock, flags); 350 350 351 351 if (enable) 352 - value = (clock->onoff << 16) | clock->onoff; 352 + value = (bitmask << 16) | bitmask; 353 353 else 354 - value = clock->onoff << 16; 354 + value = bitmask << 16; 355 355 writel(value, priv->base + CLK_ON_R(reg)); 356 356 357 357 spin_unlock_irqrestore(&priv->rmw_lock, flags); ··· 360 360 return 0; 361 361 362 362 for (i = 1000; i > 0; --i) { 363 - if (((readl(priv->base + CLK_MON_R(reg))) & clock->onoff)) 363 + if (((readl(priv->base + CLK_MON_R(reg))) & bitmask)) 364 364 break; 365 365 cpu_relax(); 366 366 } ··· 388 388 { 389 389 struct mstp_clock *clock = to_mod_clock(hw); 390 390 struct rzg2l_cpg_priv *priv = clock->priv; 391 + u32 bitmask = BIT(clock->bit); 391 392 u32 value; 392 393 393 394 if (!clock->off) { ··· 398 397 399 398 value = readl(priv->base + CLK_MON_R(clock->off)); 400 399 401 - return !(value & clock->onoff); 400 + return !(value & bitmask); 402 401 } 403 402 404 403 static const struct clk_ops rzg2l_mod_clock_ops = { ··· 458 457 init.num_parents = 1; 459 458 460 459 clock->off = mod->off; 461 - clock->onoff = mod->onoff; 462 - clock->reset = mod->reset; 460 + clock->bit = mod->bit; 463 461 clock->priv = priv; 464 462 clock->hw.init = &init; 465 463 ··· 483 483 { 484 484 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev); 485 485 const struct rzg2l_cpg_info *info = priv->info; 486 - unsigned int reg = info->mod_clks[id].off; 487 - u32 dis = info->mod_clks[id].reset; 486 + unsigned int reg = info->resets[id].off; 487 + u32 dis = BIT(info->resets[id].bit); 488 488 u32 we = dis << 16; 489 489 490 - dev_dbg(rcdev->dev, "reset name:%s id:%ld offset:0x%x\n", 491 - info->mod_clks[id].name, id, CLK_RST_R(reg)); 490 + dev_dbg(rcdev->dev, "reset id:%ld offset:0x%x\n", id, CLK_RST_R(reg)); 492 491 493 492 /* Reset module */ 494 493 writel(we, priv->base + CLK_RST_R(reg)); ··· 506 507 { 507 508 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev); 508 509 const struct rzg2l_cpg_info *info = priv->info; 509 - unsigned int reg = info->mod_clks[id].off; 510 - u32 value = info->mod_clks[id].reset << 16; 510 + unsigned int reg = info->resets[id].off; 511 + u32 value = BIT(info->resets[id].bit) << 16; 511 512 512 - dev_dbg(rcdev->dev, "assert name:%s id:%ld offset:0x%x\n", 513 - info->mod_clks[id].name, id, CLK_RST_R(reg)); 513 + dev_dbg(rcdev->dev, "assert id:%ld offset:0x%x\n", id, CLK_RST_R(reg)); 514 514 515 515 writel(value, priv->base + CLK_RST_R(reg)); 516 516 return 0; ··· 520 522 { 521 523 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev); 522 524 const struct rzg2l_cpg_info *info = priv->info; 523 - unsigned int reg = info->mod_clks[id].off; 524 - u32 dis = info->mod_clks[id].reset; 525 + unsigned int reg = info->resets[id].off; 526 + u32 dis = BIT(info->resets[id].bit); 525 527 u32 value = (dis << 16) | dis; 526 528 527 - dev_dbg(rcdev->dev, "deassert name:%s id:%ld offset:0x%x\n", 528 - info->mod_clks[id].name, id, CLK_RST_R(reg)); 529 + dev_dbg(rcdev->dev, "deassert id:%ld offset:0x%x\n", id, 530 + CLK_RST_R(reg)); 529 531 530 532 writel(value, priv->base + CLK_RST_R(reg)); 531 533 return 0; ··· 536 538 { 537 539 struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev); 538 540 const struct rzg2l_cpg_info *info = priv->info; 539 - unsigned int reg = info->mod_clks[id].off; 540 - u32 bitmask = info->mod_clks[id].reset; 541 + unsigned int reg = info->resets[id].off; 542 + u32 bitmask = BIT(info->resets[id].bit); 541 543 542 544 return !(readl(priv->base + CLK_MRST_R(reg)) & bitmask); 543 545 } ··· 552 554 static int rzg2l_cpg_reset_xlate(struct reset_controller_dev *rcdev, 553 555 const struct of_phandle_args *reset_spec) 554 556 { 557 + struct rzg2l_cpg_priv *priv = rcdev_to_priv(rcdev); 558 + const struct rzg2l_cpg_info *info = priv->info; 555 559 unsigned int id = reset_spec->args[0]; 556 560 557 - if (id >= rcdev->nr_resets) { 561 + if (id >= rcdev->nr_resets || !info->resets[id].off) { 558 562 dev_err(rcdev->dev, "Invalid reset index %u\n", id); 559 563 return -EINVAL; 560 564 } ··· 571 571 priv->rcdev.dev = priv->dev; 572 572 priv->rcdev.of_reset_n_cells = 1; 573 573 priv->rcdev.of_xlate = rzg2l_cpg_reset_xlate; 574 - priv->rcdev.nr_resets = priv->num_mod_clks; 574 + priv->rcdev.nr_resets = priv->num_resets; 575 575 576 576 return devm_reset_controller_register(priv->dev, &priv->rcdev); 577 577 } ··· 594 594 { 595 595 struct device_node *np = dev->of_node; 596 596 struct of_phandle_args clkspec; 597 + bool once = true; 597 598 struct clk *clk; 598 599 int error; 599 600 int i = 0; 600 601 601 602 while (!of_parse_phandle_with_args(np, "clocks", "#clock-cells", i, 602 603 &clkspec)) { 603 - if (rzg2l_cpg_is_pm_clk(&clkspec)) 604 - goto found; 604 + if (rzg2l_cpg_is_pm_clk(&clkspec)) { 605 + if (once) { 606 + once = false; 607 + error = pm_clk_create(dev); 608 + if (error) { 609 + of_node_put(clkspec.np); 610 + goto err; 611 + } 612 + } 613 + clk = of_clk_get_from_provider(&clkspec); 614 + of_node_put(clkspec.np); 615 + if (IS_ERR(clk)) { 616 + error = PTR_ERR(clk); 617 + goto fail_destroy; 618 + } 605 619 606 - of_node_put(clkspec.np); 620 + error = pm_clk_add_clk(dev, clk); 621 + if (error) { 622 + dev_err(dev, "pm_clk_add_clk failed %d\n", 623 + error); 624 + goto fail_put; 625 + } 626 + } else { 627 + of_node_put(clkspec.np); 628 + } 607 629 i++; 608 630 } 609 631 610 632 return 0; 611 633 612 - found: 613 - clk = of_clk_get_from_provider(&clkspec); 614 - of_node_put(clkspec.np); 615 - 616 - if (IS_ERR(clk)) 617 - return PTR_ERR(clk); 618 - 619 - error = pm_clk_create(dev); 620 - if (error) 621 - goto fail_put; 622 - 623 - error = pm_clk_add_clk(dev, clk); 624 - if (error) 625 - goto fail_destroy; 626 - 627 - return 0; 634 + fail_put: 635 + clk_put(clk); 628 636 629 637 fail_destroy: 630 638 pm_clk_destroy(dev); 631 - fail_put: 632 - clk_put(clk); 639 + err: 633 640 return error; 634 641 } 635 642 ··· 699 692 priv->clks = clks; 700 693 priv->num_core_clks = info->num_total_core_clks; 701 694 priv->num_mod_clks = info->num_hw_mod_clks; 695 + priv->num_resets = info->num_resets; 702 696 priv->last_dt_core_clk = info->last_dt_core_clk; 703 697 704 698 for (i = 0; i < nclks; i++)
+28 -9
drivers/clk/renesas/renesas-rzg2l-cpg.h
··· 21 21 #define DDIV_PACK(offset, bitpos, size) \ 22 22 (((offset) << 20) | ((bitpos) << 12) | ((size) << 8)) 23 23 #define DIVPL2A DDIV_PACK(CPG_PL2_DDIV, 0, 3) 24 + #define DIVPL3A DDIV_PACK(CPG_PL3A_DDIV, 0, 3) 24 25 #define DIVPL3B DDIV_PACK(CPG_PL3A_DDIV, 4, 3) 25 26 26 27 /** ··· 77 76 * @id: clock index in array containing all Core and Module Clocks 78 77 * @parent: id of parent clock 79 78 * @off: register offset 80 - * @onoff: ON/MON bits 81 - * @reset: reset bits 79 + * @bit: ON/MON bit 82 80 */ 83 81 struct rzg2l_mod_clk { 84 82 const char *name; 85 83 unsigned int id; 86 84 unsigned int parent; 87 85 u16 off; 88 - u8 onoff; 89 - u8 reset; 86 + u8 bit; 90 87 }; 91 88 92 - #define DEF_MOD(_name, _id, _parent, _off, _onoff, _reset) \ 93 - [_id] = { \ 89 + #define DEF_MOD(_name, _id, _parent, _off, _bit) \ 90 + { \ 94 91 .name = _name, \ 95 - .id = MOD_CLK_BASE + _id, \ 92 + .id = MOD_CLK_BASE + (_id), \ 96 93 .parent = (_parent), \ 97 94 .off = (_off), \ 98 - .onoff = (_onoff), \ 99 - .reset = (_reset) \ 95 + .bit = (_bit), \ 96 + } 97 + 98 + /** 99 + * struct rzg2l_reset - Reset definitions 100 + * 101 + * @off: register offset 102 + * @bit: reset bit 103 + */ 104 + struct rzg2l_reset { 105 + u16 off; 106 + u8 bit; 107 + }; 108 + 109 + #define DEF_RST(_id, _off, _bit) \ 110 + [_id] = { \ 111 + .off = (_off), \ 112 + .bit = (_bit) \ 100 113 } 101 114 102 115 /** ··· 140 125 const struct rzg2l_mod_clk *mod_clks; 141 126 unsigned int num_mod_clks; 142 127 unsigned int num_hw_mod_clks; 128 + 129 + /* Resets */ 130 + const struct rzg2l_reset *resets; 131 + unsigned int num_resets; 143 132 144 133 /* Critical Module Clocks that should not be disabled */ 145 134 const unsigned int *crit_mod_clks;
+3 -3
drivers/firmware/arm_ffa/bus.c
··· 46 46 struct ffa_driver *ffa_drv = to_ffa_driver(dev->driver); 47 47 struct ffa_device *ffa_dev = to_ffa_dev(dev); 48 48 49 - if (!ffa_device_match(dev, dev->driver)) 50 - return -ENODEV; 51 - 52 49 return ffa_drv->probe(ffa_dev); 53 50 } 54 51 ··· 95 98 const char *mod_name) 96 99 { 97 100 int ret; 101 + 102 + if (!driver->probe) 103 + return -EINVAL; 98 104 99 105 driver->driver.bus = &ffa_bus_type; 100 106 driver->driver.name = driver->name;
+5 -3
drivers/firmware/arm_ffa/driver.c
··· 120 120 #define PACK_TARGET_INFO(s, r) \ 121 121 (FIELD_PREP(SENDER_ID_MASK, (s)) | FIELD_PREP(RECEIVER_ID_MASK, (r))) 122 122 123 - /** 123 + /* 124 124 * FF-A specification mentions explicitly about '4K pages'. This should 125 125 * not be confused with the kernel PAGE_SIZE, which is the translation 126 126 * granule kernel is configured and may be one among 4K, 16K and 64K. ··· 149 149 150 150 static inline int ffa_to_linux_errno(int errno) 151 151 { 152 - if (errno < FFA_RET_SUCCESS && errno >= -ARRAY_SIZE(ffa_linux_errmap)) 153 - return ffa_linux_errmap[-errno]; 152 + int err_idx = -errno; 153 + 154 + if (err_idx >= 0 && err_idx < ARRAY_SIZE(ffa_linux_errmap)) 155 + return ffa_linux_errmap[err_idx]; 154 156 return -EINVAL; 155 157 } 156 158
+3 -5
drivers/firmware/arm_scmi/bus.c
··· 104 104 { 105 105 struct scmi_driver *scmi_drv = to_scmi_driver(dev->driver); 106 106 struct scmi_device *scmi_dev = to_scmi_dev(dev); 107 - const struct scmi_device_id *id; 108 - 109 - id = scmi_dev_match_id(scmi_dev, scmi_drv); 110 - if (!id) 111 - return -ENODEV; 112 107 113 108 if (!scmi_dev->handle) 114 109 return -EPROBE_DEFER; ··· 133 138 const char *mod_name) 134 139 { 135 140 int retval; 141 + 142 + if (!driver->probe) 143 + return -EINVAL; 136 144 137 145 retval = scmi_protocol_device_request(driver->id_table); 138 146 if (retval)
+9 -5
drivers/firmware/arm_scmi/driver.c
··· 47 47 SCMI_ERR_GENERIC = -8, /* Generic Error */ 48 48 SCMI_ERR_HARDWARE = -9, /* Hardware Error */ 49 49 SCMI_ERR_PROTOCOL = -10,/* Protocol Error */ 50 - SCMI_ERR_MAX 51 50 }; 52 51 53 52 /* List of all SCMI devices active in system */ ··· 165 166 166 167 static inline int scmi_to_linux_errno(int errno) 167 168 { 168 - if (errno < SCMI_SUCCESS && errno > SCMI_ERR_MAX) 169 - return scmi_linux_errmap[-errno]; 169 + int err_idx = -errno; 170 + 171 + if (err_idx >= SCMI_SUCCESS && err_idx < ARRAY_SIZE(scmi_linux_errmap)) 172 + return scmi_linux_errmap[err_idx]; 170 173 return -EIO; 171 174 } 172 175 ··· 1026 1025 const struct scmi_desc *desc = sinfo->desc; 1027 1026 1028 1027 /* Pre-allocated messages, no more than what hdr.seq can support */ 1029 - if (WARN_ON(desc->max_msg >= MSG_TOKEN_MAX)) { 1030 - dev_err(dev, "Maximum message of %d exceeds supported %ld\n", 1028 + if (WARN_ON(!desc->max_msg || desc->max_msg > MSG_TOKEN_MAX)) { 1029 + dev_err(dev, 1030 + "Invalid maximum messages %d, not in range [1 - %lu]\n", 1031 1031 desc->max_msg, MSG_TOKEN_MAX); 1032 1032 return -EINVAL; 1033 1033 } ··· 1139 1137 * @proto_id and @name: if device was still not existent it is created as a 1140 1138 * child of the specified SCMI instance @info and its transport properly 1141 1139 * initialized as usual. 1140 + * 1141 + * Return: A properly initialized scmi device, NULL otherwise. 1142 1142 */ 1143 1143 static inline struct scmi_device * 1144 1144 scmi_get_protocol_device(struct device_node *np, struct scmi_info *info,
+4
drivers/firmware/arm_scmi/notify.c
··· 1457 1457 * 1458 1458 * Generic devres managed helper to register a notifier_block against a 1459 1459 * protocol event. 1460 + * 1461 + * Return: 0 on Success 1460 1462 */ 1461 1463 static int scmi_devm_notifier_register(struct scmi_device *sdev, 1462 1464 u8 proto_id, u8 evt_id, ··· 1525 1523 * Generic devres managed helper to explicitly un-register a notifier_block 1526 1524 * against a protocol event, which was previously registered using the above 1527 1525 * @scmi_devm_notifier_register. 1526 + * 1527 + * Return: 0 on Success 1528 1528 */ 1529 1529 static int scmi_devm_notifier_unregister(struct scmi_device *sdev, 1530 1530 u8 proto_id, u8 evt_id,
+4 -2
drivers/firmware/arm_scmi/sensors.c
··· 166 166 167 167 struct scmi_resp_sensor_reading_complete { 168 168 __le32 id; 169 - __le64 readings; 169 + __le32 readings_low; 170 + __le32 readings_high; 170 171 }; 171 172 172 173 struct scmi_sensor_reading_resp { ··· 718 717 719 718 resp = t->rx.buf; 720 719 if (le32_to_cpu(resp->id) == sensor_id) 721 - *value = get_unaligned_le64(&resp->readings); 720 + *value = 721 + get_unaligned_le64(&resp->readings_low); 722 722 else 723 723 ret = -EPROTO; 724 724 }
+183 -53
include/dt-bindings/clock/r9a07g044-cpg.h
··· 32 32 #define R9A07G044_OSCCLK 21 33 33 34 34 /* R9A07G044 Module Clocks */ 35 - #define R9A07G044_CLK_GIC600 0 36 - #define R9A07G044_CLK_IA55 1 37 - #define R9A07G044_CLK_SYC 2 38 - #define R9A07G044_CLK_DMAC 3 39 - #define R9A07G044_CLK_SYSC 4 40 - #define R9A07G044_CLK_MTU 5 41 - #define R9A07G044_CLK_GPT 6 42 - #define R9A07G044_CLK_ETH0 7 43 - #define R9A07G044_CLK_ETH1 8 44 - #define R9A07G044_CLK_I2C0 9 45 - #define R9A07G044_CLK_I2C1 10 46 - #define R9A07G044_CLK_I2C2 11 47 - #define R9A07G044_CLK_I2C3 12 48 - #define R9A07G044_CLK_SCIF0 13 49 - #define R9A07G044_CLK_SCIF1 14 50 - #define R9A07G044_CLK_SCIF2 15 51 - #define R9A07G044_CLK_SCIF3 16 52 - #define R9A07G044_CLK_SCIF4 17 53 - #define R9A07G044_CLK_SCI0 18 54 - #define R9A07G044_CLK_SCI1 19 55 - #define R9A07G044_CLK_GPIO 20 56 - #define R9A07G044_CLK_SDHI0 21 57 - #define R9A07G044_CLK_SDHI1 22 58 - #define R9A07G044_CLK_USB0 23 59 - #define R9A07G044_CLK_USB1 24 60 - #define R9A07G044_CLK_CANFD 25 61 - #define R9A07G044_CLK_SSI0 26 62 - #define R9A07G044_CLK_SSI1 27 63 - #define R9A07G044_CLK_SSI2 28 64 - #define R9A07G044_CLK_SSI3 29 65 - #define R9A07G044_CLK_MHU 30 66 - #define R9A07G044_CLK_OSTM0 31 67 - #define R9A07G044_CLK_OSTM1 32 68 - #define R9A07G044_CLK_OSTM2 33 69 - #define R9A07G044_CLK_WDT0 34 70 - #define R9A07G044_CLK_WDT1 35 71 - #define R9A07G044_CLK_WDT2 36 72 - #define R9A07G044_CLK_WDT_PON 37 73 - #define R9A07G044_CLK_GPU 38 74 - #define R9A07G044_CLK_ISU 39 75 - #define R9A07G044_CLK_H264 40 76 - #define R9A07G044_CLK_CRU 41 77 - #define R9A07G044_CLK_MIPI_DSI 42 78 - #define R9A07G044_CLK_LCDC 43 79 - #define R9A07G044_CLK_SRC 44 80 - #define R9A07G044_CLK_RSPI0 45 81 - #define R9A07G044_CLK_RSPI1 46 82 - #define R9A07G044_CLK_RSPI2 47 83 - #define R9A07G044_CLK_ADC 48 84 - #define R9A07G044_CLK_TSU_PCLK 49 85 - #define R9A07G044_CLK_SPI 50 86 - #define R9A07G044_CLK_MIPI_DSI_V 51 87 - #define R9A07G044_CLK_MIPI_DSI_PIN 52 35 + #define R9A07G044_CA55_SCLK 0 36 + #define R9A07G044_CA55_PCLK 1 37 + #define R9A07G044_CA55_ATCLK 2 38 + #define R9A07G044_CA55_GICCLK 3 39 + #define R9A07G044_CA55_PERICLK 4 40 + #define R9A07G044_CA55_ACLK 5 41 + #define R9A07G044_CA55_TSCLK 6 42 + #define R9A07G044_GIC600_GICCLK 7 43 + #define R9A07G044_IA55_CLK 8 44 + #define R9A07G044_IA55_PCLK 9 45 + #define R9A07G044_MHU_PCLK 10 46 + #define R9A07G044_SYC_CNT_CLK 11 47 + #define R9A07G044_DMAC_ACLK 12 48 + #define R9A07G044_DMAC_PCLK 13 49 + #define R9A07G044_OSTM0_PCLK 14 50 + #define R9A07G044_OSTM1_PCLK 15 51 + #define R9A07G044_OSTM2_PCLK 16 52 + #define R9A07G044_MTU_X_MCK_MTU3 17 53 + #define R9A07G044_POE3_CLKM_POE 18 54 + #define R9A07G044_GPT_PCLK 19 55 + #define R9A07G044_POEG_A_CLKP 20 56 + #define R9A07G044_POEG_B_CLKP 21 57 + #define R9A07G044_POEG_C_CLKP 22 58 + #define R9A07G044_POEG_D_CLKP 23 59 + #define R9A07G044_WDT0_PCLK 24 60 + #define R9A07G044_WDT0_CLK 25 61 + #define R9A07G044_WDT1_PCLK 26 62 + #define R9A07G044_WDT1_CLK 27 63 + #define R9A07G044_WDT2_PCLK 28 64 + #define R9A07G044_WDT2_CLK 29 65 + #define R9A07G044_SPI_CLK2 30 66 + #define R9A07G044_SPI_CLK 31 67 + #define R9A07G044_SDHI0_IMCLK 32 68 + #define R9A07G044_SDHI0_IMCLK2 33 69 + #define R9A07G044_SDHI0_CLK_HS 34 70 + #define R9A07G044_SDHI0_ACLK 35 71 + #define R9A07G044_SDHI1_IMCLK 36 72 + #define R9A07G044_SDHI1_IMCLK2 37 73 + #define R9A07G044_SDHI1_CLK_HS 38 74 + #define R9A07G044_SDHI1_ACLK 39 75 + #define R9A07G044_GPU_CLK 40 76 + #define R9A07G044_GPU_AXI_CLK 41 77 + #define R9A07G044_GPU_ACE_CLK 42 78 + #define R9A07G044_ISU_ACLK 43 79 + #define R9A07G044_ISU_PCLK 44 80 + #define R9A07G044_H264_CLK_A 45 81 + #define R9A07G044_H264_CLK_P 46 82 + #define R9A07G044_CRU_SYSCLK 47 83 + #define R9A07G044_CRU_VCLK 48 84 + #define R9A07G044_CRU_PCLK 49 85 + #define R9A07G044_CRU_ACLK 50 86 + #define R9A07G044_MIPI_DSI_PLLCLK 51 87 + #define R9A07G044_MIPI_DSI_SYSCLK 52 88 + #define R9A07G044_MIPI_DSI_ACLK 53 89 + #define R9A07G044_MIPI_DSI_PCLK 54 90 + #define R9A07G044_MIPI_DSI_VCLK 55 91 + #define R9A07G044_MIPI_DSI_LPCLK 56 92 + #define R9A07G044_LCDC_CLK_A 57 93 + #define R9A07G044_LCDC_CLK_P 58 94 + #define R9A07G044_LCDC_CLK_D 59 95 + #define R9A07G044_SSI0_PCLK2 60 96 + #define R9A07G044_SSI0_PCLK_SFR 61 97 + #define R9A07G044_SSI1_PCLK2 62 98 + #define R9A07G044_SSI1_PCLK_SFR 63 99 + #define R9A07G044_SSI2_PCLK2 64 100 + #define R9A07G044_SSI2_PCLK_SFR 65 101 + #define R9A07G044_SSI3_PCLK2 66 102 + #define R9A07G044_SSI3_PCLK_SFR 67 103 + #define R9A07G044_SRC_CLKP 68 104 + #define R9A07G044_USB_U2H0_HCLK 69 105 + #define R9A07G044_USB_U2H1_HCLK 70 106 + #define R9A07G044_USB_U2P_EXR_CPUCLK 71 107 + #define R9A07G044_USB_PCLK 72 108 + #define R9A07G044_ETH0_CLK_AXI 73 109 + #define R9A07G044_ETH0_CLK_CHI 74 110 + #define R9A07G044_ETH1_CLK_AXI 75 111 + #define R9A07G044_ETH1_CLK_CHI 76 112 + #define R9A07G044_I2C0_PCLK 77 113 + #define R9A07G044_I2C1_PCLK 78 114 + #define R9A07G044_I2C2_PCLK 79 115 + #define R9A07G044_I2C3_PCLK 80 116 + #define R9A07G044_SCIF0_CLK_PCK 81 117 + #define R9A07G044_SCIF1_CLK_PCK 82 118 + #define R9A07G044_SCIF2_CLK_PCK 83 119 + #define R9A07G044_SCIF3_CLK_PCK 84 120 + #define R9A07G044_SCIF4_CLK_PCK 85 121 + #define R9A07G044_SCI0_CLKP 86 122 + #define R9A07G044_SCI1_CLKP 87 123 + #define R9A07G044_IRDA_CLKP 88 124 + #define R9A07G044_RSPI0_CLKB 89 125 + #define R9A07G044_RSPI1_CLKB 90 126 + #define R9A07G044_RSPI2_CLKB 91 127 + #define R9A07G044_CANFD_PCLK 92 128 + #define R9A07G044_GPIO_HCLK 93 129 + #define R9A07G044_ADC_ADCLK 94 130 + #define R9A07G044_ADC_PCLK 95 131 + #define R9A07G044_TSU_PCLK 96 132 + 133 + /* R9A07G044 Resets */ 134 + #define R9A07G044_CA55_RST_1_0 0 135 + #define R9A07G044_CA55_RST_1_1 1 136 + #define R9A07G044_CA55_RST_3_0 2 137 + #define R9A07G044_CA55_RST_3_1 3 138 + #define R9A07G044_CA55_RST_4 4 139 + #define R9A07G044_CA55_RST_5 5 140 + #define R9A07G044_CA55_RST_6 6 141 + #define R9A07G044_CA55_RST_7 7 142 + #define R9A07G044_CA55_RST_8 8 143 + #define R9A07G044_CA55_RST_9 9 144 + #define R9A07G044_CA55_RST_10 10 145 + #define R9A07G044_CA55_RST_11 11 146 + #define R9A07G044_CA55_RST_12 12 147 + #define R9A07G044_GIC600_GICRESET_N 13 148 + #define R9A07G044_GIC600_DBG_GICRESET_N 14 149 + #define R9A07G044_IA55_RESETN 15 150 + #define R9A07G044_MHU_RESETN 16 151 + #define R9A07G044_DMAC_ARESETN 17 152 + #define R9A07G044_DMAC_RST_ASYNC 18 153 + #define R9A07G044_SYC_RESETN 19 154 + #define R9A07G044_OSTM0_PRESETZ 20 155 + #define R9A07G044_OSTM1_PRESETZ 21 156 + #define R9A07G044_OSTM2_PRESETZ 22 157 + #define R9A07G044_MTU_X_PRESET_MTU3 23 158 + #define R9A07G044_POE3_RST_M_REG 24 159 + #define R9A07G044_GPT_RST_C 25 160 + #define R9A07G044_POEG_A_RST 26 161 + #define R9A07G044_POEG_B_RST 27 162 + #define R9A07G044_POEG_C_RST 28 163 + #define R9A07G044_POEG_D_RST 29 164 + #define R9A07G044_WDT0_PRESETN 30 165 + #define R9A07G044_WDT1_PRESETN 31 166 + #define R9A07G044_WDT2_PRESETN 32 167 + #define R9A07G044_SPI_RST 33 168 + #define R9A07G044_SDHI0_IXRST 34 169 + #define R9A07G044_SDHI1_IXRST 35 170 + #define R9A07G044_GPU_RESETN 36 171 + #define R9A07G044_GPU_AXI_RESETN 37 172 + #define R9A07G044_GPU_ACE_RESETN 38 173 + #define R9A07G044_ISU_ARESETN 39 174 + #define R9A07G044_ISU_PRESETN 40 175 + #define R9A07G044_H264_X_RESET_VCP 41 176 + #define R9A07G044_H264_CP_PRESET_P 42 177 + #define R9A07G044_CRU_CMN_RSTB 43 178 + #define R9A07G044_CRU_PRESETN 44 179 + #define R9A07G044_CRU_ARESETN 45 180 + #define R9A07G044_MIPI_DSI_CMN_RSTB 46 181 + #define R9A07G044_MIPI_DSI_ARESET_N 47 182 + #define R9A07G044_MIPI_DSI_PRESET_N 48 183 + #define R9A07G044_LCDC_RESET_N 49 184 + #define R9A07G044_SSI0_RST_M2_REG 50 185 + #define R9A07G044_SSI1_RST_M2_REG 51 186 + #define R9A07G044_SSI2_RST_M2_REG 52 187 + #define R9A07G044_SSI3_RST_M2_REG 53 188 + #define R9A07G044_SRC_RST 54 189 + #define R9A07G044_USB_U2H0_HRESETN 55 190 + #define R9A07G044_USB_U2H1_HRESETN 56 191 + #define R9A07G044_USB_U2P_EXL_SYSRST 57 192 + #define R9A07G044_USB_PRESETN 58 193 + #define R9A07G044_ETH0_RST_HW_N 59 194 + #define R9A07G044_ETH1_RST_HW_N 60 195 + #define R9A07G044_I2C0_MRST 61 196 + #define R9A07G044_I2C1_MRST 62 197 + #define R9A07G044_I2C2_MRST 63 198 + #define R9A07G044_I2C3_MRST 64 199 + #define R9A07G044_SCIF0_RST_SYSTEM_N 65 200 + #define R9A07G044_SCIF1_RST_SYSTEM_N 66 201 + #define R9A07G044_SCIF2_RST_SYSTEM_N 67 202 + #define R9A07G044_SCIF3_RST_SYSTEM_N 68 203 + #define R9A07G044_SCIF4_RST_SYSTEM_N 69 204 + #define R9A07G044_SCI0_RST 70 205 + #define R9A07G044_SCI1_RST 71 206 + #define R9A07G044_IRDA_RST 72 207 + #define R9A07G044_RSPI0_RST 73 208 + #define R9A07G044_RSPI1_RST 74 209 + #define R9A07G044_RSPI2_RST 75 210 + #define R9A07G044_CANFD_RSTP_N 76 211 + #define R9A07G044_CANFD_RSTC_N 77 212 + #define R9A07G044_GPIO_RSTN 78 213 + #define R9A07G044_GPIO_PORT_RESETN 79 214 + #define R9A07G044_GPIO_SPARE_RESETN 80 215 + #define R9A07G044_ADC_PRESETN 81 216 + #define R9A07G044_ADC_ADRST_N 82 217 + #define R9A07G044_TSU_PRESETN 83 88 218 89 219 #endif /* __DT_BINDINGS_CLOCK_R9A07G044_CPG_H__ */
+9 -5
include/linux/scmi_protocol.h
··· 101 101 * to sustained performance level mapping 102 102 * @est_power_get: gets the estimated power cost for a given performance domain 103 103 * at a given frequency 104 + * @fast_switch_possible: indicates if fast DVFS switching is possible or not 105 + * for a given device 106 + * @power_scale_mw_get: indicates if the power values provided are in milliWatts 107 + * or in some other (abstract) scale 104 108 */ 105 109 struct scmi_perf_proto_ops { 106 110 int (*limits_set)(const struct scmi_protocol_handle *ph, u32 domain, ··· 157 153 }; 158 154 159 155 /** 160 - * scmi_sensor_reading - represent a timestamped read 156 + * struct scmi_sensor_reading - represent a timestamped read 161 157 * 162 158 * Used by @reading_get_timestamped method. 163 159 * ··· 171 167 }; 172 168 173 169 /** 174 - * scmi_range_attrs - specifies a sensor or axis values' range 170 + * struct scmi_range_attrs - specifies a sensor or axis values' range 175 171 * @min_range: The minimum value which can be represented by the sensor/axis. 176 172 * @max_range: The maximum value which can be represented by the sensor/axis. 177 173 */ ··· 181 177 }; 182 178 183 179 /** 184 - * scmi_sensor_axis_info - describes one sensor axes 180 + * struct scmi_sensor_axis_info - describes one sensor axes 185 181 * @id: The axes ID. 186 182 * @type: Axes type. Chosen amongst one of @enum scmi_sensor_class. 187 183 * @scale: Power-of-10 multiplier applied to the axis unit. ··· 209 205 }; 210 206 211 207 /** 212 - * scmi_sensor_intervals_info - describes number and type of available update 213 - * intervals 208 + * struct scmi_sensor_intervals_info - describes number and type of available 209 + * update intervals 214 210 * @segmented: Flag for segmented intervals' representation. When True there 215 211 * will be exactly 3 intervals in @desc, with each entry 216 212 * representing a member of a segment in this order:
+8
include/linux/scpi_protocol.h
··· 51 51 * OPP is an index to the list return by @dvfs_get_info 52 52 * @dvfs_get_info: returns the DVFS capabilities of the given power 53 53 * domain. It includes the OPP list and the latency information 54 + * @device_domain_id: gets the scpi domain id for a given device 55 + * @get_transition_latency: gets the DVFS transition latency for a given device 56 + * @add_opps_to_device: adds all the OPPs for a given device 57 + * @sensor_get_capability: get the list of capabilities for the sensors 58 + * @sensor_get_info: get the information of the specified sensor 59 + * @sensor_get_value: gets the current value of the sensor 60 + * @device_get_power_state: gets the power state of a power domain 61 + * @device_set_power_state: sets the power state of a power domain 54 62 */ 55 63 struct scpi_ops { 56 64 u32 (*get_version)(void);
+7 -2
include/soc/tegra/mc.h
··· 237 237 238 238 #ifdef CONFIG_TEGRA_MC 239 239 struct tegra_mc *devm_tegra_memory_controller_get(struct device *dev); 240 + int tegra_mc_probe_device(struct tegra_mc *mc, struct device *dev); 240 241 #else 241 242 static inline struct tegra_mc * 242 243 devm_tegra_memory_controller_get(struct device *dev) 243 244 { 244 245 return ERR_PTR(-ENODEV); 245 246 } 246 - #endif 247 247 248 - int tegra_mc_probe_device(struct tegra_mc *mc, struct device *dev); 248 + static inline int 249 + tegra_mc_probe_device(struct tegra_mc *mc, struct device *dev) 250 + { 251 + return -ENODEV; 252 + } 253 + #endif 249 254 250 255 #endif /* __SOC_TEGRA_MC_H__ */