On Wed, Nov 18, 2009 at 09:07:22AM +0000, Alan Jenkins wrote: > On 11/17/09, akpm@xxxxxxxxxxxxxxxxxxxx <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > From: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxxx> > > > > This add supports for devices like keyboard, backlight, tablet and > > accelerometer. > > > > This work is supported by International Syst S/A. > > > > [randy.dunlap@xxxxxxxxxx: cmpc_acpi: depends on ACPI] > > [akpm@xxxxxxxxxxxxxxxxxxxx: readability tweaks] > > Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxxx> > > Cc: Len Brown <lenb@xxxxxxxxxx> > > Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > > --- > > > > MAINTAINERS | 6 > > drivers/platform/x86/Kconfig | 12 > > drivers/platform/x86/Makefile | 1 > > drivers/platform/x86/cmpc_acpi.c | 543 +++++++++++++++++++++++++++++ > > 4 files changed, 562 insertions(+) > > > > diff -puN MAINTAINERS~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > MAINTAINERS > > --- a/MAINTAINERS~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > +++ a/MAINTAINERS > > @@ -1427,6 +1427,12 @@ L: linux-scsi@xxxxxxxxxxxxxxx > > S: Supported > > F: drivers/scsi/fnic/ > > > > +CMPC ACPI DRIVER > > +M: Thadeu Lima de Souza Cascardo <cascardo@xxxxxxxxxxxxxx> > > +M: Daniel Oliveira Nascimento <don@xxxxxxxxxxx> > > +S: Supported > > +F: drivers/platform/x86/cmpc_acpi.c > > + > > CODA FILE SYSTEM > > M: Jan Harkes <jaharkes@xxxxxxxxxx> > > M: coda@xxxxxxxxxx > > diff -puN > > drivers/platform/x86/Kconfig~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > drivers/platform/x86/Kconfig > > --- > > a/drivers/platform/x86/Kconfig~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > +++ a/drivers/platform/x86/Kconfig > > @@ -435,4 +435,16 @@ config ACPI_TOSHIBA > > > > If you have a legacy free Toshiba laptop (such as the Libretto L1 > > series), say Y. > > + > > +config ACPI_CMPC > > + tristate "CMPC Laptop Extras" > > + depends on X86 && ACPI > > + select INPUT > > + select BACKLIGHT_CLASS_DEVICE > > + default n > > + help > > + Support for Intel Classmate PC ACPI devices, including some > > + keys as input device, backlight device, tablet and accelerometer > > + devices. > > + > > endif # X86_PLATFORM_DEVICES > > diff -puN > > drivers/platform/x86/Makefile~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > drivers/platform/x86/Makefile > > --- > > a/drivers/platform/x86/Makefile~cmpc_acpi-add-support-for-classmate-pc-acpi-devices > > +++ a/drivers/platform/x86/Makefile > > @@ -21,3 +21,4 @@ obj-$(CONFIG_ACPI_WMI) += wmi.o > > obj-$(CONFIG_ACPI_ASUS) += asus_acpi.o > > obj-$(CONFIG_TOPSTAR_LAPTOP) += topstar-laptop.o > > obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o > > +obj-$(CONFIG_ACPI_CMPC) += cmpc_acpi.o > > diff -puN /dev/null drivers/platform/x86/cmpc_acpi.c > > --- /dev/null > > +++ a/drivers/platform/x86/cmpc_acpi.c > > @@ -0,0 +1,543 @@ > > +/* > > + * Copyright (C) 2009 Thadeu Lima de Souza Cascardo > > <cascardo@xxxxxxxxxxxxxx> > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License as published by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + * > > + * 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. > > + * > > + * You should have received a copy of the GNU General Public License along > > + * with this program; if not, write to the Free Software Foundation, Inc., > > + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. > > + */ > > + > > + > > +#include <linux/init.h> > > +#include <linux/module.h> > > +#include <linux/workqueue.h> > > +#include <acpi/acpi_drivers.h> > > +#include <linux/backlight.h> > > +#include <linux/input.h> > > + > > +MODULE_LICENSE("GPL"); > > + > > + > > +/* > > + * Generic input device code. > > + */ > > + > > +typedef void (*input_device_init)(struct input_dev *dev); > > + > > +static int cmpc_add_acpi_notify_device(struct acpi_device *acpi, char > > *name, > > + acpi_notify_handler handler, > > + input_device_init idev_init) > > +{ > > + struct input_dev *inputdev; > > + acpi_status status; > > + int error; > > + > > + inputdev = input_allocate_device(); > > + if (!inputdev) { > > + error = -ENOMEM; > > + goto out; > > + } > > + inputdev->name = name; > > + inputdev->dev.parent = &acpi->dev; > > + idev_init(inputdev); > > + error = input_register_device(inputdev); > > + if (error) > > + goto err_reg; > > + dev_set_drvdata(&acpi->dev, inputdev); > > + status = acpi_install_notify_handler(acpi->handle, ACPI_DEVICE_NOTIFY, > > + handler, inputdev); > > + if (ACPI_FAILURE(status)) { > > + error = -ENODEV; > > + goto err_acpi; > > + } > > + return 0; > > +err_acpi: > > + input_unregister_device(inputdev); > > +err_reg: > > + input_free_device(inputdev); > > +out: > > + return error; > > +} > > + > > +static int cmpc_remove_acpi_notify_device(struct acpi_device *acpi, > > + acpi_notify_handler handler) > > +{ > > + struct input_dev *inputdev; > > + acpi_status status; > > + > > + status = acpi_remove_notify_handler(acpi->handle, ACPI_DEVICE_NOTIFY, > > + handler); > > + inputdev = dev_get_drvdata(&acpi->dev); > > + input_unregister_device(inputdev); > > + input_free_device(inputdev); > > + return 0; > > +} > > This version still needs some fixes. For example, input_free_device() > should not be called after input_unregister_device(). > > The other main problem was that the state of the "tablet mode" switch > is not set on initialisation (and the same for resume from suspend). > > At the very least, I don't think this version should be merged without > putting it under CONFIG_EXPERIMENTAL. For more details and less > serious nits see > <http://thread.gmane.org/gmane.linux.acpi.devel/42017/focus=42025>. > > Thanks > Alan Since Andrew has put some patches over the first version, I had some doubts on how to handle the fixes. Should I import those patches as git patches and submit them together with many other patches fixing every issue in its own commit? Or should I write another version and write a log in the commit message? UPDATE: I've just fixed every issue reported. How should I send it? Regards, Cascardo.
Attachment:
signature.asc
Description: Digital signature