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

Configure Feed

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

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

Pull ARM SoC fixes from Olof Johansson:
"First batch of fixes post-merge window:

- A handful of devicetree changes for i.MX2{3,8} to change over to
new panel bindings. The platforms were moved from legacy
framebuffers to DRM and some development board panels hadn't yet
been converted.

- OMAP fixes related to ti-sysc driver conversion fallout, fixing
some register offsets, no_console_suspend fixes, etc.

- Droid4 changes to fix flaky eMMC probing and vibrator DTS mismerge.

- Fixed 0755->0644 permissions on a newly added file.

- Defconfig changes to make ARM Versatile more useful with QEMU
(helps testing).

- Enable defconfig options for new TI SoC platform that was merged
this window (AM6)"

* tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
arm64: defconfig: Enable TI's AM6 SoC platform
ARM: defconfig: Update the ARM Versatile defconfig
ARM: dts: omap4-droid4: Fix emmc errors seen on some devices
ARM: dts: Fix file permission for am335x-osd3358-sm-red.dts
ARM: imx_v6_v7_defconfig: Select CONFIG_DRM_PANEL_SEIKO_43WVF1G
ARM: mxs_defconfig: Select CONFIG_DRM_PANEL_SEIKO_43WVF1G
ARM: dts: imx23-evk: Convert to the new display bindings
ARM: dts: imx23-evk: Move regulators outside simple-bus
ARM: dts: imx28-evk: Convert to the new display bindings
ARM: dts: imx28-evk: Move regulators outside simple-bus
Revert "ARM: dts: imx7d: Invert legacy PCI irq mapping"
arm: dts: am4372: setup rtc as system-power-controller
ARM: dts: omap4-droid4: fix vibrations on Droid 4
bus: ti-sysc: Fix no_console_suspend handling
bus: ti-sysc: Fix module register ioremap for larger offsets
ARM: OMAP2+: Fix module address for modules using mpu_rt_idx
ARM: OMAP2+: Fix null hwmod for ti-sysc debug

