blob: 67502e89f635bb5aafde07587ea16d0af0fcb876 [file] [log] [blame]
/* Quanta I2C Backlight Driver
*
* Copyright (C) 2009 Quanta Computer Inc.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
/*
*
* The Driver with I/O communications via the I2C Interface for ST15 platform.
* And it is only working on the nuvoTon WPCE775x Embedded Controller.
*
*/
#include <linux/module.h>
#include <linux/leds.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
#include <linux/wpce775x.h>
#define EC_CMD_SET_BACKLIGHT 0xB1
static void qci_backlight_store(struct led_classdev *led_cdev,
enum led_brightness val);
static struct platform_device *bl_pdev;
static struct led_classdev lcd_backlight = {
.name = "lcd-backlight",
.brightness = 147,
.brightness_set = qci_backlight_store,
};
static void qci_backlight_store(struct led_classdev *led_cdev,
enum led_brightness val)
{
u16 value = val;
wpce_smbus_write_word_data(EC_CMD_SET_BACKLIGHT, value);
msleep(10);
dev_dbg(&bl_pdev->dev, "[backlight_store] : value = %d\n", value);
}
static int __init qci_backlight_init(void)
{
int err = 0;
bl_pdev = platform_device_register_simple("backlight", 0, NULL, 0);
err = led_classdev_register(&bl_pdev->dev, &lcd_backlight);
return err;
}
static void __exit qci_backlight_exit(void)
{
led_classdev_unregister(&lcd_backlight);
platform_device_unregister(bl_pdev);
}
module_init(qci_backlight_init);
module_exit(qci_backlight_exit);
MODULE_AUTHOR("Quanta Computer Inc.");
MODULE_DESCRIPTION("Quanta Embedded Controller I2C Backlight Driver");
MODULE_LICENSE("GPL v2");