diff options
author | codeworkx <codeworkx@cyanogenmod.org> | 2012-12-01 13:01:44 +0100 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.org> | 2012-12-09 18:01:47 +0100 |
commit | c4efacda550bb44fcbb99ef6c8e89ca95f08fcf4 (patch) | |
tree | 320f5c8e74a6505c68626a36606dde50bdc1e9d2 | |
parent | 6c611f280204d02454594ab8ba5a82b9c75909c9 (diff) | |
download | kernel_samsung_espresso10-c4efacda550bb44fcbb99ef6c8e89ca95f08fcf4.tar.gz kernel_samsung_espresso10-c4efacda550bb44fcbb99ef6c8e89ca95f08fcf4.tar.bz2 kernel_samsung_espresso10-c4efacda550bb44fcbb99ef6c8e89ca95f08fcf4.zip |
omapfb: implement vsync sysfs, make uevents optional
Change-Id: I0e5ee71131dde198b5995f12e9f6a38205744237
-rw-r--r-- | arch/arm/configs/cyanogenmod_p3100_defconfig | 2 | ||||
-rw-r--r-- | arch/arm/configs/cyanogenmod_p3110_defconfig | 2 | ||||
-rw-r--r-- | arch/arm/configs/cyanogenmod_p3113_defconfig | 2 | ||||
-rw-r--r-- | arch/arm/configs/cyanogenmod_p5100_defconfig | 2 | ||||
-rw-r--r-- | arch/arm/configs/cyanogenmod_p5110_defconfig | 2 | ||||
-rw-r--r-- | arch/arm/configs/cyanogenmod_p5113_defconfig | 2 | ||||
-rw-r--r-- | drivers/video/omap2/omapfb/Kconfig | 14 | ||||
-rw-r--r-- | drivers/video/omap2/omapfb/omapfb-main.c | 26 |
8 files changed, 52 insertions, 0 deletions
diff --git a/arch/arm/configs/cyanogenmod_p3100_defconfig b/arch/arm/configs/cyanogenmod_p3100_defconfig index 91c90c89c95..2ce7db87639 100644 --- a/arch/arm/configs/cyanogenmod_p3100_defconfig +++ b/arch/arm/configs/cyanogenmod_p3100_defconfig @@ -1707,6 +1707,8 @@ CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/arch/arm/configs/cyanogenmod_p3110_defconfig b/arch/arm/configs/cyanogenmod_p3110_defconfig index 91c90c89c95..2ce7db87639 100644 --- a/arch/arm/configs/cyanogenmod_p3110_defconfig +++ b/arch/arm/configs/cyanogenmod_p3110_defconfig @@ -1707,6 +1707,8 @@ CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/arch/arm/configs/cyanogenmod_p3113_defconfig b/arch/arm/configs/cyanogenmod_p3113_defconfig index 91c90c89c95..2ce7db87639 100644 --- a/arch/arm/configs/cyanogenmod_p3113_defconfig +++ b/arch/arm/configs/cyanogenmod_p3113_defconfig @@ -1707,6 +1707,8 @@ CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/arch/arm/configs/cyanogenmod_p5100_defconfig b/arch/arm/configs/cyanogenmod_p5100_defconfig index dfb62c0f7c1..5feb2217d6d 100644 --- a/arch/arm/configs/cyanogenmod_p5100_defconfig +++ b/arch/arm/configs/cyanogenmod_p5100_defconfig @@ -1710,6 +1710,8 @@ CONFIG_OMAP_HDMI_AUDIO_CH_EVENT=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/arch/arm/configs/cyanogenmod_p5110_defconfig b/arch/arm/configs/cyanogenmod_p5110_defconfig index dfb62c0f7c1..5feb2217d6d 100644 --- a/arch/arm/configs/cyanogenmod_p5110_defconfig +++ b/arch/arm/configs/cyanogenmod_p5110_defconfig @@ -1710,6 +1710,8 @@ CONFIG_OMAP_HDMI_AUDIO_CH_EVENT=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/arch/arm/configs/cyanogenmod_p5113_defconfig b/arch/arm/configs/cyanogenmod_p5113_defconfig index dfb62c0f7c1..5feb2217d6d 100644 --- a/arch/arm/configs/cyanogenmod_p5113_defconfig +++ b/arch/arm/configs/cyanogenmod_p5113_defconfig @@ -1710,6 +1710,8 @@ CONFIG_OMAP_HDMI_AUDIO_CH_EVENT=y CONFIG_FB_OMAP2=y CONFIG_FB_OMAP2_DEBUG_SUPPORT=y CONFIG_FB_OMAP2_NUM_FBS=2 +# CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS is not set +CONFIG_FB_OMAP2_VSYNC_SYSFS=y # # OMAP2/3 Display Device Drivers diff --git a/drivers/video/omap2/omapfb/Kconfig b/drivers/video/omap2/omapfb/Kconfig index d15486e1cba..369e85fd046 100644 --- a/drivers/video/omap2/omapfb/Kconfig +++ b/drivers/video/omap2/omapfb/Kconfig @@ -27,3 +27,17 @@ config FB_OMAP2_NUM_FBS help Select the number of framebuffers created. OMAP2/3 has 3 overlays so normally this would be 3. + +config FB_OMAP2_VSYNC_SEND_UEVENTS + bool "OMAPFB vsync uevents" + default y + depends on FB_OMAP2 + help + Pass vsync via uevent to userspace. + +config FB_OMAP2_VSYNC_SYSFS + bool "OMAPFB vsync sysfs" + default n + depends on FB_OMAP2 + help + Pass vsync via sysfs to userspace. diff --git a/drivers/video/omap2/omapfb/omapfb-main.c b/drivers/video/omap2/omapfb/omapfb-main.c index 3562773b3a0..befd6c2a375 100644 --- a/drivers/video/omap2/omapfb/omapfb-main.c +++ b/drivers/video/omap2/omapfb/omapfb-main.c @@ -2291,10 +2291,23 @@ static int omapfb_init_display(struct omapfb2_device *fbdev, return 0; } +#ifdef CONFIG_FB_OMAP2_VSYNC_SYSFS +static ssize_t omapfb_vsync_time(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct omapfb2_device *fbdev = dev_get_drvdata(dev); + + return snprintf(buf, PAGE_SIZE, "%llu", ktime_to_ns(fbdev->vsync_timestamp)); +} +static DEVICE_ATTR(vsync_time, S_IRUGO, omapfb_vsync_time, NULL); +#endif + static void omapfb_send_vsync_work(struct work_struct *work) { struct omapfb2_device *fbdev = container_of(work, typeof(*fbdev), vsync_work); + +#ifdef CONFIG_FB_OMAP2_VSYNC_SEND_UEVENTS char buf[64]; char *envp[2]; @@ -2303,6 +2316,11 @@ static void omapfb_send_vsync_work(struct work_struct *work) envp[0] = buf; envp[1] = NULL; kobject_uevent_env(&fbdev->dev->kobj, KOBJ_CHANGE, envp); +#endif + +#ifdef CONFIG_FB_OMAP2_VSYNC_SYSFS + sysfs_notify(&fbdev->dev->kobj, NULL, "vsync_time"); +#endif } static void omapfb_vsync_isr(void *data, u32 mask) { @@ -2442,6 +2460,14 @@ static int omapfb_probe(struct platform_device *pdev) goto cleanup; } +#ifdef CONFIG_FB_OMAP2_VSYNC_SYSFS + r = device_create_file(fbdev->dev, &dev_attr_vsync_time); + if (r) { + dev_err(fbdev->dev, "failed to add sysfs entries\n"); + goto cleanup; + } +#endif + INIT_WORK(&fbdev->vsync_work, omapfb_send_vsync_work); return 0; |