History

Merge tag 'fixes-5.4-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/fixes

Fixes for omap variants Few fixes for ti-sysc interconnect target module driver for no-idle quirks that caused nfsroot to fail on some dra7 boards. And let's fixes to get LCD working again for logicpd board that got broken a while back with removal of panel-dpi driver. We need to now use generic CONFIG_DRM_PANEL_SIMPLE instead. * tag 'fixes-5.4-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: 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

Olof Johansson committed 7 years ago

Commit 9bfd7312 parents a4207a1 a4c87236 files · +64 −79Browse files

Unified · Split

6 files
  1. arch/arm/boot/dts/am3517-evm.dts +4 −19
  2. arch/arm/boot/dts/logicpd-som-lv.dtsi +14 −12
  3. arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi +6 −31
  4. arch/arm/configs/omap2plus_defconfig +1 −0
  5. arch/arm/mach-omap2/pdata-quirks.c +2 −2
  6. drivers/bus/ti-sysc.c +37 −15
arch/arm/boot/dts/am3517-evm.dts+4−19
@@ -124,10 +124,11 @@ · 123 unmodified lines
124124 };
125125
126126 lcd0: display@0 {
127− compatible = "panel-dpi";
127+ /* This isn't the exact LCD, but the timings meet spec */
128+ /* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
129+ compatible = "newhaven,nhd-4.3-480272ef-atxl";
128130 label = "15";
129− status = "okay";
130− pinctrl-names = "default";
131+ backlight = <&bl>;
131132 enable-gpios = <&gpio6 16 GPIO_ACTIVE_HIGH>; /* gpio176, lcd INI */
132133 vcc-supply = <&vdd_io_reg>;
133134
@@ -136,22 +137,6 @@ · 2 unmodified lines
136137 remote-endpoint = <&dpi_out>;
137138 };
138139 };
139−
140− panel-timing {
141− clock-frequency = <9000000>;
142− hactive = <480>;
143− vactive = <272>;
144− hfront-porch = <3>;
145− hback-porch = <2>;
146− hsync-len = <42>;
147− vback-porch = <3>;
148− vfront-porch = <4>;
149− vsync-len = <11>;
150− hsync-active = <0>;
151− vsync-active = <0>;
152− de-active = <1>;
153− pixelclk-active = <1>;
154− };
155140 };
156141
157142 bl: backlight {
arch/arm/boot/dts/logicpd-som-lv.dtsi+14−12
@@ -228,6 +228,20 @@ · 227 unmodified lines
228228 >;
229229 };
230230
231+ i2c2_pins: pinmux_i2c2_pins {
232+ pinctrl-single,pins = <
233+ OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
234+ OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
235+ >;
236+ };
237+
238+ i2c3_pins: pinmux_i2c3_pins {
239+ pinctrl-single,pins = <
240+ OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
241+ OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
242+ >;
243+ };
244+
231245 tsc2004_pins: pinmux_tsc2004_pins {
232246 pinctrl-single,pins = <
233247 OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE4) /* mcbsp4_dr.gpio_153 */
@@ -249,18 +263,6 @@ · 15 unmodified lines
249263 OMAP3_WKUP_IOPAD(0x2a0c, PIN_OUTPUT | MUX_MODE4) /* sys_boot1.gpio_3 */
250264 >;
251265 };
252− i2c2_pins: pinmux_i2c2_pins {
253− pinctrl-single,pins = <
254− OMAP3_CORE1_IOPAD(0x21be, PIN_INPUT | MUX_MODE0) /* i2c2_scl */
255− OMAP3_CORE1_IOPAD(0x21c0, PIN_INPUT | MUX_MODE0) /* i2c2_sda */
256− >;
257− };
258− i2c3_pins: pinmux_i2c3_pins {
259− pinctrl-single,pins = <
260− OMAP3_CORE1_IOPAD(0x21c2, PIN_INPUT | MUX_MODE0) /* i2c3_scl */
261− OMAP3_CORE1_IOPAD(0x21c4, PIN_INPUT | MUX_MODE0) /* i2c3_sda */
262− >;
263− };
264266 };
265267
266268 &omap3_pmx_core2 {
arch/arm/boot/dts/logicpd-torpedo-baseboard.dtsi+6−31
@@ -108,7 +108,6 @@ · 107 unmodified lines
108108 &dss {
109109 status = "ok";
110110 vdds_dsi-supply = <&vpll2>;
111− vdda_video-supply = <&video_reg>;
112111 pinctrl-names = "default";
113112 pinctrl-0 = <&dss_dpi_pins1>;
114113 port {
@@ -124,44 +123,20 @@ · 9 unmodified lines
124123 display0 = &lcd0;
125124 };
126125
127− video_reg: video_reg {
128− pinctrl-names = "default";
129− pinctrl-0 = <&panel_pwr_pins>;
130− compatible = "regulator-fixed";
131− regulator-name = "fixed-supply";
132− regulator-min-microvolt = <3300000>;
133− regulator-max-microvolt = <3300000>;
134− gpio = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd INI */
135− };
136−
137126 lcd0: display {
138− compatible = "panel-dpi";
127+ /* This isn't the exact LCD, but the timings meet spec */
128+ /* To make it work, set CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=4 */
129+ compatible = "newhaven,nhd-4.3-480272ef-atxl";
139130 label = "15";
140− status = "okay";
141− /* default-on; */
142131 pinctrl-names = "default";
143−
132+ pinctrl-0 = <&panel_pwr_pins>;
133+ backlight = <&bl>;
134+ enable-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>;
144135 port {
145136 lcd_in: endpoint {
146137 remote-endpoint = <&dpi_out>;
147138 };
148139 };
149−
150− panel-timing {
151− clock-frequency = <9000000>;
152− hactive = <480>;
153− vactive = <272>;
154− hfront-porch = <3>;
155− hback-porch = <2>;
156− hsync-len = <42>;
157− vback-porch = <3>;
158− vfront-porch = <4>;
159− vsync-len = <11>;
160− hsync-active = <0>;
161− vsync-active = <0>;
162− de-active = <1>;
163− pixelclk-active = <1>;
164− };
165140 };
166141
167142 bl: backlight {
arch/arm/configs/omap2plus_defconfig+1−0
@@ -363,6 +363,7 @@ CONFIG_DRM_OMAP_PANEL_TPO_TD028TTEC1=m · 362 unmodified lines
363363 CONFIG_DRM_OMAP_PANEL_TPO_TD043MTEA1=m
364364 CONFIG_DRM_OMAP_PANEL_NEC_NL8048HL11=m
365365 CONFIG_DRM_TILCDC=m
366+CONFIG_DRM_PANEL_SIMPLE=m
366367 CONFIG_FB=y
367368 CONFIG_FIRMWARE_EDID=y
368369 CONFIG_FB_MODE_HELPERS=y
arch/arm/mach-omap2/pdata-quirks.c+2−2
@@ -491,11 +491,11 @@ static int ti_sysc_clkdm_init(struct device *dev, · 490 unmodified lines
491491 struct clk *fck, struct clk *ick,
492492 struct ti_sysc_cookie *cookie)
493493 {
494− if (fck)
494+ if (!IS_ERR(fck))
495495 cookie->clkdm = ti_sysc_find_one_clockdomain(fck);
496496 if (cookie->clkdm)
497497 return 0;
498− if (ick)
498+ if (!IS_ERR(ick))
499499 cookie->clkdm = ti_sysc_find_one_clockdomain(ick);
500500 if (cookie->clkdm)
501501 return 0;
drivers/bus/ti-sysc.c+37−15
@@ -280,9 +280,6 @@ static int sysc_get_one_clock(struct sysc *ddata, const char *name) · 279 unmodified lines
280280
281281 ddata->clocks[index] = devm_clk_get(ddata->dev, name);
282282 if (IS_ERR(ddata->clocks[index])) {
283− if (PTR_ERR(ddata->clocks[index]) == -ENOENT)
284− return 0;
285−
286283 dev_err(ddata->dev, "clock get error for %s: %li\n",
287284 name, PTR_ERR(ddata->clocks[index]));
288285
@@ -357,7 +354,7 @@ static int sysc_get_clocks(struct sysc *ddata) · 68 unmodified lines
357354 continue;
358355
359356 error = sysc_get_one_clock(ddata, name);
360− if (error && error != -ENOENT)
357+ if (error)
361358 return error;
362359 }
363360
@@ -1630,17 +1627,19 @@ static int sysc_init_module(struct sysc *ddata) · 1266 unmodified lines
16301627 if (error)
16311628 return error;
16321629
1633− if (manage_clocks) {
1634− sysc_clkdm_deny_idle(ddata);
1630+ sysc_clkdm_deny_idle(ddata);
16351631
1636− error = sysc_enable_opt_clocks(ddata);
1637− if (error)
1638− return error;
1632+ /*
1633+ * Always enable clocks. The bootloader may or may not have enabled
1634+ * the related clocks.
1635+ */
1636+ error = sysc_enable_opt_clocks(ddata);
1637+ if (error)
1638+ return error;
16391639
1640− error = sysc_enable_main_clocks(ddata);
1641− if (error)
1642− goto err_opt_clocks;
1643− }
1640+ error = sysc_enable_main_clocks(ddata);
1641+ if (error)
1642+ goto err_opt_clocks;
16441643
16451644 if (!(ddata->cfg.quirks & SYSC_QUIRK_NO_RESET_ON_INIT)) {
16461645 error = sysc_rstctrl_reset_deassert(ddata, true);
@@ -1658,7 +1657,7 @@ static int sysc_init_module(struct sysc *ddata) · 11 unmodified lines
16581657 goto err_main_clocks;
16591658 }
16601659
1661− if (!ddata->legacy_mode && manage_clocks) {
1660+ if (!ddata->legacy_mode) {
16621661 error = sysc_enable_module(ddata->dev);
16631662 if (error)
16641663 goto err_main_clocks;
@@ -1675,6 +1674,7 @@ err_main_clocks: · 10 unmodified lines
16751674 if (manage_clocks)
16761675 sysc_disable_main_clocks(ddata);
16771676 err_opt_clocks:
1677+ /* No re-enable of clockdomain autoidle to prevent module autoidle */
16781678 if (manage_clocks) {
16791679 sysc_disable_opt_clocks(ddata);
16801680 sysc_clkdm_allow_idle(ddata);
@@ -2355,6 +2355,27 @@ static void ti_sysc_idle(struct work_struct *work) · 674 unmodified lines
23552355
23562356 ddata = container_of(work, struct sysc, idle_work.work);
23572357
2358+ /*
2359+ * One time decrement of clock usage counts if left on from init.
2360+ * Note that we disable opt clocks unconditionally in this case
2361+ * as they are enabled unconditionally during init without
2362+ * considering sysc_opt_clks_needed() at that point.
2363+ */
2364+ if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE |
2365+ SYSC_QUIRK_NO_IDLE_ON_INIT)) {
2366+ sysc_disable_main_clocks(ddata);
2367+ sysc_disable_opt_clocks(ddata);
2368+ sysc_clkdm_allow_idle(ddata);
2369+ }
2370+
2371+ /* Keep permanent PM runtime usage count for SYSC_QUIRK_NO_IDLE */
2372+ if (ddata->cfg.quirks & SYSC_QUIRK_NO_IDLE)
2373+ return;
2374+
2375+ /*
2376+ * Decrement PM runtime usage count for SYSC_QUIRK_NO_IDLE_ON_INIT
2377+ * and SYSC_QUIRK_NO_RESET_ON_INIT
2378+ */
23582379 if (pm_runtime_active(ddata->dev))
23592380 pm_runtime_put_sync(ddata->dev);
23602381 }
@@ -2439,7 +2460,8 @@ static int sysc_probe(struct platform_device *pdev) · 78 unmodified lines
24392460 INIT_DELAYED_WORK(&ddata->idle_work, ti_sysc_idle);
24402461
24412462 /* At least earlycon won't survive without deferred idle */
2442− if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE_ON_INIT |
2463+ if (ddata->cfg.quirks & (SYSC_QUIRK_NO_IDLE |
2464+ SYSC_QUIRK_NO_IDLE_ON_INIT |
24432465 SYSC_QUIRK_NO_RESET_ON_INIT)) {
24442466 schedule_delayed_work(&ddata->idle_work, 3000);
24452467 } else {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t