You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (64 commits) Input: tc3589x-keypad - add missing kerneldoc Input: ucb1400-ts - switch to using dev_xxx() for diagnostic messages Input: ucb1400_ts - convert to threaded IRQ Input: ucb1400_ts - drop inline annotations Input: usb1400_ts - add __devinit/__devexit section annotations Input: ucb1400_ts - set driver owner Input: ucb1400_ts - convert to use dev_pm_ops Input: psmouse - make sure we do not use stale methods Input: evdev - do not block waiting for an event if fd is nonblock Input: evdev - if no events and non-block, return EAGAIN not 0 Input: evdev - only allow reading events if a full packet is present Input: add driver for pixcir i2c touchscreens Input: samsung-keypad - implement runtime power management support Input: tegra-kbc - report wakeup key for some platforms Input: tegra-kbc - add device tree bindings Input: add driver for AUO In-Cell touchscreens using pixcir ICs Input: mpu3050 - configure the sampling method Input: mpu3050 - ensure we enable interrupts Input: mpu3050 - add of_match table for device-tree probing Input: sentelic - document the latest hardware ... Fix up fairly trivial conflicts (device tree matching conflicting with some independent cleanups) in drivers/input/keyboard/samsung-keypad.c
This commit is contained in:
+11
-9
@@ -369,7 +369,7 @@ static int evdev_fetch_next_event(struct evdev_client *client,
|
||||
|
||||
spin_lock_irq(&client->buffer_lock);
|
||||
|
||||
have_event = client->head != client->tail;
|
||||
have_event = client->packet_head != client->tail;
|
||||
if (have_event) {
|
||||
*event = client->buffer[client->tail++];
|
||||
client->tail &= client->bufsize - 1;
|
||||
@@ -391,14 +391,13 @@ static ssize_t evdev_read(struct file *file, char __user *buffer,
|
||||
if (count < input_event_size())
|
||||
return -EINVAL;
|
||||
|
||||
if (client->packet_head == client->tail && evdev->exist &&
|
||||
(file->f_flags & O_NONBLOCK))
|
||||
return -EAGAIN;
|
||||
|
||||
retval = wait_event_interruptible(evdev->wait,
|
||||
client->packet_head != client->tail || !evdev->exist);
|
||||
if (retval)
|
||||
return retval;
|
||||
if (!(file->f_flags & O_NONBLOCK)) {
|
||||
retval = wait_event_interruptible(evdev->wait,
|
||||
client->packet_head != client->tail ||
|
||||
!evdev->exist);
|
||||
if (retval)
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (!evdev->exist)
|
||||
return -ENODEV;
|
||||
@@ -412,6 +411,9 @@ static ssize_t evdev_read(struct file *file, char __user *buffer,
|
||||
retval += input_event_size();
|
||||
}
|
||||
|
||||
if (retval == 0 && (file->f_flags & O_NONBLOCK))
|
||||
return -EAGAIN;
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,10 +84,12 @@ static ssize_t input_polldev_set_poll(struct device *dev,
|
||||
{
|
||||
struct input_polled_dev *polldev = dev_get_drvdata(dev);
|
||||
struct input_dev *input = polldev->input;
|
||||
unsigned long interval;
|
||||
unsigned int interval;
|
||||
int err;
|
||||
|
||||
if (strict_strtoul(buf, 0, &interval))
|
||||
return -EINVAL;
|
||||
err = kstrtouint(buf, 0, &interval);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (interval < polldev->poll_interval_min)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -221,6 +221,22 @@ config KEYBOARD_TCA6416
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called tca6416_keypad.
|
||||
|
||||
config KEYBOARD_TCA8418
|
||||
tristate "TCA8418 Keypad Support"
|
||||
depends on I2C
|
||||
help
|
||||
This driver implements basic keypad functionality
|
||||
for keys connected through TCA8418 keypad decoder.
|
||||
|
||||
Say Y here if your device has keys connected to
|
||||
TCA8418 keypad decoder.
|
||||
|
||||
If enabled the complete TCA8418 device will be managed through
|
||||
this driver.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called tca8418_keypad.
|
||||
|
||||
config KEYBOARD_MATRIX
|
||||
tristate "GPIO driven matrix keypad support"
|
||||
depends on GENERIC_GPIO
|
||||
@@ -425,9 +441,10 @@ config KEYBOARD_PMIC8XXX
|
||||
|
||||
config KEYBOARD_SAMSUNG
|
||||
tristate "Samsung keypad support"
|
||||
depends on SAMSUNG_DEV_KEYPAD
|
||||
depends on HAVE_CLK
|
||||
help
|
||||
Say Y here if you want to use the Samsung keypad.
|
||||
Say Y here if you want to use the keypad on your Samsung mobile
|
||||
device.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called samsung-keypad.
|
||||
|
||||
@@ -16,6 +16,7 @@ obj-$(CONFIG_KEYBOARD_EP93XX) += ep93xx_keypad.o
|
||||
obj-$(CONFIG_KEYBOARD_GPIO) += gpio_keys.o
|
||||
obj-$(CONFIG_KEYBOARD_GPIO_POLLED) += gpio_keys_polled.o
|
||||
obj-$(CONFIG_KEYBOARD_TCA6416) += tca6416-keypad.o
|
||||
obj-$(CONFIG_KEYBOARD_TCA8418) += tca8418_keypad.o
|
||||
obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
|
||||
obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
|
||||
obj-$(CONFIG_KEYBOARD_IMX) += imx_keypad.o
|
||||
|
||||
@@ -202,18 +202,7 @@ static struct platform_driver adp5520_keys_driver = {
|
||||
.probe = adp5520_keys_probe,
|
||||
.remove = __devexit_p(adp5520_keys_remove),
|
||||
};
|
||||
|
||||
static int __init adp5520_keys_init(void)
|
||||
{
|
||||
return platform_driver_register(&adp5520_keys_driver);
|
||||
}
|
||||
module_init(adp5520_keys_init);
|
||||
|
||||
static void __exit adp5520_keys_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&adp5520_keys_driver);
|
||||
}
|
||||
module_exit(adp5520_keys_exit);
|
||||
module_platform_driver(adp5520_keys_driver);
|
||||
|
||||
MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
|
||||
MODULE_DESCRIPTION("Keys ADP5520 Driver");
|
||||
|
||||
@@ -259,19 +259,6 @@ static struct platform_driver amikbd_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init amikbd_init(void)
|
||||
{
|
||||
return platform_driver_probe(&amikbd_driver, amikbd_probe);
|
||||
}
|
||||
|
||||
module_init(amikbd_init);
|
||||
|
||||
static void __exit amikbd_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&amikbd_driver);
|
||||
}
|
||||
|
||||
module_exit(amikbd_exit);
|
||||
module_platform_driver(amikbd_driver);
|
||||
|
||||
MODULE_ALIAS("platform:amiga-keyboard");
|
||||
|
||||
@@ -1305,7 +1305,7 @@ static ssize_t atkbd_show_extra(struct atkbd *atkbd, char *buf)
|
||||
static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
{
|
||||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
unsigned int value;
|
||||
int err;
|
||||
bool old_extra;
|
||||
unsigned char old_set;
|
||||
@@ -1313,7 +1313,11 @@ static ssize_t atkbd_set_extra(struct atkbd *atkbd, const char *buf, size_t coun
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
err = kstrtouint(buf, 10, &value);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (value > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (atkbd->extra != value) {
|
||||
@@ -1389,11 +1393,15 @@ static ssize_t atkbd_show_scroll(struct atkbd *atkbd, char *buf)
|
||||
static ssize_t atkbd_set_scroll(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
{
|
||||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
unsigned int value;
|
||||
int err;
|
||||
bool old_scroll;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
err = kstrtouint(buf, 10, &value);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (value > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (atkbd->scroll != value) {
|
||||
@@ -1433,7 +1441,7 @@ static ssize_t atkbd_show_set(struct atkbd *atkbd, char *buf)
|
||||
static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
{
|
||||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
unsigned int value;
|
||||
int err;
|
||||
unsigned char old_set;
|
||||
bool old_extra;
|
||||
@@ -1441,7 +1449,11 @@ static ssize_t atkbd_set_set(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || (value != 2 && value != 3))
|
||||
err = kstrtouint(buf, 10, &value);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (value != 2 && value != 3)
|
||||
return -EINVAL;
|
||||
|
||||
if (atkbd->set != value) {
|
||||
@@ -1484,14 +1496,18 @@ static ssize_t atkbd_show_softrepeat(struct atkbd *atkbd, char *buf)
|
||||
static ssize_t atkbd_set_softrepeat(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
{
|
||||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
unsigned int value;
|
||||
int err;
|
||||
bool old_softrepeat, old_softraw;
|
||||
|
||||
if (!atkbd->write)
|
||||
return -EIO;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
err = kstrtouint(buf, 10, &value);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (value > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (atkbd->softrepeat != value) {
|
||||
@@ -1534,11 +1550,15 @@ static ssize_t atkbd_show_softraw(struct atkbd *atkbd, char *buf)
|
||||
static ssize_t atkbd_set_softraw(struct atkbd *atkbd, const char *buf, size_t count)
|
||||
{
|
||||
struct input_dev *old_dev, *new_dev;
|
||||
unsigned long value;
|
||||
unsigned int value;
|
||||
int err;
|
||||
bool old_softraw;
|
||||
|
||||
if (strict_strtoul(buf, 10, &value) || value > 1)
|
||||
err = kstrtouint(buf, 10, &value);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (value > 1)
|
||||
return -EINVAL;
|
||||
|
||||
if (atkbd->softraw != value) {
|
||||
|
||||
@@ -384,7 +384,7 @@ static int bfin_kpad_resume(struct platform_device *pdev)
|
||||
# define bfin_kpad_resume NULL
|
||||
#endif
|
||||
|
||||
struct platform_driver bfin_kpad_device_driver = {
|
||||
static struct platform_driver bfin_kpad_device_driver = {
|
||||
.driver = {
|
||||
.name = DRV_NAME,
|
||||
.owner = THIS_MODULE,
|
||||
@@ -394,19 +394,7 @@ struct platform_driver bfin_kpad_device_driver = {
|
||||
.suspend = bfin_kpad_suspend,
|
||||
.resume = bfin_kpad_resume,
|
||||
};
|
||||
|
||||
static int __init bfin_kpad_init(void)
|
||||
{
|
||||
return platform_driver_register(&bfin_kpad_device_driver);
|
||||
}
|
||||
|
||||
static void __exit bfin_kpad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&bfin_kpad_device_driver);
|
||||
}
|
||||
|
||||
module_init(bfin_kpad_init);
|
||||
module_exit(bfin_kpad_exit);
|
||||
module_platform_driver(bfin_kpad_device_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Michael Hennerich <hennerich@blackfin.uclinux.org>");
|
||||
|
||||
@@ -328,18 +328,7 @@ static struct platform_driver davinci_ks_driver = {
|
||||
},
|
||||
.remove = __devexit_p(davinci_ks_remove),
|
||||
};
|
||||
|
||||
static int __init davinci_ks_init(void)
|
||||
{
|
||||
return platform_driver_probe(&davinci_ks_driver, davinci_ks_probe);
|
||||
}
|
||||
module_init(davinci_ks_init);
|
||||
|
||||
static void __exit davinci_ks_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&davinci_ks_driver);
|
||||
}
|
||||
module_exit(davinci_ks_exit);
|
||||
module_platform_driver(davinci_ks_driver);
|
||||
|
||||
MODULE_AUTHOR("Miguel Aguilar");
|
||||
MODULE_DESCRIPTION("Texas Instruments DaVinci Key Scan Driver");
|
||||
|
||||
@@ -390,19 +390,7 @@ static struct platform_driver ep93xx_keypad_driver = {
|
||||
.suspend = ep93xx_keypad_suspend,
|
||||
.resume = ep93xx_keypad_resume,
|
||||
};
|
||||
|
||||
static int __init ep93xx_keypad_init(void)
|
||||
{
|
||||
return platform_driver_register(&ep93xx_keypad_driver);
|
||||
}
|
||||
|
||||
static void __exit ep93xx_keypad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&ep93xx_keypad_driver);
|
||||
}
|
||||
|
||||
module_init(ep93xx_keypad_init);
|
||||
module_exit(ep93xx_keypad_exit);
|
||||
module_platform_driver(ep93xx_keypad_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("H Hartley Sweeten <hsweeten@visionengravers.com>");
|
||||
|
||||
@@ -241,19 +241,7 @@ static struct platform_driver gpio_keys_polled_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init gpio_keys_polled_init(void)
|
||||
{
|
||||
return platform_driver_register(&gpio_keys_polled_driver);
|
||||
}
|
||||
|
||||
static void __exit gpio_keys_polled_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&gpio_keys_polled_driver);
|
||||
}
|
||||
|
||||
module_init(gpio_keys_polled_init);
|
||||
module_exit(gpio_keys_polled_exit);
|
||||
module_platform_driver(gpio_keys_polled_driver);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Gabor Juhos <juhosg@openwrt.org>");
|
||||
|
||||
@@ -619,19 +619,7 @@ static struct platform_driver imx_keypad_driver = {
|
||||
.probe = imx_keypad_probe,
|
||||
.remove = __devexit_p(imx_keypad_remove),
|
||||
};
|
||||
|
||||
static int __init imx_keypad_init(void)
|
||||
{
|
||||
return platform_driver_register(&imx_keypad_driver);
|
||||
}
|
||||
|
||||
static void __exit imx_keypad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&imx_keypad_driver);
|
||||
}
|
||||
|
||||
module_init(imx_keypad_init);
|
||||
module_exit(imx_keypad_exit);
|
||||
module_platform_driver(imx_keypad_driver);
|
||||
|
||||
MODULE_AUTHOR("Alberto Panizzo <maramaopercheseimorto@gmail.com>");
|
||||
MODULE_DESCRIPTION("IMX Keypad Port Driver");
|
||||
|
||||
@@ -260,19 +260,7 @@ static struct platform_driver jornada680kbd_driver = {
|
||||
.probe = jornada680kbd_probe,
|
||||
.remove = __devexit_p(jornada680kbd_remove),
|
||||
};
|
||||
|
||||
static int __init jornada680kbd_init(void)
|
||||
{
|
||||
return platform_driver_register(&jornada680kbd_driver);
|
||||
}
|
||||
|
||||
static void __exit jornada680kbd_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&jornada680kbd_driver);
|
||||
}
|
||||
|
||||
module_init(jornada680kbd_init);
|
||||
module_exit(jornada680kbd_exit);
|
||||
module_platform_driver(jornada680kbd_driver);
|
||||
|
||||
MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>");
|
||||
MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver");
|
||||
|
||||
@@ -174,16 +174,4 @@ static struct platform_driver jornada720_kbd_driver = {
|
||||
.probe = jornada720_kbd_probe,
|
||||
.remove = __devexit_p(jornada720_kbd_remove),
|
||||
};
|
||||
|
||||
static int __init jornada720_kbd_init(void)
|
||||
{
|
||||
return platform_driver_register(&jornada720_kbd_driver);
|
||||
}
|
||||
|
||||
static void __exit jornada720_kbd_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&jornada720_kbd_driver);
|
||||
}
|
||||
|
||||
module_init(jornada720_kbd_init);
|
||||
module_exit(jornada720_kbd_exit);
|
||||
module_platform_driver(jornada720_kbd_driver);
|
||||
|
||||
@@ -545,13 +545,12 @@ static ssize_t lm8323_pwm_store_time(struct device *dev,
|
||||
{
|
||||
struct led_classdev *led_cdev = dev_get_drvdata(dev);
|
||||
struct lm8323_pwm *pwm = cdev_to_pwm(led_cdev);
|
||||
int ret;
|
||||
unsigned long time;
|
||||
int ret, time;
|
||||
|
||||
ret = strict_strtoul(buf, 10, &time);
|
||||
ret = kstrtoint(buf, 10, &time);
|
||||
/* Numbers only, please. */
|
||||
if (ret)
|
||||
return -EINVAL;
|
||||
return ret;
|
||||
|
||||
pwm->fade_time = time;
|
||||
|
||||
@@ -613,9 +612,9 @@ static ssize_t lm8323_set_disable(struct device *dev,
|
||||
{
|
||||
struct lm8323_chip *lm = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
unsigned long i;
|
||||
unsigned int i;
|
||||
|
||||
ret = strict_strtoul(buf, 10, &i);
|
||||
ret = kstrtouint(buf, 10, &i);
|
||||
|
||||
mutex_lock(&lm->lock);
|
||||
lm->kp_enabled = !i;
|
||||
|
||||
@@ -496,19 +496,7 @@ static struct platform_driver matrix_keypad_driver = {
|
||||
#endif
|
||||
},
|
||||
};
|
||||
|
||||
static int __init matrix_keypad_init(void)
|
||||
{
|
||||
return platform_driver_register(&matrix_keypad_driver);
|
||||
}
|
||||
|
||||
static void __exit matrix_keypad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&matrix_keypad_driver);
|
||||
}
|
||||
|
||||
module_init(matrix_keypad_init);
|
||||
module_exit(matrix_keypad_exit);
|
||||
module_platform_driver(matrix_keypad_driver);
|
||||
|
||||
MODULE_AUTHOR("Marek Vasut <marek.vasut@gmail.com>");
|
||||
MODULE_DESCRIPTION("GPIO Driven Matrix Keypad Driver");
|
||||
|
||||
@@ -379,7 +379,7 @@ static const struct dev_pm_ops ske_keypad_dev_pm_ops = {
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_driver ske_keypad_driver = {
|
||||
static struct platform_driver ske_keypad_driver = {
|
||||
.driver = {
|
||||
.name = "nmk-ske-keypad",
|
||||
.owner = THIS_MODULE,
|
||||
@@ -390,18 +390,7 @@ struct platform_driver ske_keypad_driver = {
|
||||
.probe = ske_keypad_probe,
|
||||
.remove = __devexit_p(ske_keypad_remove),
|
||||
};
|
||||
|
||||
static int __init ske_keypad_init(void)
|
||||
{
|
||||
return platform_driver_probe(&ske_keypad_driver, ske_keypad_probe);
|
||||
}
|
||||
module_init(ske_keypad_init);
|
||||
|
||||
static void __exit ske_keypad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&ske_keypad_driver);
|
||||
}
|
||||
module_exit(ske_keypad_exit);
|
||||
module_platform_driver(ske_keypad_driver);
|
||||
|
||||
MODULE_LICENSE("GPL v2");
|
||||
MODULE_AUTHOR("Naveen Kumar <naveen.gaddipati@stericsson.com> / Sundar Iyer <sundar.iyer@stericsson.com>");
|
||||
|
||||
@@ -473,20 +473,7 @@ static struct platform_driver omap_kp_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init omap_kp_init(void)
|
||||
{
|
||||
printk(KERN_INFO "OMAP Keypad Driver\n");
|
||||
return platform_driver_register(&omap_kp_driver);
|
||||
}
|
||||
|
||||
static void __exit omap_kp_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&omap_kp_driver);
|
||||
}
|
||||
|
||||
module_init(omap_kp_init);
|
||||
module_exit(omap_kp_exit);
|
||||
module_platform_driver(omap_kp_driver);
|
||||
|
||||
MODULE_AUTHOR("Timo Teräs");
|
||||
MODULE_DESCRIPTION("OMAP Keypad Driver");
|
||||
|
||||
@@ -335,18 +335,7 @@ static struct platform_driver omap4_keypad_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
};
|
||||
|
||||
static int __init omap4_keypad_init(void)
|
||||
{
|
||||
return platform_driver_register(&omap4_keypad_driver);
|
||||
}
|
||||
module_init(omap4_keypad_init);
|
||||
|
||||
static void __exit omap4_keypad_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&omap4_keypad_driver);
|
||||
}
|
||||
module_exit(omap4_keypad_exit);
|
||||
module_platform_driver(omap4_keypad_driver);
|
||||
|
||||
MODULE_AUTHOR("Texas Instruments");
|
||||
MODULE_DESCRIPTION("OMAP4 Keypad Driver");
|
||||
|
||||
@@ -163,18 +163,7 @@ static struct platform_driver opencores_kbd_device_driver = {
|
||||
.name = "opencores-kbd",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init opencores_kbd_init(void)
|
||||
{
|
||||
return platform_driver_register(&opencores_kbd_device_driver);
|
||||
}
|
||||
module_init(opencores_kbd_init);
|
||||
|
||||
static void __exit opencores_kbd_exit(void)
|
||||
{
|
||||
platform_driver_unregister(&opencores_kbd_device_driver);
|
||||
}
|
||||
module_exit(opencores_kbd_exit);
|
||||
module_platform_driver(opencores_kbd_device_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_AUTHOR("Javier Herrero <jherrero@hvsistemas.es>");
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user