+212 -187
arch/arm/boot/dts/am335x-osd3358-sm-red.dts
+1
arch/arm/boot/dts/am4372.dtsi
··· 469 469 ti,hwmods = "rtc"; 470 470 clocks = <&clk_32768_ck>; 471 471 clock-names = "int-clk"; 472 + system-power-controller; 472 473 status = "disabled"; 473 474 }; 474 475
+41 -49
arch/arm/boot/dts/imx23-evk.dts
··· 13 13 reg = <0x40000000 0x08000000>; 14 14 }; 15 15 16 + reg_vddio_sd0: regulator-vddio-sd0 { 17 + compatible = "regulator-fixed"; 18 + regulator-name = "vddio-sd0"; 19 + regulator-min-microvolt = <3300000>; 20 + regulator-max-microvolt = <3300000>; 21 + gpio = <&gpio1 29 0>; 22 + }; 23 + 24 + reg_lcd_3v3: regulator-lcd-3v3 { 25 + compatible = "regulator-fixed"; 26 + regulator-name = "lcd-3v3"; 27 + regulator-min-microvolt = <3300000>; 28 + regulator-max-microvolt = <3300000>; 29 + gpio = <&gpio1 18 0>; 30 + enable-active-high; 31 + }; 32 + 33 + reg_lcd_5v: regulator-lcd-5v { 34 + compatible = "regulator-fixed"; 35 + regulator-name = "lcd-5v"; 36 + regulator-min-microvolt = <5000000>; 37 + regulator-max-microvolt = <5000000>; 38 + }; 39 + 40 + panel { 41 + compatible = "sii,43wvf1g"; 42 + backlight = <&backlight_display>; 43 + dvdd-supply = <&reg_lcd_3v3>; 44 + avdd-supply = <&reg_lcd_5v>; 45 + 46 + port { 47 + panel_in: endpoint { 48 + remote-endpoint = <&display_out>; 49 + }; 50 + }; 51 + }; 52 + 16 53 apb@80000000 { 17 54 apbh@80000000 { 18 55 gpmi-nand@8000c000 { ··· 89 52 lcdif@80030000 { 90 53 pinctrl-names = "default"; 91 54 pinctrl-0 = <&lcdif_24bit_pins_a>; 92 - lcd-supply = <&reg_lcd_3v3>; 93 - display = <&display0>; 94 55 status = "okay"; 95 56 96 - display0: display0 { 97 - bits-per-pixel = <32>; 98 - bus-width = <24>; 99 - 100 - display-timings { 101 - native-mode = <&timing0>; 102 - timing0: timing0 { 103 - clock-frequency = <9200000>; 104 - hactive = <480>; 105 - vactive = <272>; 106 - hback-porch = <15>; 107 - hfront-porch = <8>; 108 - vback-porch = <12>; 109 - vfront-porch = <4>; 110 - hsync-len = <1>; 111 - vsync-len = <1>; 112 - hsync-active = <0>; 113 - vsync-active = <0>; 114 - de-active = <1>; 115 - pixelclk-active = <0>; 116 - }; 57 + port { 58 + display_out: endpoint { 59 + remote-endpoint = <&panel_in>; 117 60 }; 118 61 }; 119 62 }; ··· 135 118 }; 136 119 }; 137 120 138 - regulators { 139 - compatible = "simple-bus"; 140 - #address-cells = <1>; 141 - #size-cells = <0>; 142 - 143 - reg_vddio_sd0: regulator@0 { 144 - compatible = "regulator-fixed"; 145 - reg = <0>; 146 - regulator-name = "vddio-sd0"; 147 - regulator-min-microvolt = <3300000>; 148 - regulator-max-microvolt = <3300000>; 149 - gpio = <&gpio1 29 0>; 150 - }; 151 - 152 - reg_lcd_3v3: regulator@1 { 153 - compatible = "regulator-fixed"; 154 - reg = <1>; 155 - regulator-name = "lcd-3v3"; 156 - regulator-min-microvolt = <3300000>; 157 - regulator-max-microvolt = <3300000>; 158 - gpio = <&gpio1 18 0>; 159 - enable-active-high; 160 - }; 161 - }; 162 - 163 - backlight { 121 + backlight_display: backlight { 164 122 compatible = "pwm-backlight"; 165 123 pwms = <&pwm 2 5000000>; 166 124 brightness-levels = <0 4 8 16 32 64 128 255>;
+85 -98
arch/arm/boot/dts/imx28-evk.dts
··· 13 13 reg = <0x40000000 0x08000000>; 14 14 }; 15 15 16 + 17 + reg_3p3v: regulator-3p3v { 18 + compatible = "regulator-fixed"; 19 + regulator-name = "3P3V"; 20 + regulator-min-microvolt = <3300000>; 21 + regulator-max-microvolt = <3300000>; 22 + regulator-always-on; 23 + }; 24 + 25 + reg_vddio_sd0: regulator-vddio-sd0 { 26 + compatible = "regulator-fixed"; 27 + regulator-name = "vddio-sd0"; 28 + regulator-min-microvolt = <3300000>; 29 + regulator-max-microvolt = <3300000>; 30 + gpio = <&gpio3 28 0>; 31 + }; 32 + 33 + reg_fec_3v3: regulator-fec-3v3 { 34 + compatible = "regulator-fixed"; 35 + regulator-name = "fec-3v3"; 36 + regulator-min-microvolt = <3300000>; 37 + regulator-max-microvolt = <3300000>; 38 + gpio = <&gpio2 15 0>; 39 + }; 40 + 41 + reg_usb0_vbus: regulator-usb0-vbus { 42 + compatible = "regulator-fixed"; 43 + regulator-name = "usb0_vbus"; 44 + regulator-min-microvolt = <5000000>; 45 + regulator-max-microvolt = <5000000>; 46 + gpio = <&gpio3 9 0>; 47 + enable-active-high; 48 + }; 49 + 50 + reg_usb1_vbus: regulator-usb1-vbus { 51 + compatible = "regulator-fixed"; 52 + regulator-name = "usb1_vbus"; 53 + regulator-min-microvolt = <5000000>; 54 + regulator-max-microvolt = <5000000>; 55 + gpio = <&gpio3 8 0>; 56 + enable-active-high; 57 + }; 58 + 59 + reg_lcd_3v3: regulator-lcd-3v3 { 60 + compatible = "regulator-fixed"; 61 + regulator-name = "lcd-3v3"; 62 + regulator-min-microvolt = <3300000>; 63 + regulator-max-microvolt = <3300000>; 64 + gpio = <&gpio3 30 0>; 65 + enable-active-high; 66 + }; 67 + 68 + reg_can_3v3: regulator-can-3v3 { 69 + compatible = "regulator-fixed"; 70 + regulator-name = "can-3v3"; 71 + regulator-min-microvolt = <3300000>; 72 + regulator-max-microvolt = <3300000>; 73 + gpio = <&gpio2 13 0>; 74 + enable-active-high; 75 + }; 76 + 77 + reg_lcd_5v: regulator-lcd-5v { 78 + compatible = "regulator-fixed"; 79 + regulator-name = "lcd-5v"; 80 + regulator-min-microvolt = <5000000>; 81 + regulator-max-microvolt = <5000000>; 82 + }; 83 + 84 + panel { 85 + compatible = "sii,43wvf1g"; 86 + backlight = <&backlight_display>; 87 + dvdd-supply = <&reg_lcd_3v3>; 88 + avdd-supply = <&reg_lcd_5v>; 89 + 90 + port { 91 + panel_in: endpoint { 92 + remote-endpoint = <&display_out>; 93 + }; 94 + }; 95 + }; 96 + 16 97 apb@80000000 { 17 98 apbh@80000000 { 18 99 gpmi-nand@8000c000 { ··· 197 116 pinctrl-names = "default"; 198 117 pinctrl-0 = <&lcdif_24bit_pins_a 199 118 &lcdif_pins_evk>; 200 - lcd-supply = <&reg_lcd_3v3>; 201 - display = <&display0>; 202 119 status = "okay"; 203 120 204 - display0: display0 { 205 - bits-per-pixel = <32>; 206 - bus-width = <24>; 207 - 208 - display-timings { 209 - native-mode = <&timing0>; 210 - timing0: timing0 { 211 - clock-frequency = <33500000>; 212 - hactive = <800>; 213 - vactive = <480>; 214 - hback-porch = <89>; 215 - hfront-porch = <164>; 216 - vback-porch = <23>; 217 - vfront-porch = <10>; 218 - hsync-len = <10>; 219 - vsync-len = <10>; 220 - hsync-active = <0>; 221 - vsync-active = <0>; 222 - de-active = <1>; 223 - pixelclk-active = <0>; 224 - }; 121 + port { 122 + display_out: endpoint { 123 + remote-endpoint = <&panel_in>; 225 124 }; 226 125 }; 227 126 }; ··· 330 269 }; 331 270 }; 332 271 333 - regulators { 334 - compatible = "simple-bus"; 335 - #address-cells = <1>; 336 - #size-cells = <0>; 337 - 338 - reg_3p3v: regulator@0 { 339 - compatible = "regulator-fixed"; 340 - reg = <0>; 341 - regulator-name = "3P3V"; 342 - regulator-min-microvolt = <3300000>; 343 - regulator-max-microvolt = <3300000>; 344 - regulator-always-on; 345 - }; 346 - 347 - reg_vddio_sd0: regulator@1 { 348 - compatible = "regulator-fixed"; 349 - reg = <1>; 350 - regulator-name = "vddio-sd0"; 351 - regulator-min-microvolt = <3300000>; 352 - regulator-max-microvolt = <3300000>; 353 - gpio = <&gpio3 28 0>; 354 - }; 355 - 356 - reg_fec_3v3: regulator@2 { 357 - compatible = "regulator-fixed"; 358 - reg = <2>; 359 - regulator-name = "fec-3v3"; 360 - regulator-min-microvolt = <3300000>; 361 - regulator-max-microvolt = <3300000>; 362 - gpio = <&gpio2 15 0>; 363 - }; 364 - 365 - reg_usb0_vbus: regulator@3 { 366 - compatible = "regulator-fixed"; 367 - reg = <3>; 368 - regulator-name = "usb0_vbus"; 369 - regulator-min-microvolt = <5000000>; 370 - regulator-max-microvolt = <5000000>; 371 - gpio = <&gpio3 9 0>; 372 - enable-active-high; 373 - }; 374 - 375 - reg_usb1_vbus: regulator@4 { 376 - compatible = "regulator-fixed"; 377 - reg = <4>; 378 - regulator-name = "usb1_vbus"; 379 - regulator-min-microvolt = <5000000>; 380 - regulator-max-microvolt = <5000000>; 381 - gpio = <&gpio3 8 0>; 382 - enable-active-high; 383 - }; 384 - 385 - reg_lcd_3v3: regulator@5 { 386 - compatible = "regulator-fixed"; 387 - reg = <5>; 388 - regulator-name = "lcd-3v3"; 389 - regulator-min-microvolt = <3300000>; 390 - regulator-max-microvolt = <3300000>; 391 - gpio = <&gpio3 30 0>; 392 - enable-active-high; 393 - }; 394 - 395 - reg_can_3v3: regulator@6 { 396 - compatible = "regulator-fixed"; 397 - reg = <6>; 398 - regulator-name = "can-3v3"; 399 - regulator-min-microvolt = <3300000>; 400 - regulator-max-microvolt = <3300000>; 401 - gpio = <&gpio2 13 0>; 402 - enable-active-high; 403 - }; 404 - 405 - }; 406 - 407 272 sound { 408 273 compatible = "fsl,imx28-evk-sgtl5000", 409 274 "fsl,mxs-audio-sgtl5000"; ··· 350 363 }; 351 364 }; 352 365 353 - backlight { 366 + backlight_display: backlight { 354 367 compatible = "pwm-backlight"; 355 368 pwms = <&pwm 2 5000000>; 356 369 brightness-levels = <0 4 8 16 32 64 128 255>;
+8 -4
arch/arm/boot/dts/imx7d.dtsi
··· 126 126 interrupt-names = "msi"; 127 127 #interrupt-cells = <1>; 128 128 interrupt-map-mask = <0 0 0 0x7>; 129 - interrupt-map = <0 0 0 1 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, 130 - <0 0 0 2 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 131 - <0 0 0 3 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, 132 - <0 0 0 4 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>; 129 + /* 130 + * Reference manual lists pci irqs incorrectly 131 + * Real hardware ordering is same as imx6: D+MSI, C, B, A 132 + */ 133 + interrupt-map = <0 0 0 1 &intc GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>, 134 + <0 0 0 2 &intc GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>, 135 + <0 0 0 3 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 136 + <0 0 0 4 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>; 133 137 clocks = <&clks IMX7D_PCIE_CTRL_ROOT_CLK>, 134 138 <&clks IMX7D_PLL_ENET_MAIN_100M_CLK>, 135 139 <&clks IMX7D_PCIE_PHY_ROOT_CLK>;
+10 -10
arch/arm/boot/dts/omap4-droid4-xt894.dts
··· 354 354 &mmc2 { 355 355 vmmc-supply = <&vsdio>; 356 356 bus-width = <8>; 357 - non-removable; 357 + ti,non-removable; 358 358 }; 359 359 360 360 &mmc3 { ··· 621 621 OMAP4_IOPAD(0x10c, PIN_INPUT | MUX_MODE1) /* abe_mcbsp3_fsx */ 622 622 >; 623 623 }; 624 - }; 625 - 626 - &omap4_pmx_wkup { 627 - usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins { 628 - /* gpio_wk0 */ 629 - pinctrl-single,pins = < 630 - OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3) 631 - >; 632 - }; 633 624 634 625 vibrator_direction_pin: pinmux_vibrator_direction_pin { 635 626 pinctrl-single,pins = < ··· 631 640 vibrator_enable_pin: pinmux_vibrator_enable_pin { 632 641 pinctrl-single,pins = < 633 642 OMAP4_IOPAD(0X1d0, PIN_OUTPUT | MUX_MODE1) /* dmtimer9_pwm_evt (gpio_28) */ 643 + >; 644 + }; 645 + }; 646 + 647 + &omap4_pmx_wkup { 648 + usb_gpio_mux_sel2: pinmux_usb_gpio_mux_sel2_pins { 649 + /* gpio_wk0 */ 650 + pinctrl-single,pins = < 651 + OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3) 634 652 >; 635 653 }; 636 654 };
+1
arch/arm/configs/imx_v6_v7_defconfig
··· 257 257 CONFIG_DRM=y 258 258 CONFIG_DRM_PANEL_LVDS=y 259 259 CONFIG_DRM_PANEL_SIMPLE=y 260 + CONFIG_DRM_PANEL_SEIKO_43WVF1G=y 260 261 CONFIG_DRM_DW_HDMI_AHB_AUDIO=m 261 262 CONFIG_DRM_DW_HDMI_CEC=y 262 263 CONFIG_DRM_IMX=y
+1
arch/arm/configs/mxs_defconfig
··· 95 95 CONFIG_REGULATOR=y 96 96 CONFIG_REGULATOR_FIXED_VOLTAGE=y 97 97 CONFIG_DRM=y 98 + CONFIG_DRM_PANEL_SEIKO_43WVF1G=y 98 99 CONFIG_DRM_MXSFB=y 99 100 CONFIG_FB_MODE_HELPERS=y 100 101 CONFIG_BACKLIGHT_LCD_SUPPORT=y
+8 -6
arch/arm/configs/versatile_defconfig
··· 5 5 CONFIG_LOG_BUF_SHIFT=14 6 6 CONFIG_BLK_DEV_INITRD=y 7 7 CONFIG_SLAB=y 8 - CONFIG_MODULES=y 9 - CONFIG_MODULE_UNLOAD=y 10 - CONFIG_PARTITION_ADVANCED=y 11 8 # CONFIG_ARCH_MULTI_V7 is not set 12 9 CONFIG_ARCH_VERSATILE=y 13 10 CONFIG_AEABI=y 14 11 CONFIG_OABI_COMPAT=y 15 - CONFIG_CMA=y 16 12 CONFIG_ZBOOT_ROM_TEXT=0x0 17 13 CONFIG_ZBOOT_ROM_BSS=0x0 18 14 CONFIG_CMDLINE="root=1f03 mem=32M" 19 15 CONFIG_FPE_NWFPE=y 20 16 CONFIG_VFP=y 17 + CONFIG_MODULES=y 18 + CONFIG_MODULE_UNLOAD=y 19 + CONFIG_PARTITION_ADVANCED=y 20 + CONFIG_CMA=y 21 21 CONFIG_NET=y 22 22 CONFIG_PACKET=y 23 23 CONFIG_UNIX=y ··· 59 59 CONFIG_DRM=y 60 60 CONFIG_DRM_PANEL_ARM_VERSATILE=y 61 61 CONFIG_DRM_PANEL_SIMPLE=y 62 + CONFIG_DRM_DUMB_VGA_DAC=y 62 63 CONFIG_DRM_PL111=y 63 64 CONFIG_FB_MODE_HELPERS=y 64 65 CONFIG_BACKLIGHT_LCD_SUPPORT=y ··· 90 89 CONFIG_NFSD_V3=y 91 90 CONFIG_NLS_CODEPAGE_850=m 92 91 CONFIG_NLS_ISO8859_1=m 92 + CONFIG_FONTS=y 93 + CONFIG_FONT_ACORN_8x8=y 94 + CONFIG_DEBUG_FS=y 93 95 CONFIG_MAGIC_SYSRQ=y 94 96 CONFIG_DEBUG_KERNEL=y 95 97 CONFIG_DEBUG_USER=y 96 98 CONFIG_DEBUG_LL=y 97 - CONFIG_FONTS=y 98 - CONFIG_FONT_ACORN_8x8=y
+38 -1
arch/arm/mach-omap2/omap_hwmod.c
··· 2161 2161 } 2162 2162 2163 2163 /** 2164 + * omap_hwmod_fix_mpu_rt_idx - fix up mpu_rt_idx register offsets 2165 + * 2166 + * @oh: struct omap_hwmod * 2167 + * @np: struct device_node * 2168 + * 2169 + * Fix up module register offsets for modules with mpu_rt_idx. 2170 + * Only needed for cpsw with interconnect target module defined 2171 + * in device tree while still using legacy hwmod platform data 2172 + * for rev, sysc and syss registers. 2173 + * 2174 + * Can be removed when all cpsw hwmod platform data has been 2175 + * dropped. 2176 + */ 2177 + static void omap_hwmod_fix_mpu_rt_idx(struct omap_hwmod *oh, 2178 + struct device_node *np, 2179 + struct resource *res) 2180 + { 2181 + struct device_node *child = NULL; 2182 + int error; 2183 + 2184 + child = of_get_next_child(np, child); 2185 + if (!child) 2186 + return; 2187 + 2188 + error = of_address_to_resource(child, oh->mpu_rt_idx, res); 2189 + if (error) 2190 + pr_err("%s: error mapping mpu_rt_idx: %i\n", 2191 + __func__, error); 2192 + } 2193 + 2194 + /** 2164 2195 * omap_hwmod_parse_module_range - map module IO range from device tree 2165 2196 * @oh: struct omap_hwmod * 2166 2197 * @np: struct device_node * ··· 2251 2220 size = be32_to_cpup(ranges); 2252 2221 2253 2222 pr_debug("omap_hwmod: %s %s at 0x%llx size 0x%llx\n", 2254 - oh->name, np->name, base, size); 2223 + oh ? oh->name : "", np->name, base, size); 2224 + 2225 + if (oh && oh->mpu_rt_idx) { 2226 + omap_hwmod_fix_mpu_rt_idx(oh, np, res); 2227 + 2228 + return 0; 2229 + } 2255 2230 2256 2231 res->start = base; 2257 2232 res->end = base + size - 1;
+3
arch/arm64/configs/defconfig
··· 38 38 CONFIG_ARCH_BERLIN=y 39 39 CONFIG_ARCH_BRCMSTB=y 40 40 CONFIG_ARCH_EXYNOS=y 41 + CONFIG_ARCH_K3=y 41 42 CONFIG_ARCH_LAYERSCAPE=y 42 43 CONFIG_ARCH_LG1K=y 43 44 CONFIG_ARCH_HISI=y ··· 606 605 CONFIG_ARCH_TEGRA_210_SOC=y 607 606 CONFIG_ARCH_TEGRA_186_SOC=y 608 607 CONFIG_ARCH_TEGRA_194_SOC=y 608 + CONFIG_ARCH_K3_AM6_SOC=y 609 + CONFIG_SOC_TI=y 609 610 CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND=y 610 611 CONFIG_EXTCON_USB_GPIO=y 611 612 CONFIG_EXTCON_USBC_CROS_EC=y
+16 -19
drivers/bus/ti-sysc.c
··· 498 498 499 499 /** 500 500 * syc_ioremap - ioremap register space for the interconnect target module 501 - * @ddata: deviec driver data 501 + * @ddata: device driver data 502 502 * 503 503 * Note that the interconnect target module registers can be anywhere 504 - * within the first child device address space. For example, SGX has 505 - * them at offset 0x1fc00 in the 32MB module address space. We just 506 - * what we need around the interconnect target module registers. 504 + * within the interconnect target module range. For example, SGX has 505 + * them at offset 0x1fc00 in the 32MB module address space. And cpsw 506 + * has them at offset 0x1200 in the CPSW_WR child. Usually the 507 + * the interconnect target module registers are at the beginning of 508 + * the module range though. 507 509 */ 508 510 static int sysc_ioremap(struct sysc *ddata) 509 511 { 510 - u32 size = 0; 512 + int size; 511 513 512 - if (ddata->offsets[SYSC_SYSSTATUS] >= 0) 513 - size = ddata->offsets[SYSC_SYSSTATUS]; 514 - else if (ddata->offsets[SYSC_SYSCONFIG] >= 0) 515 - size = ddata->offsets[SYSC_SYSCONFIG]; 516 - else if (ddata->offsets[SYSC_REVISION] >= 0) 517 - size = ddata->offsets[SYSC_REVISION]; 518 - else 514 + size = max3(ddata->offsets[SYSC_REVISION], 515 + ddata->offsets[SYSC_SYSCONFIG], 516 + ddata->offsets[SYSC_SYSSTATUS]); 517 + 518 + if (size < 0 || (size + sizeof(u32)) > ddata->module_size) 519 519 return -EINVAL; 520 - 521 - size &= 0xfff00; 522 - size += SZ_256; 523 520 524 521 ddata->module_va = devm_ioremap(ddata->dev, 525 522 ddata->module_pa, 526 - size); 523 + size + sizeof(u32)); 527 524 if (!ddata->module_va) 528 525 return -EIO; 529 526 ··· 1221 1224 if (!pm_runtime_status_suspended(dev)) { 1222 1225 error = pm_generic_runtime_suspend(dev); 1223 1226 if (error) { 1224 - dev_err(dev, "%s error at %i: %i\n", 1225 - __func__, __LINE__, error); 1227 + dev_warn(dev, "%s busy at %i: %i\n", 1228 + __func__, __LINE__, error); 1226 1229 1227 - return error; 1230 + return 0; 1228 1231 } 1229 1232 1230 1233 error = sysc_runtime_suspend(ddata->dev);