From e556b8131a787dd44aa614100fd8cc81794efe45 Mon Sep 17 00:00:00 2001 From: J Freyensee Date: Wed, 25 May 2011 14:50:26 -0700 Subject: pti: pti_tty_install documentation mispelling. This patch tidies up the documentation for pti_tty_install() function. Signed-off-by: J Freyensee Signed-off-by: Greg Kroah-Hartman --- drivers/misc/pti.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'drivers') diff --git a/drivers/misc/pti.c b/drivers/misc/pti.c index bb6f9255c17..7281438224d 100644 --- a/drivers/misc/pti.c +++ b/drivers/misc/pti.c @@ -444,9 +444,9 @@ static void pti_tty_driver_close(struct tty_struct *tty, struct file *filp) } /** - * pti_tty_intstall()- Used to set up specific master-channels - * to tty ports for organizational purposes when - * tracing viewed from debuging tools. + * pti_tty_install()- Used to set up specific master-channels + * to tty ports for organizational purposes when + * tracing viewed from debuging tools. * * @driver: tty driver information. * @tty: tty struct containing pti information. -- cgit v1.2.3-70-g09d2 From 113647a281037d8b6f32e07f42a1328c7cd3da3b Mon Sep 17 00:00:00 2001 From: matt mooney Date: Sun, 12 Jun 2011 11:17:30 -0700 Subject: driver-core: Kconfig grammar corrections in firmware configuration Fix some grammatical errors and reword a few sentences. Signed-off-by: matt mooney Signed-off-by: Greg Kroah-Hartman --- drivers/base/Kconfig | 59 ++++++++++++++++++++++++++-------------------------- 1 file changed, 29 insertions(+), 30 deletions(-) (limited to 'drivers') diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index d57e8d0fb82..5fe7fd23ed6 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -65,17 +65,17 @@ config PREVENT_FIRMWARE_BUILD default y help Say yes to avoid building firmware. Firmware is usually shipped - with the driver, and only when updating the firmware a rebuild - should be made. - If unsure say Y here. + with the driver and only when updating the firmware should a + rebuild be made. + If unsure, say Y here. config FW_LOADER tristate "Userspace firmware loading support" if EXPERT default y ---help--- - This option is provided for the case where no in-kernel-tree modules - require userspace firmware loading support, but a module built outside - the kernel tree does. + This option is provided for the case where none of the in-tree modules + require userspace firmware loading support, but a module built + out-of-tree does. config FIRMWARE_IN_KERNEL bool "Include in-kernel firmware blobs in kernel binary" @@ -83,22 +83,22 @@ config FIRMWARE_IN_KERNEL default y help The kernel source tree includes a number of firmware 'blobs' - which are used by various drivers. The recommended way to + that are used by various drivers. The recommended way to use these is to run "make firmware_install" and to copy the - resulting binary files created in usr/lib/firmware directory - of the kernel tree to the /lib/firmware on your system so - that they can be loaded by userspace helpers on request. + resulting binary files created in usr/lib/firmware/ of the + kernel tree to /lib/firmware/ on your system so that they can + be loaded by userspace helpers on request. Enabling this option will build each required firmware blob into the kernel directly, where request_firmware() will find them without having to call out to userspace. This may be - useful if your root file system requires a device which uses - such firmware, and do not wish to use an initrd. + useful if your root file system requires a device that uses + such firmware and do not wish to use an initrd. This single option controls the inclusion of firmware for - every driver which uses request_firmware() and ships its - firmware in the kernel source tree, to avoid a proliferation - of 'Include firmware for xxx device' options. + every driver that uses request_firmware() and ships its + firmware in the kernel source tree, which avoids a + proliferation of 'Include firmware for xxx device' options. Say 'N' and let firmware be loaded from userspace. @@ -106,27 +106,27 @@ config EXTRA_FIRMWARE string "External firmware blobs to build into the kernel binary" depends on FW_LOADER help - This option allows firmware to be built into the kernel, for the - cases where the user either cannot or doesn't want to provide it from + This option allows firmware to be built into the kernel for the case + where the user either cannot or doesn't want to provide it from userspace at runtime (for example, when the firmware in question is required for accessing the boot device, and the user doesn't want to use an initrd). - This option is a string, and takes the (space-separated) names of the - firmware files -- the same names which appear in MODULE_FIRMWARE() + This option is a string and takes the (space-separated) names of the + firmware files -- the same names that appear in MODULE_FIRMWARE() and request_firmware() in the source. These files should exist under the directory specified by the EXTRA_FIRMWARE_DIR option, which is - by default the firmware/ subdirectory of the kernel source tree. + by default the firmware subdirectory of the kernel source tree. - So, for example, you might set CONFIG_EXTRA_FIRMWARE="usb8388.bin", - copy the usb8388.bin file into the firmware/ directory, and build the - kernel. Then any request_firmware("usb8388.bin") will be - satisfied internally without needing to call out to userspace. + For example, you might set CONFIG_EXTRA_FIRMWARE="usb8388.bin", copy + the usb8388.bin file into the firmware directory, and build the kernel. + Then any request_firmware("usb8388.bin") will be satisfied internally + without needing to call out to userspace. WARNING: If you include additional firmware files into your binary - kernel image which are not available under the terms of the GPL, + kernel image that are not available under the terms of the GPL, then it may be a violation of the GPL to distribute the resulting - image -- since it combines both GPL and non-GPL work. You should + image since it combines both GPL and non-GPL work. You should consult a lawyer of your own before distributing such an image. config EXTRA_FIRMWARE_DIR @@ -136,10 +136,9 @@ config EXTRA_FIRMWARE_DIR help This option controls the directory in which the kernel build system looks for the firmware files listed in the EXTRA_FIRMWARE option. - The default is the firmware/ directory in the kernel source tree, - but by changing this option you can point it elsewhere, such as - the /lib/firmware/ directory or another separate directory - containing firmware files. + The default is firmware/ in the kernel source tree, but by changing + this option you can point it elsewhere, such as /lib/firmware/ or + some other directory containing the firmware files. config DEBUG_DRIVER bool "Driver Core verbose debug messages" -- cgit v1.2.3-70-g09d2 From 156faf9080e0acf2b301c982e7a77cd6fbb2d0ad Mon Sep 17 00:00:00 2001 From: matt mooney Date: Sun, 12 Jun 2011 11:17:31 -0700 Subject: driver-core: modify FIRMWARE_IN_KERNEL help message The help message for the configuration variable was inconsistent with the way "make firmware_install" really works. Signed-off-by: matt mooney Signed-off-by: Greg Kroah-Hartman --- drivers/base/Kconfig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers') diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index 5fe7fd23ed6..52c67588368 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -84,10 +84,10 @@ config FIRMWARE_IN_KERNEL help The kernel source tree includes a number of firmware 'blobs' that are used by various drivers. The recommended way to - use these is to run "make firmware_install" and to copy the - resulting binary files created in usr/lib/firmware/ of the - kernel tree to /lib/firmware/ on your system so that they can - be loaded by userspace helpers on request. + use these is to run "make firmware_install", which, after + converting ihex files to binary, copies all of the needed + binary files in firmware/ to /lib/firmware/ on your system so + that they can be loaded by userspace helpers on request. Enabling this option will build each required firmware blob into the kernel directly, where request_firmware() will find -- cgit v1.2.3-70-g09d2 From 573c9774396091dc9d55e7de91026608fa2db3ee Mon Sep 17 00:00:00 2001 From: Márton Németh Date: Sun, 19 Jun 2011 22:30:16 +0200 Subject: driver core: add more help description for "path to uevent helper" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The kernel configuration UEVENT_HELPER_PATH is a string to the uevent helper program. Add more description about how to disable this feature and how to enable it again during runtime. Signed-off-by: Márton Németh Signed-off-by: Greg Kroah-Hartman --- drivers/base/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers') diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index 52c67588368..fa64fa04fee 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -16,6 +16,11 @@ config UEVENT_HELPER_PATH that it creates a high system load, or on smaller systems it is known to create out-of-memory situations during bootup. + To disable user space helper program execution at early boot + time specify an empty string here. This setting can be altered + via /proc/sys/kernel/hotplug or via /sys/kernel/uevent_helper + later at runtime. + config DEVTMPFS bool "Maintain a devtmpfs filesystem to mount at /dev" depends on HOTPLUG -- cgit v1.2.3-70-g09d2 From 1e4de81653bae3f5e6d06e3384853d31d564bbec Mon Sep 17 00:00:00 2001 From: Axel Lin Date: Wed, 29 Jun 2011 15:57:53 +0800 Subject: firmware: gsmi: remove sysfs entries when unload the module This patch removes sysfs entries in gsmi_exit() and gsmi_init() error path. Also move the driver successfully loaded message to the end of gsmi_init() and return proper error if register_efivars() fails. Signed-off-by: Axel Lin Signed-off-by: Greg Kroah-Hartman --- drivers/firmware/google/gsmi.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'drivers') diff --git a/drivers/firmware/google/gsmi.c b/drivers/firmware/google/gsmi.c index fa7f0b3e81d..68810fd1a59 100644 --- a/drivers/firmware/google/gsmi.c +++ b/drivers/firmware/google/gsmi.c @@ -869,8 +869,6 @@ static __init int gsmi_init(void) goto out_err; } - printk(KERN_INFO "gsmi version " DRIVER_VERSION " loaded\n"); - /* Register in the firmware directory */ ret = -ENOMEM; gsmi_kobj = kobject_create_and_add("gsmi", firmware_kobj); @@ -890,12 +888,13 @@ static __init int gsmi_init(void) ret = sysfs_create_files(gsmi_kobj, gsmi_attrs); if (ret) { printk(KERN_INFO "gsmi: Failed to add attrs"); - goto out_err; + goto out_remove_bin_file; } - if (register_efivars(&efivars, &efivar_ops, gsmi_kobj)) { + ret = register_efivars(&efivars, &efivar_ops, gsmi_kobj); + if (ret) { printk(KERN_INFO "gsmi: Failed to register efivars\n"); - goto out_err; + goto out_remove_sysfs_files; } register_reboot_notifier(&gsmi_reboot_notifier); @@ -903,9 +902,15 @@ static __init int gsmi_init(void) atomic_notifier_chain_register(&panic_notifier_list, &gsmi_panic_notifier); + printk(KERN_INFO "gsmi version " DRIVER_VERSION " loaded\n"); + return 0; - out_err: +out_remove_sysfs_files: + sysfs_remove_files(gsmi_kobj, gsmi_attrs); +out_remove_bin_file: + sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr); +out_err: kobject_put(gsmi_kobj); gsmi_buf_free(gsmi_dev.param_buf); gsmi_buf_free(gsmi_dev.data_buf); @@ -925,6 +930,8 @@ static void __exit gsmi_exit(void) &gsmi_panic_notifier); unregister_efivars(&efivars); + sysfs_remove_files(gsmi_kobj, gsmi_attrs); + sysfs_remove_bin_file(gsmi_kobj, &eventlog_bin_attr); kobject_put(gsmi_kobj); gsmi_buf_free(gsmi_dev.param_buf); gsmi_buf_free(gsmi_dev.data_buf); -- cgit v1.2.3-70-g09d2 From 27760f868663310ff9e701f47aec33da3b906f34 Mon Sep 17 00:00:00 2001 From: "Hans J. Koch" Date: Thu, 7 Jul 2011 23:11:38 +0200 Subject: uio: uio_pdrv_genirq: Add OF support Adding OF binding to genirq. Version string is setup to the "devicetree". Compatible string is not setup for now but you can add your custom compatible string to uio_of_genirq_match structure. For example with "vendor,device" compatible string: static const struct of_device_id __devinitconst uio_of_genirq_match[] = { { .compatible = "vendor,device", }, { /* empty for now */ }, }; Signed-off-by: Michal Simek Signed-off-by: Hans J. Koch Reviewed-by: Wolfram Sang CC: Hans J. Koch CC: Arnd Bergmann CC: John Williams CC: Grant Likely CC: Wolfram Sang Signed-off-by: Greg Kroah-Hartman --- drivers/uio/uio_pdrv_genirq.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'drivers') diff --git a/drivers/uio/uio_pdrv_genirq.c b/drivers/uio/uio_pdrv_genirq.c index 0f424af7f10..f8f81db3215 100644 --- a/drivers/uio/uio_pdrv_genirq.c +++ b/drivers/uio/uio_pdrv_genirq.c @@ -23,6 +23,10 @@ #include #include +#include +#include +#include + #define DRIVER_NAME "uio_pdrv_genirq" struct uio_pdrv_genirq_platdata { @@ -97,6 +101,27 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) int ret = -EINVAL; int i; + if (!uioinfo) { + int irq; + + /* alloc uioinfo for one device */ + uioinfo = kzalloc(sizeof(*uioinfo), GFP_KERNEL); + if (!uioinfo) { + ret = -ENOMEM; + dev_err(&pdev->dev, "unable to kmalloc\n"); + goto bad2; + } + uioinfo->name = pdev->dev.of_node->name; + uioinfo->version = "devicetree"; + + /* Multiple IRQs are not supported */ + irq = platform_get_irq(pdev, 0); + if (irq == -ENXIO) + uioinfo->irq = UIO_IRQ_NONE; + else + uioinfo->irq = irq; + } + if (!uioinfo || !uioinfo->name || !uioinfo->version) { dev_err(&pdev->dev, "missing platform_data\n"); goto bad0; @@ -180,6 +205,10 @@ static int uio_pdrv_genirq_probe(struct platform_device *pdev) kfree(priv); pm_runtime_disable(&pdev->dev); bad0: + /* kfree uioinfo for OF */ + if (pdev->dev.of_node) + kfree(uioinfo); + bad2: return ret; } @@ -193,6 +222,10 @@ static int uio_pdrv_genirq_remove(struct platform_device *pdev) priv->uioinfo->handler = NULL; priv->uioinfo->irqcontrol = NULL; + /* kfree uioinfo for OF */ + if (pdev->dev.of_node) + kfree(priv->uioinfo); + kfree(priv); return 0; } @@ -219,6 +252,15 @@ static const struct dev_pm_ops uio_pdrv_genirq_dev_pm_ops = { .runtime_resume = uio_pdrv_genirq_runtime_nop, }; +#ifdef CONFIG_OF +static const struct of_device_id __devinitconst uio_of_genirq_match[] = { + { /* empty for now */ }, +}; +MODULE_DEVICE_TABLE(of, uio_of_genirq_match); +#else +# define uio_of_genirq_match NULL +#endif + static struct platform_driver uio_pdrv_genirq = { .probe = uio_pdrv_genirq_probe, .remove = uio_pdrv_genirq_remove, @@ -226,6 +268,7 @@ static struct platform_driver uio_pdrv_genirq = { .name = DRIVER_NAME, .owner = THIS_MODULE, .pm = &uio_pdrv_genirq_dev_pm_ops, + .of_match_table = uio_of_genirq_match, }, }; -- cgit v1.2.3-70-g09d2