#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/backlight.h>
#define KB3886_PARENT 0x64
#define KB3886_ADC_DAC_PWM 0xC4
#define KB3886_PWM0_WRITE 0x81
#define KB3886_PWM0_READ 0x41
static DEFINE_MUTEX(bl_mutex);
static void kb3886_bl_set_intensity(int intensity)
intensity = intensity&0xff;
outb(KB3886_ADC_DAC_PWM, KB3886_PARENT);
usleep_range(10000, 11000);
outb(KB3886_PWM0_WRITE, KB3886_IO);
usleep_range(10000, 11000);
outb(intensity, KB3886_IO);
struct kb3886bl_machinfo {
void (*set_bl_intensity)(int intensity);
static struct kb3886bl_machinfo kb3886_bl_machinfo = {
.default_intensity = 0xa0,
.set_bl_intensity = kb3886_bl_set_intensity,
static struct platform_device kb3886bl_device = {
.platform_data = &kb3886_bl_machinfo,