* [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Felipe Balbi @ 2014-10-14 18:28 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-1-git-send-email-balbi@ti.com>
without MODULE_ALIAS(), omapfb won't get loaded
automatically.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
index 9cbf1ce..b4b9244 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
@@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
module_platform_driver(omapfb_driver);
+MODULE_ALIAS("platform:omapfb");
MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
MODULE_DESCRIPTION("OMAP2/3 Framebuffer");
MODULE_LICENSE("GPL v2");
--
2.1.0.GIT
^ permalink raw reply related
* [PATCH 3/3] arm: boot: dts: am437x-sk: fix lcd enable pin mux data
From: Felipe Balbi @ 2014-10-14 18:28 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-1-git-send-email-balbi@ti.com>
Caused by a copy & paste error. Note that even with
this bug AM437x SK display still works because GPIO
mux mode is always enabled. It's still wrong to mux
somebody else's pin.
Luckily ball D25 (offset 0x238 - gpio5_8) on AM437x
isn't used for anything.
Signed-off-by: Felipe Balbi <balbi@ti.com>
---
arch/arm/boot/dts/am437x-sk-evm.dts | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
index 859ff3d..681be00 100644
--- a/arch/arm/boot/dts/am437x-sk-evm.dts
+++ b/arch/arm/boot/dts/am437x-sk-evm.dts
@@ -320,8 +320,7 @@
lcd_pins: lcd_pins {
pinctrl-single,pins = <
- /* GPIO 5_8 to select LCD / HDMI */
- 0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7)
+ 0x1c (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpcm_ad7.gpio1_7 */
>;
};
};
--
2.1.0.GIT
^ permalink raw reply related
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Felipe Balbi @ 2014-10-14 18:34 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-2-git-send-email-balbi@ti.com>
[-- Attachment #1: Type: text/plain, Size: 446 bytes --]
On Tue, Oct 14, 2014 at 01:28:54PM -0500, Felipe Balbi wrote:
> without MODULE_ALIAS(), omapfb won't get loaded
> automatically.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
little note here. This makes omapfb load automatically, but display
still doesn't work with DSS as modules. Backlight is working and pixel
clock is running just fine. Still, nothing on display.
I thought I'd leave that for Tomi to deal with.
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH v6 07/18] ASoC: codecs/hdmi: Mark the maximum significant bits to HDMI codec
From: Mark Brown @ 2014-10-15 10:25 UTC (permalink / raw)
To: Jyri Sarha
Cc: alsa-devel, linux-fbdev, linux-omap, peter.ujfalusi,
liam.r.girdwood, tomi.valkeinen, detheridge
In-Reply-To: <9d3aa456eb4d753c38fc642bf0a8cd5fdc5af54a.1413306131.git.jsarha@ti.com>
[-- Attachment #1: Type: text/plain, Size: 319 bytes --]
On Tue, Oct 14, 2014 at 08:29:26PM +0300, Jyri Sarha wrote:
> HDMI audio can not have more than 24 bits even if on i2s bus there
> would be 32 bit samples. Mark this by adding .sig_bits = 24 to
> playback stream definition.
Applied, thanks. Please use subject lines matching the style for the
subsystem (no codecs/).
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply
* Re: [PATCH v6 08/18] ASoC: codecs/hdmi: HDMI codec doesn't benefit from pmdown delay
From: Mark Brown @ 2014-10-15 10:27 UTC (permalink / raw)
To: Jyri Sarha
Cc: alsa-devel, linux-fbdev, linux-omap, peter.ujfalusi,
liam.r.girdwood, tomi.valkeinen, detheridge
In-Reply-To: <aa7ad47271e780b75b608382a8830cdc22c4193a.1413306131.git.jsarha@ti.com>
[-- Attachment #1: Type: text/plain, Size: 386 bytes --]
On Tue, Oct 14, 2014 at 08:29:27PM +0300, Jyri Sarha wrote:
> Adds .ignore_pmdown_time = true to codec driver struct.
>
> HDMI codec is currently a dummy codec and doesn't benefit from pmdown
> delay. Even if in the future the codec would controll HDMI encoder, it
> would still be a digital to digital interface that should have no need
> for pmdown delay.
Applied, thanks.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply
* [GIT PULL] fbdev changes for 3.18
From: Tomi Valkeinen @ 2014-10-15 11:23 UTC (permalink / raw)
To: Linus Torvalds; +Cc: LKML, Linux Fbdev development list
[-- Attachment #1: Type: text/plain, Size: 5546 bytes --]
Hi Linus,
Please pull the fbdev changes for 3.18.
Tomi
The following changes since commit 52addcf9d6669fa439387610bc65c92fa0980cef:
Linux 3.17-rc2 (2014-08-25 15:36:20 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux.git tags/fbdev-3.18
for you to fetch changes up to 33ac9dba859b07d40e9ec826057d20c857fdede5:
fonts: Add 6x10 font (2014-10-09 11:35:48 +0300)
----------------------------------------------------------------
fbdev changes for 3.18
* new 6x10 font
* various small fixes and cleanups
----------------------------------------------------------------
Alexander Stein (1):
video/atmel_lcdfb: Introduce regulator support
Andy Shevchenko (1):
video: fbdev: use %*ph specifier to dump small buffers
Arnd Bergmann (1):
video: mx3fb: always enable BACKLIGHT_LCD_SUPPORT
Behan Webster (2):
arm, fbdev, omap2, LLVMLinux: Remove nested function from omap2 dss
arm, fbdev, omap2, LLVMLinux: Remove nested function from omapfb
Fabian Frederick (7):
video: vermilion: remove unnecessary break after goto
video: fbdev: stifb.c: use container_of to resolve stifb_info from fb_info
video: fbdev: sa1100fb.c: use container_of to resolve sa1100fb_info from fb_info
video: fbdev: controlfb.c: use container_of to resolve fb_info_control from fb_info
video: fbdev: cyber2000fb.c: use container_of to resolve cfb_info from fb_info
video: fbdev: pxafb.c: use container_of to resolve pxafb_info/layer from fb_info
video: fbdev: valkyriefb.c: use container_of to resolve fb_info_valkyrie from fb_info
Geert Uytterhoeven (3):
video: mx3fb: Update comment for dmaengine_prep_slave_sg() API
video: valkyriefb: Fix unused variable warning in set_valkyrie_clock()
fbdev: sh_mobile_hdmi: Re-init regs before irq re-enable on resume
Julia Lawall (8):
video: of: display_timing: delete unneeded test before of_node_put
video: fbdev: matrox: use c99 initializers in structures
OMAPDSS: DSI: use c99 initializers in structures
video: fbdev: aty: use c99 initializers in structures
video: fbdev: riva: delete double assignment
video: fbdev: intelfb: delete double assignment
video: fbdev: sis: delete double assignment
video: fbdev: au1200fb: delete double assignment
Maarten ter Huurne (1):
fonts: Add 6x10 font
Mikulas Patocka (2):
framebuffer: fix border color
framebuffer: fix screen corruption when copying
Pramod Gurav (2):
msm: msm_fb: Add remove function for platform driver for clean unloading
msm: msm_fb: Move to using managed resources of kzalloc
Rickard Strandqvist (1):
video: fbdev: sis: sis_main.c: Cleaning up missing null-terminate in conjunction with strncpy
Tomi Valkeinen (1):
videomode: provide dummy inline functions for !CONFIG_OF
.../devicetree/bindings/video/atmel,lcdc.txt | 3 +
drivers/video/console/bitblit.c | 3 +-
drivers/video/console/fbcon_ccw.c | 3 +-
drivers/video/console/fbcon_cw.c | 3 +-
drivers/video/console/fbcon_ud.c | 3 +-
drivers/video/fbdev/Kconfig | 3 +-
drivers/video/fbdev/atmel_lcdfb.c | 20 +
drivers/video/fbdev/aty/aty128fb.c | 63 +-
drivers/video/fbdev/au1200fb.c | 1 -
drivers/video/fbdev/controlfb.c | 15 +-
drivers/video/fbdev/core/cfbcopyarea.c | 13 +-
drivers/video/fbdev/core/fbsysfs.c | 12 +-
drivers/video/fbdev/cyber2000fb.c | 16 +-
drivers/video/fbdev/intelfb/intelfbhw.c | 3 +-
drivers/video/fbdev/matrox/matroxfb_base.c | 52 +-
drivers/video/fbdev/matrox/matroxfb_maven.c | 20 +-
drivers/video/fbdev/msm/msm_fb.c | 25 +-
drivers/video/fbdev/mx3fb.c | 2 +-
drivers/video/fbdev/omap2/dss/dispc-compat.c | 9 +-
drivers/video/fbdev/omap2/dss/dsi.c | 10 +-
drivers/video/fbdev/omap2/dss/manager-sysfs.c | 16 +-
drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 14 +-
drivers/video/fbdev/pxafb.c | 20 +-
drivers/video/fbdev/riva/riva_hw.c | 1 -
drivers/video/fbdev/sa1100fb.c | 18 +-
drivers/video/fbdev/sh_mobile_hdmi.c | 44 +-
drivers/video/fbdev/sis/init301.c | 2 +-
drivers/video/fbdev/sis/sis_main.c | 2 +-
drivers/video/fbdev/stifb.c | 4 +-
drivers/video/fbdev/udlfb.c | 7 +-
drivers/video/fbdev/valkyriefb.c | 14 +-
drivers/video/fbdev/vermilion/vermilion.c | 1 -
drivers/video/of_display_timing.c | 3 +-
include/linux/font.h | 4 +-
include/video/of_display_timing.h | 16 +
lib/fonts/Kconfig | 9 +
lib/fonts/Makefile | 1 +
lib/fonts/font_6x10.c | 3086 ++++++++++++++++++++
lib/fonts/fonts.c | 4 +
39 files changed, 3421 insertions(+), 124 deletions(-)
create mode 100644 lib/fonts/font_6x10.c
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation
From: Tomi Valkeinen @ 2014-10-15 12:13 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-1-git-send-email-balbi@ti.com>
[-- Attachment #1: Type: text/plain, Size: 2074 bytes --]
Hi,
On 14/10/14 21:28, Felipe Balbi wrote:
> if we leave __exit annotation, driver can't be unbound
> through sysfs.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> index ec2d132..9cbf1ce 100644
> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> @@ -2619,7 +2619,7 @@ err0:
> return r;
> }
>
> -static int __exit omapfb_remove(struct platform_device *pdev)
> +static int omapfb_remove(struct platform_device *pdev)
> {
> struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
>
> @@ -2636,7 +2636,7 @@ static int __exit omapfb_remove(struct platform_device *pdev)
>
> static struct platform_driver omapfb_driver = {
> .probe = omapfb_probe,
> - .remove = __exit_p(omapfb_remove),
> + .remove = omapfb_remove,
> .driver = {
> .name = "omapfb",
> .owner = THIS_MODULE,
Interesting. I don't know if I'm doing something funny, but without this
patch, I can unbind omapfb, kind of.
"echo omapfb > unbind" goes ok, but remove is obviously not called.
Somehow omapfb device is still unbound from the driver, as I can then
bind it again, causing probe to be called. Which breaks everything.
I would've thought that unbinding is not possible if remove is missing,
but that doesn't seem to be the case. I guess it just means that remove
is not called when the driver & device are unbound.
We have 18 __exit_p()s in omapdss and related drivers. I guess they are
all broken the same way.
Note that omapfb unbind & bind does not work even with this patch, but
results in a crash as some old state is left into omapdss. The same
happens also with unloading and loading omapfb module (but keeping
omapdss module loaded).
So there seems to be more issues around this.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Tomi Valkeinen @ 2014-10-15 12:20 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-2-git-send-email-balbi@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1470 bytes --]
On 14/10/14 21:28, Felipe Balbi wrote:
> without MODULE_ALIAS(), omapfb won't get loaded
> automatically.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> index 9cbf1ce..b4b9244 100644
> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
>
> module_platform_driver(omapfb_driver);
>
> +MODULE_ALIAS("platform:omapfb");
> MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
> MODULE_DESCRIPTION("OMAP2/3 Framebuffer");
> MODULE_LICENSE("GPL v2");
>
Thanks, I've queued this.
Unfortunately it's somewhat based on luck if the automatic loading works
correctly. We can't add more displays after omapfb has been probed, so
all the panel and encoder drivers have to be loaded before omapfb.
We have two workarounds there, which help the situation a bit. First is
that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
that if there are displays, but no main display (display0), then omapfb
returns EPROBE_DEFER.
So even with these workarounds it is possible that drivers for secondary
displays are loaded after omapfb, causing them to be ignored.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 3/3] arm: boot: dts: am437x-sk: fix lcd enable pin mux data
From: Tomi Valkeinen @ 2014-10-15 12:24 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <1413311335-25083-3-git-send-email-balbi@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1097 bytes --]
On 14/10/14 21:28, Felipe Balbi wrote:
> Caused by a copy & paste error. Note that even with
> this bug AM437x SK display still works because GPIO
> mux mode is always enabled. It's still wrong to mux
> somebody else's pin.
>
> Luckily ball D25 (offset 0x238 - gpio5_8) on AM437x
> isn't used for anything.
>
> Signed-off-by: Felipe Balbi <balbi@ti.com>
> ---
> arch/arm/boot/dts/am437x-sk-evm.dts | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/arch/arm/boot/dts/am437x-sk-evm.dts b/arch/arm/boot/dts/am437x-sk-evm.dts
> index 859ff3d..681be00 100644
> --- a/arch/arm/boot/dts/am437x-sk-evm.dts
> +++ b/arch/arm/boot/dts/am437x-sk-evm.dts
> @@ -320,8 +320,7 @@
>
> lcd_pins: lcd_pins {
> pinctrl-single,pins = <
> - /* GPIO 5_8 to select LCD / HDMI */
> - 0x238 (PIN_OUTPUT_PULLUP | MUX_MODE7)
> + 0x1c (PIN_OUTPUT_PULLUP | MUX_MODE7) /* gpcm_ad7.gpio1_7 */
> >;
> };
> };
I didn't verify the offset, but based on the comments this looks fine to me.
Acked-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Tomi Valkeinen @ 2014-10-15 12:46 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20141014183426.GA19491@saruman>
[-- Attachment #1: Type: text/plain, Size: 892 bytes --]
On 14/10/14 21:34, Felipe Balbi wrote:
> On Tue, Oct 14, 2014 at 01:28:54PM -0500, Felipe Balbi wrote:
>> without MODULE_ALIAS(), omapfb won't get loaded
>> automatically.
>>
>> Signed-off-by: Felipe Balbi <balbi@ti.com>
>
> little note here. This makes omapfb load automatically, but display
> still doesn't work with DSS as modules. Backlight is working and pixel
> clock is running just fine. Still, nothing on display.
>
> I thought I'd leave that for Tomi to deal with.
I presume this is about am437x-sk. I don't have the board, so there's
not too much I can do except send emails.
So the panel works fine if display drivers are built-in?
The compatible string seems to be wrong in the .dts file. It says
"osddisplays,osd057T0559-34ts" which is not the panel used. But that
shouldn't affect this.
What do you mean with "pixel clock is running"?
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Felipe Balbi @ 2014-10-15 14:37 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <543E6C92.7090404@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1169 bytes --]
HI,
On Wed, Oct 15, 2014 at 03:46:10PM +0300, Tomi Valkeinen wrote:
> On 14/10/14 21:34, Felipe Balbi wrote:
> > On Tue, Oct 14, 2014 at 01:28:54PM -0500, Felipe Balbi wrote:
> >> without MODULE_ALIAS(), omapfb won't get loaded
> >> automatically.
> >>
> >> Signed-off-by: Felipe Balbi <balbi@ti.com>
> >
> > little note here. This makes omapfb load automatically, but display
> > still doesn't work with DSS as modules. Backlight is working and pixel
> > clock is running just fine. Still, nothing on display.
> >
> > I thought I'd leave that for Tomi to deal with.
>
> I presume this is about am437x-sk. I don't have the board, so there's
> not too much I can do except send emails.
>
> So the panel works fine if display drivers are built-in?
yup.
> The compatible string seems to be wrong in the .dts file. It says
> "osddisplays,osd057T0559-34ts" which is not the panel used. But that
> shouldn't affect this.
I got that from Darren, IIRC. Still, if it's wrong, it's wrong. What
should it be ?
> What do you mean with "pixel clock is running"?
poking at the pixel clock with a scope, I can see it clocking.
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Felipe Balbi @ 2014-10-15 14:38 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <543E6683.5040103@ti.com>
[-- Attachment #1: Type: text/plain, Size: 1658 bytes --]
On Wed, Oct 15, 2014 at 03:20:19PM +0300, Tomi Valkeinen wrote:
> On 14/10/14 21:28, Felipe Balbi wrote:
> > without MODULE_ALIAS(), omapfb won't get loaded
> > automatically.
> >
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> > drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > index 9cbf1ce..b4b9244 100644
> > --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
> >
> > module_platform_driver(omapfb_driver);
> >
> > +MODULE_ALIAS("platform:omapfb");
> > MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
> > MODULE_DESCRIPTION("OMAP2/3 Framebuffer");
> > MODULE_LICENSE("GPL v2");
> >
>
> Thanks, I've queued this.
>
> Unfortunately it's somewhat based on luck if the automatic loading works
> correctly. We can't add more displays after omapfb has been probed, so
> all the panel and encoder drivers have to be loaded before omapfb.
>
> We have two workarounds there, which help the situation a bit. First is
> that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
> that if there are displays, but no main display (display0), then omapfb
> returns EPROBE_DEFER.
>
> So even with these workarounds it is possible that drivers for secondary
> displays are loaded after omapfb, causing them to be ignored.
then there is another case to fix, right ? :-)
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation
From: Felipe Balbi @ 2014-10-15 14:41 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <543E64EE.4070104@ti.com>
[-- Attachment #1: Type: text/plain, Size: 2729 bytes --]
Hi,
On Wed, Oct 15, 2014 at 03:13:34PM +0300, Tomi Valkeinen wrote:
> Hi,
>
> On 14/10/14 21:28, Felipe Balbi wrote:
> > if we leave __exit annotation, driver can't be unbound
> > through sysfs.
> >
> > Signed-off-by: Felipe Balbi <balbi@ti.com>
> > ---
> > drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > index ec2d132..9cbf1ce 100644
> > --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
> > @@ -2619,7 +2619,7 @@ err0:
> > return r;
> > }
> >
> > -static int __exit omapfb_remove(struct platform_device *pdev)
> > +static int omapfb_remove(struct platform_device *pdev)
> > {
> > struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
> >
> > @@ -2636,7 +2636,7 @@ static int __exit omapfb_remove(struct platform_device *pdev)
> >
> > static struct platform_driver omapfb_driver = {
> > .probe = omapfb_probe,
> > - .remove = __exit_p(omapfb_remove),
> > + .remove = omapfb_remove,
> > .driver = {
> > .name = "omapfb",
> > .owner = THIS_MODULE,
>
> Interesting. I don't know if I'm doing something funny, but without this
> patch, I can unbind omapfb, kind of.
>
> "echo omapfb > unbind" goes ok, but remove is obviously not called.
remove isn't called because it won't exist if it's built-in. Look at the
definition of __exit_p()
> Somehow omapfb device is still unbound from the driver, as I can then
> bind it again, causing probe to be called. Which breaks everything.
>
> I would've thought that unbinding is not possible if remove is missing,
> but that doesn't seem to be the case. I guess it just means that remove
> is not called when the driver & device are unbound.
if no remove it provided on platform_driver structure, platform bus
assumes you have nothing to do on your ->remove(), so you end up leaking
all resources you allocated on ->probe() (unless you *really* don't need
to do anything on ->remove).
> We have 18 __exit_p()s in omapdss and related drivers. I guess they are
> all broken the same way.
yup, I should've grepped.
> Note that omapfb unbind & bind does not work even with this patch, but
> results in a crash as some old state is left into omapdss. The same
> happens also with unloading and loading omapfb module (but keeping
> omapdss module loaded).
It worked fine for me. I unbound and bound omapfb multiple times.
> So there seems to be more issues around this.
quite a few more, I'd say
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation
From: Tomi Valkeinen @ 2014-10-15 15:43 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20141015144140.GD10888@saruman>
[-- Attachment #1: Type: text/plain, Size: 2263 bytes --]
On 15/10/14 17:41, Felipe Balbi wrote:
>> Interesting. I don't know if I'm doing something funny, but without this
>> patch, I can unbind omapfb, kind of.
>>
>> "echo omapfb > unbind" goes ok, but remove is obviously not called.
>
> remove isn't called because it won't exist if it's built-in. Look at the
> definition of __exit_p()
Yes, that's what I meant with "obviously".
>> Somehow omapfb device is still unbound from the driver, as I can then
>> bind it again, causing probe to be called. Which breaks everything.
>>
>> I would've thought that unbinding is not possible if remove is missing,
>> but that doesn't seem to be the case. I guess it just means that remove
>> is not called when the driver & device are unbound.
>
> if no remove it provided on platform_driver structure, platform bus
> assumes you have nothing to do on your ->remove(), so you end up leaking
> all resources you allocated on ->probe() (unless you *really* don't need
> to do anything on ->remove).
Yep. That's quite odd, still. grep shows quite many uses of __exit_p(),
and all for remove callback. So, if you have something to release in
remove(), you should set it always, for both module and built-in. And if
you don't have anything to release, you would always just set .release
to NULL.
I mean, what's the use case for __exit_p()? With a quick glance, at
least some of the other users also use __exit_p() the same way omapdss
does (i.e. in the wrong way).
>> We have 18 __exit_p()s in omapdss and related drivers. I guess they are
>> all broken the same way.
>
> yup, I should've grepped.
>
>> Note that omapfb unbind & bind does not work even with this patch, but
>> results in a crash as some old state is left into omapdss. The same
>> happens also with unloading and loading omapfb module (but keeping
>> omapdss module loaded).
>
> It worked fine for me. I unbound and bound omapfb multiple times.
Hmm, ok. Odd, the bug was quite clear and I think it should happen every
time. Well, I was using omap4. If you used AM4xx, that's basically omap3
DSS. Maybe there's a diff there.
>> So there seems to be more issues around this.
>
> quite a few more, I'd say
Yep, I'll have a look at this.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/3] video: fbdev: omap2: omapfb: add missing MODULE_ALIAS()
From: Tomi Valkeinen @ 2014-10-15 15:45 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <20141015143849.GC10888@saruman>
[-- Attachment #1: Type: text/plain, Size: 1858 bytes --]
On 15/10/14 17:38, Felipe Balbi wrote:
> On Wed, Oct 15, 2014 at 03:20:19PM +0300, Tomi Valkeinen wrote:
>> On 14/10/14 21:28, Felipe Balbi wrote:
>>> without MODULE_ALIAS(), omapfb won't get loaded
>>> automatically.
>>>
>>> Signed-off-by: Felipe Balbi <balbi@ti.com>
>>> ---
>>> drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
>>> index 9cbf1ce..b4b9244 100644
>>> --- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
>>> +++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
>>> @@ -2651,6 +2651,7 @@ module_param_named(mirror, def_mirror, bool, 0);
>>>
>>> module_platform_driver(omapfb_driver);
>>>
>>> +MODULE_ALIAS("platform:omapfb");
>>> MODULE_AUTHOR("Tomi Valkeinen <tomi.valkeinen@nokia.com>");
>>> MODULE_DESCRIPTION("OMAP2/3 Framebuffer");
>>> MODULE_LICENSE("GPL v2");
>>>
>>
>> Thanks, I've queued this.
>>
>> Unfortunately it's somewhat based on luck if the automatic loading works
>> correctly. We can't add more displays after omapfb has been probed, so
>> all the panel and encoder drivers have to be loaded before omapfb.
>>
>> We have two workarounds there, which help the situation a bit. First is
>> that if omapfb finds no displays, it returns EPROBE_DEFER. The second is
>> that if there are displays, but no main display (display0), then omapfb
>> returns EPROBE_DEFER.
>>
>> So even with these workarounds it is possible that drivers for secondary
>> displays are loaded after omapfb, causing them to be ignored.
>
> then there is another case to fix, right ? :-)
Yes, but don't hold your breath. The issue's been there for ages and no
good solutions have been found. The same problem is there for omapdrm.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 1/3] video: fbdev: omap2: omapfb: remove __exit annotation
From: Felipe Balbi @ 2014-10-15 15:54 UTC (permalink / raw)
To: linux-arm-kernel
In-Reply-To: <543E962C.2050505@ti.com>
[-- Attachment #1: Type: text/plain, Size: 2176 bytes --]
Hi,
On Wed, Oct 15, 2014 at 06:43:40PM +0300, Tomi Valkeinen wrote:
> >> Somehow omapfb device is still unbound from the driver, as I can then
> >> bind it again, causing probe to be called. Which breaks everything.
> >>
> >> I would've thought that unbinding is not possible if remove is missing,
> >> but that doesn't seem to be the case. I guess it just means that remove
> >> is not called when the driver & device are unbound.
> >
> > if no remove it provided on platform_driver structure, platform bus
> > assumes you have nothing to do on your ->remove(), so you end up leaking
> > all resources you allocated on ->probe() (unless you *really* don't need
> > to do anything on ->remove).
>
> Yep. That's quite odd, still. grep shows quite many uses of __exit_p(),
> and all for remove callback. So, if you have something to release in
> remove(), you should set it always, for both module and built-in. And if
> you don't have anything to release, you would always just set .release
> to NULL.
>
> I mean, what's the use case for __exit_p()? With a quick glance, at
> least some of the other users also use __exit_p() the same way omapdss
> does (i.e. in the wrong way).
__exit_p() meant something else a few years back, perhaps those were
left over from some tree-wide cleanups.
> >> We have 18 __exit_p()s in omapdss and related drivers. I guess they are
> >> all broken the same way.
> >
> > yup, I should've grepped.
> >
> >> Note that omapfb unbind & bind does not work even with this patch, but
> >> results in a crash as some old state is left into omapdss. The same
> >> happens also with unloading and loading omapfb module (but keeping
> >> omapdss module loaded).
> >
> > It worked fine for me. I unbound and bound omapfb multiple times.
>
> Hmm, ok. Odd, the bug was quite clear and I think it should happen every
> time. Well, I was using omap4. If you used AM4xx, that's basically omap3
> DSS. Maybe there's a diff there.
could very well be :-)
> >> So there seems to be more issues around this.
> >
> > quite a few more, I'd say
>
> Yep, I'll have a look at this.
alright
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 00/12] dmaengine: remove users of device_control
From: Vinod Koul @ 2014-10-15 16:10 UTC (permalink / raw)
To: dmaengine
Cc: Viresh Kumar, Tejun Heo, Linus Walleij, Dan Williams,
Guennadi Liakhovetski, Mauro Carvalho Chehab, David Woodhouse,
Brian Norris, Nicolas Ferre, Mark Brown, Greg Kroah-Hartman,
Jiri Slaby, Felipe Balbi, Jean-Christophe Plagniol-Villard,
Tomi Valkeinen, Liam Girdwood, Jaroslav Kysela, Takashi Iwai,
Jingoo Han, Bartlomiej Zolnierkiewicz, Laurent Pinchart
In-Reply-To: <1413041973-28146-1-git-send-email-vinod.koul@intel.com>
On Sat, Oct 11, 2014 at 09:09:33PM +0530, Vinod Koul wrote:
> The recent discussion [1] on the API have resulted in moving away from
> device_control ioctl method to proper channel APIs.
> There are still few users on the device_control which should use the wrappers
> existing rather than access device_control.
> This will aid us in deprecating and removing device_control, possibly after
> the merge window.
>
> These can be merged thru respective subsystem tree or dmaengine tree. Either
> way please just let me know.
Applying to dmaengine-next with acks recived, dropping the ones which are
applied by respective folks
--
~Vinod
>
> Feng's kbuild has tested these as well [2]
>
> [1]: http://www.spinics.net/lists/dmaengine/msg02212.html
> [2]: http://git.infradead.org/users/vkoul/slave-dma.git/shortlog/refs/heads/topic/dma_control_cleanup
>
> Vinod Koul (12):
> pata_arasan_cf: use dmaengine_terminate_all() API
> dmaengine: coh901318: use dmaengine_terminate_all() API
> [media] V4L2: mx3_camer: use dmaengine_pause() API
> mtd: fsmc_nand: use dmaengine_terminate_all() API
> mtd: sh_flctl: use dmaengine_terminate_all() API
> net: ks8842: use dmaengine_terminate_all() API
> spi/atmel: use dmaengine_terminate_all() API
> spi/spi-dw-mid.c: use dmaengine_slave_config() API
> serial: sh-sci: use dmaengine_terminate_all() API
> usb: musb: ux500_dma: use dmaengine_xxx() APIs
> ASoC: txx9: use dmaengine_terminate_all() API
> video: mx3fb: use dmaengine_terminate_all() API
>
> drivers/ata/pata_arasan_cf.c | 5 ++---
> drivers/dma/coh901318.c | 2 +-
> drivers/media/platform/soc_camera/mx3_camera.c | 6 ++----
> drivers/mtd/nand/fsmc_nand.c | 2 +-
> drivers/mtd/nand/sh_flctl.c | 2 +-
> drivers/net/ethernet/micrel/ks8842.c | 6 ++----
> drivers/spi/spi-atmel.c | 6 ++----
> drivers/spi/spi-dw-mid.c | 6 ++----
> drivers/tty/serial/sh-sci.c | 2 +-
> drivers/usb/musb/ux500_dma.c | 7 ++-----
> drivers/video/fbdev/mx3fb.c | 3 +--
> sound/soc/txx9/txx9aclc.c | 7 +++----
> 12 files changed, 20 insertions(+), 34 deletions(-)
>
> --
> To unsubscribe from this list: send the line "unsubscribe dmaengine" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
^ permalink raw reply
* [PATCH 1/5] OMAPDSS: set suppress_bind_attrs
From: Tomi Valkeinen @ 2014-10-16 9:39 UTC (permalink / raw)
To: linux-fbdev, linux-omap; +Cc: Felipe Balbi, Tomi Valkeinen
omapdss drivers cannot handle devices being unbound while the devices
are part of a connected display pipeline. Module refcounts are used to
prevent unloading the modules, but one can still manually unbind the
devices via sysfs, causing crash.
Set suppress_bind_attrs to disable the bind/unbind support via sysfs.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/displays-new/connector-analog-tv.c | 1 +
drivers/video/fbdev/omap2/displays-new/connector-dvi.c | 1 +
drivers/video/fbdev/omap2/displays-new/connector-hdmi.c | 1 +
drivers/video/fbdev/omap2/displays-new/encoder-tfp410.c | 1 +
drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-dpi.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-dsi-cm.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-lgphilips-lb035q02.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-nec-nl8048hl11.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-sony-acx565akm.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c | 1 +
drivers/video/fbdev/omap2/displays-new/panel-tpo-td043mtea1.c | 1 +
drivers/video/fbdev/omap2/dss/dispc.c | 1 +
drivers/video/fbdev/omap2/dss/dpi.c | 1 +
drivers/video/fbdev/omap2/dss/dsi.c | 1 +
drivers/video/fbdev/omap2/dss/dss.c | 1 +
drivers/video/fbdev/omap2/dss/hdmi4.c | 1 +
drivers/video/fbdev/omap2/dss/hdmi5.c | 1 +
drivers/video/fbdev/omap2/dss/rfbi.c | 1 +
drivers/video/fbdev/omap2/dss/sdi.c | 1 +
drivers/video/fbdev/omap2/dss/venc.c | 1 +
22 files changed, 22 insertions(+)
diff --git a/drivers/video/fbdev/omap2/displays-new/connector-analog-tv.c b/drivers/video/fbdev/omap2/displays-new/connector-analog-tv.c
index 5ee3b5505f7f..05be3ade4584 100644
--- a/drivers/video/fbdev/omap2/displays-new/connector-analog-tv.c
+++ b/drivers/video/fbdev/omap2/displays-new/connector-analog-tv.c
@@ -308,6 +308,7 @@ static struct platform_driver tvc_connector_driver = {
.name = "connector-analog-tv",
.owner = THIS_MODULE,
.of_match_table = tvc_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/connector-dvi.c b/drivers/video/fbdev/omap2/displays-new/connector-dvi.c
index 74de2bc50c4f..2dfb6e5ff0cc 100644
--- a/drivers/video/fbdev/omap2/displays-new/connector-dvi.c
+++ b/drivers/video/fbdev/omap2/displays-new/connector-dvi.c
@@ -391,6 +391,7 @@ static struct platform_driver dvi_connector_driver = {
.name = "connector-dvi",
.owner = THIS_MODULE,
.of_match_table = dvic_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/connector-hdmi.c b/drivers/video/fbdev/omap2/displays-new/connector-hdmi.c
index 131c6e260898..7b25967a91eb 100644
--- a/drivers/video/fbdev/omap2/displays-new/connector-hdmi.c
+++ b/drivers/video/fbdev/omap2/displays-new/connector-hdmi.c
@@ -437,6 +437,7 @@ static struct platform_driver hdmi_connector_driver = {
.name = "connector-hdmi",
.owner = THIS_MODULE,
.of_match_table = hdmic_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/encoder-tfp410.c b/drivers/video/fbdev/omap2/displays-new/encoder-tfp410.c
index b4e9a42a79e6..47ee7cdee1c5 100644
--- a/drivers/video/fbdev/omap2/displays-new/encoder-tfp410.c
+++ b/drivers/video/fbdev/omap2/displays-new/encoder-tfp410.c
@@ -298,6 +298,7 @@ static struct platform_driver tfp410_driver = {
.name = "tfp410",
.owner = THIS_MODULE,
.of_match_table = tfp410_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
index c891d8f84cb2..c4abd56dd846 100644
--- a/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
+++ b/drivers/video/fbdev/omap2/displays-new/encoder-tpd12s015.c
@@ -461,6 +461,7 @@ static struct platform_driver tpd_driver = {
.name = "tpd12s015",
.owner = THIS_MODULE,
.of_match_table = tpd_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c
index 3636b61dc9b4..a9c3dcf0f6b5 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c
@@ -327,6 +327,7 @@ static struct platform_driver panel_dpi_driver = {
.name = "panel-dpi",
.owner = THIS_MODULE,
.of_match_table = panel_dpi_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-dsi-cm.c b/drivers/video/fbdev/omap2/displays-new/panel-dsi-cm.c
index d6f14e8717e8..899cb1ab523d 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-dsi-cm.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-dsi-cm.c
@@ -1378,6 +1378,7 @@ static struct platform_driver dsicm_driver = {
.name = "panel-dsi-cm",
.owner = THIS_MODULE,
.of_match_table = dsicm_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-lgphilips-lb035q02.c b/drivers/video/fbdev/omap2/displays-new/panel-lgphilips-lb035q02.c
index cc5b5124e0b4..27d4fcfa1824 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-lgphilips-lb035q02.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-lgphilips-lb035q02.c
@@ -394,6 +394,7 @@ static struct spi_driver lb035q02_spi_driver = {
.name = "panel_lgphilips_lb035q02",
.owner = THIS_MODULE,
.of_match_table = lb035q02_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-nec-nl8048hl11.c b/drivers/video/fbdev/omap2/displays-new/panel-nec-nl8048hl11.c
index 3595f111aa35..ccf3f4f3c703 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-nec-nl8048hl11.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-nec-nl8048hl11.c
@@ -424,6 +424,7 @@ static struct spi_driver nec_8048_driver = {
.owner = THIS_MODULE,
.pm = NEC_8048_PM_OPS,
.of_match_table = nec_8048_of_match,
+ .suppress_bind_attrs = true,
},
.probe = nec_8048_probe,
.remove = nec_8048_remove,
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
index f1f72ce50a17..234142cc3764 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
@@ -410,6 +410,7 @@ static struct platform_driver sharp_ls_driver = {
.name = "panel-sharp-ls037v7dw01",
.owner = THIS_MODULE,
.of_match_table = sharp_ls_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-sony-acx565akm.c b/drivers/video/fbdev/omap2/displays-new/panel-sony-acx565akm.c
index 617f8d2f5127..337ccc5c0f5e 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-sony-acx565akm.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-sony-acx565akm.c
@@ -904,6 +904,7 @@ static struct spi_driver acx565akm_driver = {
.name = "acx565akm",
.owner = THIS_MODULE,
.of_match_table = acx565akm_of_match,
+ .suppress_bind_attrs = true,
},
.probe = acx565akm_probe,
.remove = acx565akm_remove,
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
index 728808bcceeb..fbba0b8ca871 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td028ttec1.c
@@ -500,6 +500,7 @@ static struct spi_driver td028ttec1_spi_driver = {
.name = "panel-tpo-td028ttec1",
.owner = THIS_MODULE,
.of_match_table = td028ttec1_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td043mtea1.c b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td043mtea1.c
index de78ab0caaa8..5aba76bca25a 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-tpo-td043mtea1.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-tpo-td043mtea1.c
@@ -673,6 +673,7 @@ static struct spi_driver tpo_td043_spi_driver = {
.owner = THIS_MODULE,
.pm = &tpo_td043_spi_pm,
.of_match_table = tpo_td043_of_match,
+ .suppress_bind_attrs = true,
},
.probe = tpo_td043_probe,
.remove = tpo_td043_remove,
diff --git a/drivers/video/fbdev/omap2/dss/dispc.c b/drivers/video/fbdev/omap2/dss/dispc.c
index be053aa80880..e67976bd0627 100644
--- a/drivers/video/fbdev/omap2/dss/dispc.c
+++ b/drivers/video/fbdev/omap2/dss/dispc.c
@@ -3843,6 +3843,7 @@ static struct platform_driver omap_dispchw_driver = {
.owner = THIS_MODULE,
.pm = &dispc_pm_ops,
.of_match_table = dispc_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/dpi.c b/drivers/video/fbdev/omap2/dss/dpi.c
index 9368972d6962..4a3363dae74a 100644
--- a/drivers/video/fbdev/omap2/dss/dpi.c
+++ b/drivers/video/fbdev/omap2/dss/dpi.c
@@ -720,6 +720,7 @@ static struct platform_driver omap_dpi_driver = {
.driver = {
.name = "omapdss_dpi",
.owner = THIS_MODULE,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/dsi.c b/drivers/video/fbdev/omap2/dss/dsi.c
index 56b92444c54f..57498d0e985d 100644
--- a/drivers/video/fbdev/omap2/dss/dsi.c
+++ b/drivers/video/fbdev/omap2/dss/dsi.c
@@ -5748,6 +5748,7 @@ static struct platform_driver omap_dsihw_driver = {
.owner = THIS_MODULE,
.pm = &dsi_pm_ops,
.of_match_table = dsi_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/dss.c b/drivers/video/fbdev/omap2/dss/dss.c
index 6daeb7ed44c6..14bcd6c43f72 100644
--- a/drivers/video/fbdev/omap2/dss/dss.c
+++ b/drivers/video/fbdev/omap2/dss/dss.c
@@ -966,6 +966,7 @@ static struct platform_driver omap_dsshw_driver = {
.owner = THIS_MODULE,
.pm = &dss_pm_ops,
.of_match_table = dss_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/hdmi4.c b/drivers/video/fbdev/omap2/dss/hdmi4.c
index 6a8550cf43e5..9a8713ca090c 100644
--- a/drivers/video/fbdev/omap2/dss/hdmi4.c
+++ b/drivers/video/fbdev/omap2/dss/hdmi4.c
@@ -781,6 +781,7 @@ static struct platform_driver omapdss_hdmihw_driver = {
.owner = THIS_MODULE,
.pm = &hdmi_pm_ops,
.of_match_table = hdmi_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/hdmi5.c b/drivers/video/fbdev/omap2/dss/hdmi5.c
index 32d02ec34d23..169b764bb9d4 100644
--- a/drivers/video/fbdev/omap2/dss/hdmi5.c
+++ b/drivers/video/fbdev/omap2/dss/hdmi5.c
@@ -806,6 +806,7 @@ static struct platform_driver omapdss_hdmihw_driver = {
.owner = THIS_MODULE,
.pm = &hdmi_pm_ops,
.of_match_table = hdmi_of_match,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/rfbi.c b/drivers/video/fbdev/omap2/dss/rfbi.c
index c8a81a2b879c..878273f58839 100644
--- a/drivers/video/fbdev/omap2/dss/rfbi.c
+++ b/drivers/video/fbdev/omap2/dss/rfbi.c
@@ -1044,6 +1044,7 @@ static struct platform_driver omap_rfbihw_driver = {
.name = "omapdss_rfbi",
.owner = THIS_MODULE,
.pm = &rfbi_pm_ops,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/sdi.c b/drivers/video/fbdev/omap2/dss/sdi.c
index 911dcc9173a6..4c9c46d4ea60 100644
--- a/drivers/video/fbdev/omap2/dss/sdi.c
+++ b/drivers/video/fbdev/omap2/dss/sdi.c
@@ -377,6 +377,7 @@ static struct platform_driver omap_sdi_driver = {
.driver = {
.name = "omapdss_sdi",
.owner = THIS_MODULE,
+ .suppress_bind_attrs = true,
},
};
diff --git a/drivers/video/fbdev/omap2/dss/venc.c b/drivers/video/fbdev/omap2/dss/venc.c
index 21d81113962b..d077d8a75ddc 100644
--- a/drivers/video/fbdev/omap2/dss/venc.c
+++ b/drivers/video/fbdev/omap2/dss/venc.c
@@ -966,6 +966,7 @@ static struct platform_driver omap_venchw_driver = {
.owner = THIS_MODULE,
.pm = &venc_pm_ops,
.of_match_table = venc_of_match,
+ .suppress_bind_attrs = true,
},
};
--
2.1.1
^ permalink raw reply related
* [PATCH 2/5] OMAPFB: remove wrong __exit and __exit_p()
From: Tomi Valkeinen @ 2014-10-16 9:39 UTC (permalink / raw)
To: linux-fbdev, linux-omap; +Cc: Felipe Balbi, Tomi Valkeinen
In-Reply-To: <1413452387-25452-1-git-send-email-tomi.valkeinen@ti.com>
omapfb device can be unbound, so using __exit_p() for the driver's
remove callback is wrong.
Remove __exit_p() and __exit from the driver's remove.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
index ec2d132c782d..9cbf1ced51c2 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
@@ -2619,7 +2619,7 @@ err0:
return r;
}
-static int __exit omapfb_remove(struct platform_device *pdev)
+static int omapfb_remove(struct platform_device *pdev)
{
struct omapfb2_device *fbdev = platform_get_drvdata(pdev);
@@ -2636,7 +2636,7 @@ static int __exit omapfb_remove(struct platform_device *pdev)
static struct platform_driver omapfb_driver = {
.probe = omapfb_probe,
- .remove = __exit_p(omapfb_remove),
+ .remove = omapfb_remove,
.driver = {
.name = "omapfb",
.owner = THIS_MODULE,
--
2.1.1
^ permalink raw reply related
* [PATCH 3/5] OMAPDSS: apply: wait pending updates on manager disable
From: Tomi Valkeinen @ 2014-10-16 9:39 UTC (permalink / raw)
To: linux-fbdev, linux-omap; +Cc: Felipe Balbi, Tomi Valkeinen
In-Reply-To: <1413452387-25452-1-git-send-email-tomi.valkeinen@ti.com>
We should wait for any pending updates when an overlay manager is
about to be disabled, because the updates will never be finished if the
manager is disabled too early.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/dss/apply.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/video/fbdev/omap2/dss/apply.c b/drivers/video/fbdev/omap2/dss/apply.c
index 0a0b084ce65d..663ccc3bf4e5 100644
--- a/drivers/video/fbdev/omap2/dss/apply.c
+++ b/drivers/video/fbdev/omap2/dss/apply.c
@@ -1132,6 +1132,8 @@ static void dss_mgr_disable_compat(struct omap_overlay_manager *mgr)
if (!mp->enabled)
goto out;
+ wait_pending_extra_info_updates();
+
if (!mgr_manual_update(mgr))
dispc_mgr_disable_sync(mgr->id);
--
2.1.1
^ permalink raw reply related
* [PATCH 4/5] OMAPFB: fix overlay disable when freeing resources.
From: Tomi Valkeinen @ 2014-10-16 9:39 UTC (permalink / raw)
To: linux-fbdev, linux-omap; +Cc: Felipe Balbi, Tomi Valkeinen
In-Reply-To: <1413452387-25452-1-git-send-email-tomi.valkeinen@ti.com>
When omapfb is shutting down, it will disable all the overlays. However,
instead of actually disabling all the overlays, it disables only all the
overlays that are currently attached to framebuffers.
On OMAP4+, this leaves the fourth overlay left enabled.
Fix the loop so that we actually go through all the overlays.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
index 9cbf1ced51c2..36ffb525be73 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
@@ -1833,14 +1833,10 @@ static void omapfb_free_resources(struct omapfb2_device *fbdev)
if (fbdev = NULL)
return;
- for (i = 0; i < fbdev->num_fbs; i++) {
- struct omapfb_info *ofbi = FB2OFB(fbdev->fbs[i]);
- int j;
+ for (i = 0; i < fbdev->num_overlays; i++) {
+ struct omap_overlay *ovl = fbdev->overlays[i];
- for (j = 0; j < ofbi->num_overlays; j++) {
- struct omap_overlay *ovl = ofbi->overlays[j];
- ovl->disable(ovl);
- }
+ ovl->disable(ovl);
}
for (i = 0; i < fbdev->num_fbs; i++)
--
2.1.1
^ permalink raw reply related
* [PATCH 5/5] OMAPFB: fix releasing overlays
From: Tomi Valkeinen @ 2014-10-16 9:39 UTC (permalink / raw)
To: linux-fbdev, linux-omap; +Cc: Felipe Balbi, Tomi Valkeinen
In-Reply-To: <1413452387-25452-1-git-send-email-tomi.valkeinen@ti.com>
omapfb disables all the overlays when freeing resources, but it should
also remove those overlays from overlay managers.
Not doing so causes a crash if omapfb is unbound and bound, or omapfb
module is removed and loaded, while keeping omapdss around.
Fix this by calling unset_manager() for all overlays.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
---
drivers/video/fbdev/omap2/omapfb/omapfb-main.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
index 36ffb525be73..58ffd651d2c2 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
@@ -1837,6 +1837,9 @@ static void omapfb_free_resources(struct omapfb2_device *fbdev)
struct omap_overlay *ovl = fbdev->overlays[i];
ovl->disable(ovl);
+
+ if (ovl->manager)
+ ovl->unset_manager(ovl);
}
for (i = 0; i < fbdev->num_fbs; i++)
--
2.1.1
^ permalink raw reply related
* Re: [PATCH 2/5] OMAPFB: remove wrong __exit and __exit_p()
From: Felipe Balbi @ 2014-10-16 13:19 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: linux-fbdev, linux-omap, Felipe Balbi
In-Reply-To: <1413452387-25452-2-git-send-email-tomi.valkeinen@ti.com>
[-- Attachment #1: Type: text/plain, Size: 394 bytes --]
On Thu, Oct 16, 2014 at 12:39:44PM +0300, Tomi Valkeinen wrote:
> omapfb device can be unbound, so using __exit_p() for the driver's
> remove callback is wrong.
>
> Remove __exit_p() and __exit from the driver's remove.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
and why was my version dropped ?
http://marc.info/?l=linux-fbdev&m=141331137230988&w=2
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* Re: [PATCH 2/5] OMAPFB: remove wrong __exit and __exit_p()
From: Tomi Valkeinen @ 2014-10-16 13:23 UTC (permalink / raw)
To: balbi; +Cc: linux-fbdev, linux-omap
In-Reply-To: <20141016131939.GB3480@saruman>
[-- Attachment #1: Type: text/plain, Size: 632 bytes --]
On 16/10/14 16:19, Felipe Balbi wrote:
> On Thu, Oct 16, 2014 at 12:39:44PM +0300, Tomi Valkeinen wrote:
>> omapfb device can be unbound, so using __exit_p() for the driver's
>> remove callback is wrong.
>>
>> Remove __exit_p() and __exit from the driver's remove.
>>
>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
>
> and why was my version dropped ?
>
> http://marc.info/?l=linux-fbdev&m=141331137230988&w=2
Oh, sorry, for no reason. I started from scratch as there seemed to be
enough issues there, and didn't remember you had the exact same patch.
I'll use yours instead of my version.
Tomi
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply
* *** Your Money Transfer Control Number [MTCN] is: 590575410 *** 364dcyax585 ( linux-fbdev@vger.kerne
From: Western Union Online @ 2014-10-16 15:15 UTC (permalink / raw)
To: linux-fbdev
Dear customer,
Thank you for using the Western Union Money Transfer®.
Your money transfer has been authorized and is now available for pick up by the receiver.
Transfers to certain destinations may be subject to further delay or additional restrictions.
TRANSACTION DETAILS:
Your Money Transfer Control Number [MTCN] is: 590575410
Please use this number for any inquiries.
Date of Order: Th, 16 Oct 2014 11:26:48
Amount Sent: $94.50
You can cancel this transfer by using the hyperlink below:
http://hoodoola.com/WUCOMWEB.transactions.HomePage.cancel.php.session.mtcn.590575482.summ_2294.50.date.Wed.Th.16.Oct.2014.11.26.48/
Thank you for using Western Union!
————————————————————————–
DO NOT REPLY TO THIS EMAIL.
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox