Subject: [PATCH] [acpi video] Add skeleton new-school video driver - Create drivers/acpi/drivers/video/ - Populate with basic registration and empty interfaces for proc, sysfs, events Signed-off-by: Patrick Mochel --- drivers/acpi/drivers/video/Kconfig | 15 ++++++++++ drivers/acpi/drivers/video/Makefile | 7 +++++ drivers/acpi/drivers/video/device.c | 13 +++++++++ drivers/acpi/drivers/video/driver.c | 51 +++++++++++++++++++++++++++++++++++ drivers/acpi/drivers/video/event.c | 15 ++++++++++ drivers/acpi/drivers/video/proc.c | 15 ++++++++++ drivers/acpi/drivers/video/sysfs.c | 11 ++++++++ drivers/acpi/drivers/video/video.h | 20 ++++++++++++++ 8 files changed, 147 insertions(+), 0 deletions(-) create mode 100644 drivers/acpi/drivers/video/Kconfig create mode 100644 drivers/acpi/drivers/video/Makefile create mode 100644 drivers/acpi/drivers/video/device.c create mode 100644 drivers/acpi/drivers/video/driver.c create mode 100644 drivers/acpi/drivers/video/event.c create mode 100644 drivers/acpi/drivers/video/proc.c create mode 100644 drivers/acpi/drivers/video/sysfs.c create mode 100644 drivers/acpi/drivers/video/video.h applies-to: f139ab27a5f8d47ea7dcb7048f018b280116377b d7c15b2a2a408c19a4b8220cd6246af6a96aa47f diff --git a/drivers/acpi/drivers/video/Kconfig b/drivers/acpi/drivers/video/Kconfig new file mode 100644 index 0000000..d3269e3 --- /dev/null +++ b/drivers/acpi/drivers/video/Kconfig @@ -0,0 +1,15 @@ + +config ACPI_VIDEO + tristate "Video" + depends on EXPERIMENTAL && ACPI_DM && X86 + default y + help + This driver implement the ACPI Extensions For Display Adapters + for integrated graphics devices on motherboard, as specified in + ACPI 2.0 Specification, Appendix B, allowing to perform some basic + control like defining the video POST device, retrieving EDID + information or to setup a video output, etc. + + Note that this is an reference implementation only. It may or may + not work for your integrated video device. + diff --git a/drivers/acpi/drivers/video/Makefile b/drivers/acpi/drivers/video/Makefile new file mode 100644 index 0000000..890475f --- /dev/null +++ b/drivers/acpi/drivers/video/Makefile @@ -0,0 +1,7 @@ +obj-$(CONFIG_ACPI_VIDEO) += video.o + +video-y := driver.o device.o event.o + +video-$(CONFIG_ACPI_DM_PROC) += proc.o +video-$(CONFIG_ACPI_DM_SYSFS) += sysfs.o + diff --git a/drivers/acpi/drivers/video/device.c b/drivers/acpi/drivers/video/device.c new file mode 100644 index 0000000..79f8a67 --- /dev/null +++ b/drivers/acpi/drivers/video/device.c @@ -0,0 +1,13 @@ +/** + * drivers/acpi/drivers/video/device.c - Low-level video access + * + * Copyright (C) 2006 Patrick Mochel + * + * Based on drivers/acpi/video.c, which was: + * Copyright (C) 2004 Luming Yu + * Copyright (C) 2004 Bruno Ducrot + * + * This file is released under the GPLv2. + */ + +#include "video.h" diff --git a/drivers/acpi/drivers/video/driver.c b/drivers/acpi/drivers/video/driver.c new file mode 100644 index 0000000..0311ca9 --- /dev/null +++ b/drivers/acpi/drivers/video/driver.c @@ -0,0 +1,51 @@ +/*** + * drivers/acpi/drivers/video/driver.c - New school ACPI video driver + * + * Copyright (C) 2006 Patrick Mochel + * + * Based on drivers/acpi/video.c, which was + * Copyright (C) 2004 Luming Yu + * Copyright (C) 2004 Bruno Ducrot + * + * This file is released under the GPLv2. + */ + +#include "video.h" + +static int video_add(struct acpi_dev * ad) +{ + struct acpi_video * av; + + av = kzalloc(sizeof(struct acpi_video), GFP_KERNEL); + if (!av) + return -ENOMEM; + + av->v_ad = ad; + + dev_set_drvdata(&ad->dev, av); + + printk(KERN_INFO PREFIX "video [%s]\n", + acpi_dev_bid(ad)); + return 0; +} + +static int video_remove(struct acpi_dev * ad) +{ + struct acpi_video * av = dev_get_drvdata(&ad->dev); + + dev_set_drvdata(&ad->dev, NULL); + kfree(av); + return 0; +} + +acpi_no_start(video); +acpi_no_stop(video); +acpi_no_shutdown(video); +acpi_no_suspend(video); +acpi_no_resume(video); + +declare_acpi_driver(video); + +MODULE_AUTHOR("Patrick Mochel"); +MODULE_DESCRIPTION("ACPI Video Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/acpi/drivers/video/event.c b/drivers/acpi/drivers/video/event.c new file mode 100644 index 0000000..f79efc3 --- /dev/null +++ b/drivers/acpi/drivers/video/event.c @@ -0,0 +1,15 @@ +/** + * drivers/acpi/drivers/video/event.c - ACPI Event notification for video + * + * Copyright (C) 2006 Patrick Mochel + * + * Based on drivers/acpi/video.c, which was + * Copyright (C) 2004 Luming Yu + * Copyright (C) 2004 Bruno Ducrot + * + * This file is released under the GPLv2. + */ + +#include "video.h" + +acpi_device_event_none(video); diff --git a/drivers/acpi/drivers/video/proc.c b/drivers/acpi/drivers/video/proc.c new file mode 100644 index 0000000..c3043d6 --- /dev/null +++ b/drivers/acpi/drivers/video/proc.c @@ -0,0 +1,15 @@ +/** + * drivers/acpi/drivers/video/proc.c - procfs interface for video driver + * + * Copyright (C) 2006 Patrick Mochel + * + * Based on drivers/acpi/video.c, which was: + * Copyright (C) 2004 Luming Yu + * Copyright (C) 2004 Bruno Ducrot + * + * This file is released under the GPLv2. + */ + +#include "video.h" + +acpi_driver_proc_none(video); diff --git a/drivers/acpi/drivers/video/sysfs.c b/drivers/acpi/drivers/video/sysfs.c new file mode 100644 index 0000000..8aae719 --- /dev/null +++ b/drivers/acpi/drivers/video/sysfs.c @@ -0,0 +1,11 @@ +/** + * drivers/acpi/drivers/video/sysfs.c - sysfs interface for video driver. + * + * Copyright (C) 2006 Patrick Mochel + * + * This file is released under the GPLv2. + */ + +#include "video.h" + +acpi_driver_sysfs_none(video); diff --git a/drivers/acpi/drivers/video/video.h b/drivers/acpi/drivers/video/video.h new file mode 100644 index 0000000..57dea68 --- /dev/null +++ b/drivers/acpi/drivers/video/video.h @@ -0,0 +1,20 @@ +#include + +#ifdef DEBUG +#define dbg(fmt, ...) printk(PREFIX "video: " fmt "\n", ## __VA_ARGS__) +#else +#define dbg(fmt, ...) +#endif + +#define err(fmt, ...) printk(KERN_ERR PREFIX "video: " fmt "\n", ## __VA_ARGS__) + +#define _COMPONENT ACPI_VIDEO_COMPONENT +ACPI_MODULE_NAME("acpi_video"); + + +struct acpi_video { + struct acpi_dev * v_ad; +}; + +extern int video_get_state(struct acpi_video * av); +extern int video_set_state(struct acpi_video * av, unsigned int state); --- 0.99.9.GIT