ARM: SoC fixes
A few fixes that have trickled in through the merge window: - Video fixes for OMAP due to panel-dpi driver removal - Clock fixes for OMAP that broke no-idle quirks + nfsroot on DRA7 - Fixing arch version on ASpeed ast2500 - Two fixes for reset handling on ARM SCMI -----BEGIN PGP SIGNATURE----- iQJDBAABCAAtFiEElf+HevZ4QCAJmMQ+jBrnPN6EHHcFAl2Q+QsPHG9sb2ZAbGl4 b20ubmV0AAoJEIwa5zzehBx36yIP/2eeqmdd97XJUiX2qGlKlDC+AtVUJnnxzhLa jSAIbbN74MCVH3M0BW1ECPbHHXFR54sffLFWwu8rVBr5nRdNPt0xLdXiVJcIVMfr by0LeMAOcw9CDxKsLqwwAagKq4HVnwqbZ+RVC3CjGz+Sp+vvSz+T/Ta6GzblASYv 3zOs1FD+e4pwDqonyp6P5vAlBQ6qFL7AVZFPpNmXsqIzcT1bGEj/RwReErCIoevL 7ZJr1R69D5IaEXYwWt8dT7bNwMR0gRvskrCQVCCBBcwHkO1PRd6cTXQ9EFBG8LgV LCM9F8Z+6QMigqvDFgSMpIz6orhKQKGpHF7K023c4DKBVqwigT/CaTOZgFr74pUJ Zp7s2dFcmJo1J2HlYDz3Nde4BFJXy3gNJphD7yI9xMfBNe1EXclvqtqICvnpMpgt thDXrReyDhMQukOBlrUcMxABP/EK97fULpC2Z2kaBq3SbnZILAOKFKtISmh5o6eI s4+QYETaqnWjYJE9d+YYg0VwNAifSzplSrGJVK43mGpqpQRx49cw25vL8bV/ZRgg HMTUX97Oho+EgDC9BWiahe0TZaWBBGJ3hWI/mrBW/dNowxoHp3l/fCcLdBPPKltS qo4BbbKPdrgq5o3YRBSjftdnbJ8eE9DTRs1sAsDQeNb9XJih9aiAQE3hxAA9wdJO vcRFcZ1Q =s4qF -----END PGP SIGNATURE----- Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc Pull ARM SoC fixes from Olof Johansson: "A few fixes that have trickled in through the merge window: - Video fixes for OMAP due to panel-dpi driver removal - Clock fixes for OMAP that broke no-idle quirks + nfsroot on DRA7 - Fixing arch version on ASpeed ast2500 - Two fixes for reset handling on ARM SCMI" * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: ARM: aspeed: ast2500 is ARMv6K reset: reset-scmi: add missing handle initialisation firmware: arm_scmi: reset: fix reset_state assignment in scmi_domain_reset bus: ti-sysc: Remove unpaired sysc_clkdm_deny_idle() ARM: dts: logicpd-som-lv: Fix i2c2 and i2c3 Pin mux ARM: dts: am3517-evm: Fix missing video ARM: dts: logicpd-torpedo-baseboard: Fix missing video ARM: omap2plus_defconfig: Fix missing video bus: ti-sysc: Fix handling of invalid clocks bus: ti-sysc: Fix clock handling for no-idle quirks
This commit is contained in:
commit
cef0aa0ce8
9 changed files with 67 additions and 82 deletions
|
@ -124,10 +124,11 @@
|
|||
};
|
||||
|
||||
lcd0: display@0 {
|
||||
compatible = "panel-dpi";
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
/* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */
|
||||
vcc-supply = <&vdd_io_reg>;
|
||||
|
||||
|
@ -136,22 +137,6 @@
|
|||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
|
|
@ -228,6 +228,20 @@
|
|||
>;
|
||||
};
|
||||
|
||||
i2c2_pins: pinmux_i2c2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
|
||||
OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
|
||||
>;
|
||||
};
|
||||
|
||||
i2c3_pins: pinmux_i2c3_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
|
||||
OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
|
||||
>;
|
||||
};
|
||||
|
||||
tsc2004_pins: pinmux_tsc2004_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE4) /* mcbsp4_dr.gpio_153 */
|
||||
|
@ -249,18 +263,6 @@
|
|||
OMAP3_WKUP_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
|
||||
>;
|
||||
};
|
||||
i2c2_pins: pinmux_i2c2_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
|
||||
OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
|
||||
>;
|
||||
};
|
||||
i2c3_pins: pinmux_i2c3_pins {
|
||||
pinctrl-single,pins = <
|
||||
OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
|
||||
OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
&omap3_pmx_core2 {
|
||||
|
|
|
@ -108,7 +108,6 @@
|
|||
&dss {
|
||||
status = "ok";
|
||||
vdds_dsi-supply = <&vpll2>;
|
||||
vdda_video-supply = <&video_reg>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dss_dpi_pins1>;
|
||||
port {
|
||||
|
@ -124,44 +123,20 @@
|
|||
display0 = &lcd0;
|
||||
};
|
||||
|
||||
video_reg: video_reg {
|
||||
lcd0: display {
|
||||
/* This isn't the exact LCD, but the timings meet spec */
|
||||
/* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
|
||||
compatible = "newhaven,nhd-4.3-480272ef-atxl";
|
||||
label = "15";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&panel_pwr_pins>;
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "fixed-supply";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
|
||||
};
|
||||
|
||||
lcd0: display {
|
||||
compatible = "panel-dpi";
|
||||
label = "15";
|
||||
status = "okay";
|
||||
/* default-on; */
|
||||
pinctrl-names = "default";
|
||||
|
||||
backlight = <&bl>;
|
||||
enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
|
||||
port {
|
||||
lcd_in: endpoint {
|
||||
remote-endpoint = <&dpi_out>;
|
||||
};
|
||||
};
|
||||
|
||||
panel-timing {
|
||||
clock-frequency = <9000000>;
|
||||
hactive = <480>;
|
||||
vactive = <272>;
|
||||
hfront-porch = <3>;
|
||||
hback-porch = <2>;
|
||||
hsync-len = <42>;
|
||||
vback-porch = <3>;
|
||||
vfront-porch = <4>;
|
||||
vsync-len = <11>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
pixelclk-active = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
bl: backlight {
|
||||
|
|
|
@ -363,6 +363,7 @@ CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1=m
|
|||
CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1=m
|
||||
CONFIG_DRM_OMAP_PANEL_NEC_NL8048HL11=m
|
||||
CONFIG_DRM_TILCDC=m
|
||||
CONFIG_DRM_PANEL_SIMPLE=m
|
||||
CONFIG_FB=y
|
||||
CONFIG_FIRMWARE_EDID=y
|
||||
CONFIG_FB_MODE_HELPERS=y
|
||||
|
|
|
@ -26,7 +26,6 @@ config MACH_ASPEED_G4
|
|||
config MACH_ASPEED_G5
|
||||
bool "Aspeed SoC 5th Generation"
|
||||
depends on ARCH_MULTI_V6
|
||||
select CPU_V6
|
||||
select PINCTRL_ASPEED_G5
|
||||
select FTTMR010_TIMER
|
||||
help
|
||||
|
|
|
@ -491,11 +491,11 @@ static int ti_sysc_clkdm_init(struct device *dev,
|
|||
struct clk *fck, struct clk *ick,
|
||||
struct ti_sysc_cookie *cookie)
|
||||
{
|
||||
if (fck)
|
||||
if (!IS_ERR(fck))
|
||||
cookie->clkdm = ti_sysc_find_one_clockdomain(fck);
|
||||
if (cookie->clkdm)
|
||||
return 0;
|
||||
if (ick)
|
||||
if (!IS_ERR(ick))
|
||||
cookie->clkdm = ti_sysc_find_one_clockdomain(ick);
|
||||
if (cookie->clkdm)
|
||||
return 0;
|
||||
|
|
|
@ -280,9 +280,6 @@ static int sysc_get_one_clock(struct sysc *ddata, const char *name)
|
|||
|
||||
ddata->clocks[index] = devm_clk_get(ddata->dev, name);
|
||||
if (IS_ERR(ddata->clocks[index])) {
|
||||
if (PTR_ERR(ddata->clocks[index]) == -ENOENT)
|
||||
return 0;
|
||||
|
||||
dev_err(ddata->dev, "clock get error for %s: %li\n",
|
||||
name, PTR_ERR(ddata->clocks[index]));
|
||||
|
||||
|
@ -357,7 +354,7 @@ static int sysc_get_clocks(struct sysc *ddata)
|
|||
continue;
|
||||
|
||||
error = sysc_get_one_clock(ddata, name);
|
||||
if (error && error != -ENOENT)
|
||||
if (error)
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -1632,17 +1629,19 @@ static int sysc_init_module(struct sysc *ddata)
|
|||
if (error)
|
||||
return error;
|
||||
|
||||
if (manage_clocks) {
|
||||
sysc_clkdm_deny_idle(ddata);
|
||||
sysc_clkdm_deny_idle(ddata);
|
||||
|
||||
error = sysc_enable_opt_clocks(ddata);
|
||||
if (error)
|
||||
return error;
|
||||
/*
|
||||
* Always enable clocks. The bootloader may or may not have enabled
|
||||
* the related clocks.
|
||||
*/
|
||||
error = sysc_enable_opt_clocks(ddata);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
error = sysc_enable_main_clocks(ddata);
|
||||
if (error)
|
||||
goto err_opt_clocks;
|
||||
}
|
||||
error = sysc_enable_main_clocks(ddata);
|
||||
if (error)
|
||||
goto err_opt_clocks;
|
||||
|
||||
if (!(ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)) {
|
||||
error = sysc_rstctrl_reset_deassert(ddata, true);
|
||||
|
@ -1660,7 +1659,7 @@ static int sysc_init_module(struct sysc *ddata)
|
|||
goto err_main_clocks;
|
||||
}
|
||||
|
||||
if (!ddata->legacy_mode && manage_clocks) {
|
||||
if (!ddata->legacy_mode) {
|
||||
error = sysc_enable_module(ddata->dev);
|
||||
if (error)
|
||||
goto err_main_clocks;
|
||||
|
@ -1677,6 +1676,7 @@ err_main_clocks:
|
|||
if (manage_clocks)
|
||||
sysc_disable_main_clocks(ddata);
|
||||
err_opt_clocks:
|
||||
/* No re-enable of clockdomain autoidle to prevent module autoidle */
|
||||
if (manage_clocks) {
|
||||
sysc_disable_opt_clocks(ddata);
|
||||
sysc_clkdm_allow_idle(ddata);
|
||||
|
@ -2357,6 +2357,27 @@ static void ti_sysc_idle(struct work_struct *work)
|
|||
|
||||
ddata = container_of(work, struct sysc, idle_work.work);
|
||||
|
||||
/*
|
||||
* One time decrement of clock usage counts if left on from init.
|
||||
* Note that we disable opt clocks unconditionally in this case
|
||||
* as they are enabled unconditionally during init without
|
||||
* considering sysc_opt_clks_needed() at that point.
|
||||
*/
|
||||
if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE |
|
||||
SYSC_QUIRK_NO_IDLE_ON_INIT)) {
|
||||
sysc_disable_main_clocks(ddata);
|
||||
sysc_disable_opt_clocks(ddata);
|
||||
sysc_clkdm_allow_idle(ddata);
|
||||
}
|
||||
|
||||
/* Keep permanent PM runtime usage count for SYSC_QUIRK_NO_IDLE */
|
||||
if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Decrement PM runtime usage count for SYSC_QUIRK_NO_IDLE_ON_INIT
|
||||
* and SYSC_QUIRK_NO_RESET_ON_INIT
|
||||
*/
|
||||
if (pm_runtime_active(ddata->dev))
|
||||
pm_runtime_put_sync(ddata->dev);
|
||||
}
|
||||
|
@ -2445,7 +2466,8 @@ static int sysc_probe(struct platform_device *pdev)
|
|||
INIT_DELAYED_WORK(&ddata->idle_work, ti_sysc_idle);
|
||||
|
||||
/* At least earlycon won't survive without deferred idle */
|
||||
if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE_ON_INIT |
|
||||
if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE |
|
||||
SYSC_QUIRK_NO_IDLE_ON_INIT |
|
||||
SYSC_QUIRK_NO_RESET_ON_INIT)) {
|
||||
schedule_delayed_work(&ddata->idle_work, 3000);
|
||||
} else {
|
||||
|
|
|
@ -150,7 +150,7 @@ static int scmi_domain_reset(const struct scmi_handle *handle, u32 domain,
|
|||
dom = t->tx.buf;
|
||||
dom->domain_id = cpu_to_le32(domain);
|
||||
dom->flags = cpu_to_le32(flags);
|
||||
dom->domain_id = cpu_to_le32(state);
|
||||
dom->reset_state = cpu_to_le32(state);
|
||||
|
||||
if (rdom->async_reset)
|
||||
ret = scmi_do_xfer_with_response(handle, t);
|
||||
|
|
|
@ -102,6 +102,7 @@ static int scmi_reset_probe(struct scmi_device *sdev)
|
|||
data->rcdev.owner = THIS_MODULE;
|
||||
data->rcdev.of_node = np;
|
||||
data->rcdev.nr_resets = handle->reset_ops->num_domains_get(handle);
|
||||
data->handle = handle;
|
||||
|
||||
return devm_reset_controller_register(dev, &data->rcdev);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue