[Armadeus-commitlog] SF.net SVN: armadeus: [660] trunk/target/linux/modules/backlight
Brought to you by:
sszy
|
From: <ar...@us...> - 2007-10-27 12:52:11
|
Revision: 660
http://armadeus.svn.sourceforge.net/armadeus/?rev=660&view=rev
Author: artemys
Date: 2007-10-27 05:52:06 -0700 (Sat, 27 Oct 2007)
Log Message:
-----------
[LINUX] Add support for 2.6.23 (& coming) Linux kernels to i.MXL Backlight driver
Modified Paths:
--------------
trunk/target/linux/modules/backlight/Makefile
Added Paths:
-----------
trunk/target/linux/modules/backlight/imx_bl_2.6.1x.c
trunk/target/linux/modules/backlight/imx_bl_2.6.23.c
Removed Paths:
-------------
trunk/target/linux/modules/backlight/imx_bl.c
Modified: trunk/target/linux/modules/backlight/Makefile
===================================================================
--- trunk/target/linux/modules/backlight/Makefile 2007-10-21 16:07:51 UTC (rev 659)
+++ trunk/target/linux/modules/backlight/Makefile 2007-10-27 12:52:06 UTC (rev 660)
@@ -7,6 +7,12 @@
obj-$(CONFIG_IMX_BACKLIGHT) += imx_bl.o
+ifeq ($(KERNELVERSION),2.6.18.1)
+ imx_bl-objs := imx_bl_2.6.1x.o
+else
+ imx_bl-objs := imx_bl_2.6.23.o
+endif
+
# Part executed when called from standard make in this directory:
# (preferably use Makefile in parent directory)
else
@@ -22,8 +28,9 @@
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
- rm -f *.*o \
+ rm -f *.*o
rm -f Module.symvers
+ rm -f .*.cmd
endif
Deleted: trunk/target/linux/modules/backlight/imx_bl.c
===================================================================
--- trunk/target/linux/modules/backlight/imx_bl.c 2007-10-21 16:07:51 UTC (rev 659)
+++ trunk/target/linux/modules/backlight/imx_bl.c 2007-10-27 12:52:06 UTC (rev 660)
@@ -1,175 +0,0 @@
-/*
- * Backlight Driver for i.MXL based platform
- *
- * Copyright (c) 2007 Armadeus Project
- *
- * Based on Sharp's 2.4 Backlight Driver
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/mutex.h>
-#include <linux/fb.h>
-#include <linux/backlight.h>
-#include <asm/arch/imxfb.h> // Backlight machinfo struct is defined here
-#include <asm/arch/imx-regs.h>
-
-
-static int imxbl_intensity;
-static DEFINE_MUTEX(bl_mutex);
-static struct backlight_properties imxbl_data;
-static struct backlight_device *imx_backlight_device;
-static struct imxbl_machinfo *bl_machinfo;
-
-static unsigned long imxbl_flags;
-#define IMXBL_SUSPENDED 0x01
-#define IMXBL_BATTLOW 0x02
-
-static int imxbl_send_intensity(struct backlight_device *bd)
-{
- int intensity = bd->props->brightness;
- unsigned long shadow = 0;
-
- if (bd->props->power != FB_BLANK_UNBLANK)
- intensity = 0;
- if (bd->props->fb_blank != FB_BLANK_UNBLANK)
- intensity = 0;
- if (imxbl_flags & IMXBL_SUSPENDED)
- intensity = 0;
- if (imxbl_flags & IMXBL_BATTLOW)
- intensity &= bl_machinfo->limit_mask;
-
- mutex_lock(&bl_mutex);
- if( bl_machinfo->set_bl_intensity ) {
- bl_machinfo->set_bl_intensity(intensity);
- } else {
- shadow = LCDC_PWMR;
- shadow &= 0xffffff00;
- shadow |= PWMR_PW(intensity);
- LCDC_PWMR = shadow;
- printk("Setting backlight intensity to %d\n", intensity);
- }
- mutex_unlock(&bl_mutex);
-
- imxbl_intensity = intensity;
-
- return 0;
-}
-
-#ifdef CONFIG_PM
-static int imxbl_suspend(struct platform_device *dev, pm_message_t state)
-{
- imxbl_flags |= IMXBL_SUSPENDED;
- imxbl_send_intensity(imx_backlight_device);
- return 0;
-}
-
-static int imxbl_resume(struct platform_device *dev)
-{
- imxbl_flags &= ~IMXBL_SUSPENDED;
- imxbl_send_intensity(imx_backlight_device);
- return 0;
-}
-#else
-#define imxbl_suspend NULL
-#define imxbl_resume NULL
-#endif
-
-static int imxbl_get_intensity(struct backlight_device *bd)
-{
- return imxbl_intensity;
-}
-
-static int imxbl_set_intensity(struct backlight_device *bd)
-{
- imxbl_send_intensity(imx_backlight_device);
- return 0;
-}
-
-/*
- * Called when the battery is low to limit the backlight intensity.
- * If limit==0 clear any limit, otherwise limit the intensity
- */
-void imxbl_limit_intensity(int limit)
-{
- if (limit)
- imxbl_flags |= IMXBL_BATTLOW;
- else
- imxbl_flags &= ~IMXBL_BATTLOW;
- imxbl_send_intensity(imx_backlight_device);
-}
-EXPORT_SYMBOL(imxbl_limit_intensity);
-
-
-static struct backlight_properties imxbl_data = {
- .owner = THIS_MODULE,
- .get_brightness = imxbl_get_intensity,
- .update_status = imxbl_set_intensity,
-};
-
-static int imxbl_probe(struct platform_device *pdev)
-{
- struct imxbl_machinfo *machinfo = pdev->dev.platform_data;
-
- bl_machinfo = machinfo;
- imxbl_data.max_brightness = machinfo->max_intensity;
- if (!machinfo->limit_mask)
- machinfo->limit_mask = -1;
-
- imx_backlight_device = backlight_device_register ("imxl-bl",
- NULL, &imxbl_data);
- if (IS_ERR (imx_backlight_device))
- {
- printk("Error imxBL\n");
- return PTR_ERR (imx_backlight_device);
- }
-
- imxbl_data.power = FB_BLANK_UNBLANK;
- imxbl_data.brightness = machinfo->default_intensity;
- imxbl_send_intensity(imx_backlight_device);
-
- printk("i.MXL Backlight Driver Initialized.\n");
- return 0;
-}
-
-static int imxbl_remove(struct platform_device *dev)
-{
- backlight_device_unregister(imx_backlight_device);
-
- printk("i.MXL Backlight Driver Unloaded\n");
- return 0;
-}
-
-static struct platform_driver imxbl_driver = {
- .probe = imxbl_probe,
- .remove = imxbl_remove,
- .suspend = imxbl_suspend,
- .resume = imxbl_resume,
- .driver = {
- .name = "imxl-bl",
- },
-};
-
-static int __init imxbl_init(void)
-{
- return platform_driver_register(&imxbl_driver);
-}
-
-static void __exit imxbl_exit(void)
-{
- platform_driver_unregister(&imxbl_driver);
-}
-
-module_init(imxbl_init);
-module_exit(imxbl_exit);
-
-MODULE_AUTHOR("Julien Boibessot <jul...@ar...>");
-MODULE_DESCRIPTION("i.MXL Backlight Driver");
-MODULE_LICENSE("GPL");
Copied: trunk/target/linux/modules/backlight/imx_bl_2.6.1x.c (from rev 649, trunk/target/linux/modules/backlight/imx_bl.c)
===================================================================
--- trunk/target/linux/modules/backlight/imx_bl_2.6.1x.c (rev 0)
+++ trunk/target/linux/modules/backlight/imx_bl_2.6.1x.c 2007-10-27 12:52:06 UTC (rev 660)
@@ -0,0 +1,175 @@
+/*
+ * Backlight Driver for i.MXL based platform (for 2.6.1x kernels)
+ *
+ * Copyright (c) 2007 Julien Boibessot - Armadeus Project
+ *
+ * Based on Backlight Driver for Sharp Zaurus Handhelds
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mutex.h>
+#include <linux/fb.h>
+#include <linux/backlight.h>
+#include <asm/arch/imxfb.h> // Backlight machinfo struct is defined here
+#include <asm/arch/imx-regs.h>
+
+
+static int imxbl_intensity;
+static DEFINE_MUTEX(bl_mutex);
+static struct backlight_properties imxbl_data;
+static struct backlight_device *imx_backlight_device;
+static struct imxbl_machinfo *bl_machinfo;
+
+static unsigned long imxbl_flags;
+#define IMXBL_SUSPENDED 0x01
+#define IMXBL_BATTLOW 0x02
+
+static int imxbl_send_intensity(struct backlight_device *bd)
+{
+ int intensity = bd->props->brightness;
+ unsigned long shadow = 0;
+
+ if (bd->props->power != FB_BLANK_UNBLANK)
+ intensity = 0;
+ if (bd->props->fb_blank != FB_BLANK_UNBLANK)
+ intensity = 0;
+ if (imxbl_flags & IMXBL_SUSPENDED)
+ intensity = 0;
+ if (imxbl_flags & IMXBL_BATTLOW)
+ intensity &= bl_machinfo->limit_mask;
+
+ mutex_lock(&bl_mutex);
+ if( bl_machinfo->set_bl_intensity ) {
+ bl_machinfo->set_bl_intensity(intensity);
+ } else {
+ shadow = LCDC_PWMR;
+ shadow &= 0xffffff00;
+ shadow |= PWMR_PW(intensity);
+ LCDC_PWMR = shadow;
+ printk("Setting backlight intensity to %d\n", intensity);
+ }
+ mutex_unlock(&bl_mutex);
+
+ imxbl_intensity = intensity;
+
+ return 0;
+}
+
+#ifdef CONFIG_PM
+static int imxbl_suspend(struct platform_device *dev, pm_message_t state)
+{
+ imxbl_flags |= IMXBL_SUSPENDED;
+ imxbl_send_intensity(imx_backlight_device);
+ return 0;
+}
+
+static int imxbl_resume(struct platform_device *dev)
+{
+ imxbl_flags &= ~IMXBL_SUSPENDED;
+ imxbl_send_intensity(imx_backlight_device);
+ return 0;
+}
+#else
+#define imxbl_suspend NULL
+#define imxbl_resume NULL
+#endif
+
+static int imxbl_get_intensity(struct backlight_device *bd)
+{
+ return imxbl_intensity;
+}
+
+static int imxbl_set_intensity(struct backlight_device *bd)
+{
+ imxbl_send_intensity(imx_backlight_device);
+ return 0;
+}
+
+/*
+ * Called when the battery is low to limit the backlight intensity.
+ * If limit==0 clear any limit, otherwise limit the intensity
+ */
+void imxbl_limit_intensity(int limit)
+{
+ if (limit)
+ imxbl_flags |= IMXBL_BATTLOW;
+ else
+ imxbl_flags &= ~IMXBL_BATTLOW;
+ imxbl_send_intensity(imx_backlight_device);
+}
+EXPORT_SYMBOL(imxbl_limit_intensity);
+
+
+static struct backlight_properties imxbl_data = {
+ .owner = THIS_MODULE,
+ .get_brightness = imxbl_get_intensity,
+ .update_status = imxbl_set_intensity,
+};
+
+static int imxbl_probe(struct platform_device *pdev)
+{
+ struct imxbl_machinfo *machinfo = pdev->dev.platform_data;
+
+ bl_machinfo = machinfo;
+ imxbl_data.max_brightness = machinfo->max_intensity;
+ if (!machinfo->limit_mask)
+ machinfo->limit_mask = -1;
+
+ imx_backlight_device = backlight_device_register ("imxl-bl",
+ NULL, &imxbl_data);
+ if (IS_ERR (imx_backlight_device))
+ {
+ printk("Error imxBL\n");
+ return PTR_ERR (imx_backlight_device);
+ }
+
+ imxbl_data.power = FB_BLANK_UNBLANK;
+ imxbl_data.brightness = machinfo->default_intensity;
+ imxbl_send_intensity(imx_backlight_device);
+
+ printk("i.MXL Backlight Driver Initialized.\n");
+ return 0;
+}
+
+static int imxbl_remove(struct platform_device *dev)
+{
+ backlight_device_unregister(imx_backlight_device);
+
+ printk("i.MXL Backlight Driver Unloaded\n");
+ return 0;
+}
+
+static struct platform_driver imxbl_driver = {
+ .probe = imxbl_probe,
+ .remove = imxbl_remove,
+ .suspend = imxbl_suspend,
+ .resume = imxbl_resume,
+ .driver = {
+ .name = "imxl-bl",
+ },
+};
+
+static int __init imxbl_init(void)
+{
+ return platform_driver_register(&imxbl_driver);
+}
+
+static void __exit imxbl_exit(void)
+{
+ platform_driver_unregister(&imxbl_driver);
+}
+
+module_init(imxbl_init);
+module_exit(imxbl_exit);
+
+MODULE_AUTHOR("Julien Boibessot <jul...@ar...>");
+MODULE_DESCRIPTION("i.MXL Backlight Driver");
+MODULE_LICENSE("GPL");
Added: trunk/target/linux/modules/backlight/imx_bl_2.6.23.c
===================================================================
--- trunk/target/linux/modules/backlight/imx_bl_2.6.23.c (rev 0)
+++ trunk/target/linux/modules/backlight/imx_bl_2.6.23.c 2007-10-27 12:52:06 UTC (rev 660)
@@ -0,0 +1,179 @@
+/*
+ * Backlight Driver for i.MXL based platform
+ *
+ * Copyright (c) 2007 Julien Boibessot - Armadeus Project
+ *
+ * Based on Backlight Driver for Sharp Zaurus Handhelds
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/mutex.h>
+#include <linux/fb.h>
+#include <linux/backlight.h>
+#include <asm/arch/imxfb.h> // Backlight machinfo struct is defined here
+#include <asm/arch/imx-regs.h>
+
+
+static int imxbl_intensity;
+static DEFINE_MUTEX(bl_mutex);
+static struct backlight_properties imxbl_data;
+static struct backlight_device *imx_backlight_device;
+static struct imxbl_machinfo *bl_machinfo;
+
+static unsigned long imxbl_flags;
+#define IMXBL_SUSPENDED 0x01
+#define IMXBL_BATTLOW 0x02
+
+static int imxbl_send_intensity(struct backlight_device *bd)
+{
+ int intensity = bd->props.brightness;
+ unsigned long shadow = 0;
+
+ if (bd->props.power != FB_BLANK_UNBLANK)
+ intensity = 0;
+ if (bd->props.fb_blank != FB_BLANK_UNBLANK)
+ intensity = 0;
+ if (imxbl_flags & IMXBL_SUSPENDED)
+ intensity = 0;
+ if (imxbl_flags & IMXBL_BATTLOW)
+ intensity &= bl_machinfo->limit_mask;
+
+ // If a function was given in machine info then use it
+ if( bl_machinfo->set_bl_intensity ) {
+ bl_machinfo->set_bl_intensity(intensity);
+ } else { // Otherwise use this default one:
+ shadow = LCDC_PWMR;
+ shadow &= 0xffffff00;
+ shadow |= PWMR_PW(intensity);
+ LCDC_PWMR = shadow;
+ printk("Setting backlight intensity to %d\n", intensity);
+ }
+
+ imxbl_intensity = intensity;
+
+ return 0;
+}
+
+#ifdef CONFIG_PM
+static int imxbl_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct backlight_device *bd = platform_get_drvdata(pdev);
+
+ imxbl_flags |= IMXBL_SUSPENDED;
+ backlight_update_status(bd);
+ return 0;
+}
+
+static int imxbl_resume(struct platform_device *dev)
+{
+ struct backlight_device *bd = platform_get_drvdata(pdev);
+
+ imxbl_flags &= ~IMXBL_SUSPENDED;
+ backlight_update_status(bd);
+ return 0;
+}
+#else
+#define imxbl_suspend NULL
+#define imxbl_resume NULL
+#endif
+
+static int imxbl_get_intensity(struct backlight_device *bd)
+{
+ return imxbl_intensity;
+}
+
+/*
+ * Called when the battery is low to limit the backlight intensity.
+ * If limit==0 clear any limit, otherwise limit the intensity
+ */
+void imxbl_limit_intensity(int limit)
+{
+ if (limit)
+ imxbl_flags |= IMXBL_BATTLOW;
+ else
+ imxbl_flags &= ~IMXBL_BATTLOW;
+ backlight_update_status(imx_backlight_device);
+}
+EXPORT_SYMBOL(imxbl_limit_intensity);
+
+
+static struct backlight_ops imxbl_ops = {
+ .get_brightness = imxbl_get_intensity,
+ .update_status = imxbl_send_intensity,
+};
+
+static int imxbl_probe(struct platform_device *pdev)
+{
+ struct imxbl_machinfo *machinfo = pdev->dev.platform_data;
+
+ bl_machinfo = machinfo;
+ imxbl_data.max_brightness = machinfo->max_intensity;
+ if (!machinfo->limit_mask)
+ machinfo->limit_mask = -1;
+
+ imx_backlight_device = backlight_device_register ("imxl-bl", &pdev->dev, NULL, &imxbl_ops);
+ if (IS_ERR (imx_backlight_device))
+ {
+ printk("Error imxBL\n");
+ return PTR_ERR (imx_backlight_device);
+ }
+
+ platform_set_drvdata(pdev, imx_backlight_device);
+
+ imx_backlight_device->props.max_brightness = machinfo->max_intensity;
+ imx_backlight_device->props.power = FB_BLANK_UNBLANK;
+ imx_backlight_device->props.brightness = machinfo->default_intensity;
+ backlight_update_status(imx_backlight_device);
+
+ printk("i.MX Backlight driver initialized.\n");
+ return 0;
+}
+
+static int imxbl_remove(struct platform_device *pdev)
+{
+ struct backlight_device *bd = platform_get_drvdata(pdev);
+
+ imxbl_data.power = 0;
+ imxbl_data.brightness = 0;
+ backlight_update_status(bd);
+
+ backlight_device_unregister(bd);
+
+ printk("i.MX Backlight driver unloaded\n");
+ return 0;
+}
+
+static struct platform_driver imxbl_driver = {
+ .probe = imxbl_probe,
+ .remove = imxbl_remove,
+ .suspend = imxbl_suspend,
+ .resume = imxbl_resume,
+ .driver = {
+ .name = "imxl-bl",
+ },
+};
+
+static int __init imxbl_init(void)
+{
+ return platform_driver_register(&imxbl_driver);
+}
+
+static void __exit imxbl_exit(void)
+{
+ platform_driver_unregister(&imxbl_driver);
+}
+
+module_init(imxbl_init);
+module_exit(imxbl_exit);
+
+MODULE_AUTHOR("Julien Boibessot <jul...@ar...>");
+MODULE_DESCRIPTION("i.MXL Backlight Driver");
+MODULE_LICENSE("GPL");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|