mirror of
https://github.com/void-linux/void-packages.git
synced 2025-06-08 16:13:50 +02:00
kernel-rpi: update to git commit 350ee7b (3.10.18 bump).
This commit is contained in:
parent
6af2a26cd4
commit
a00abae94f
4 changed files with 7 additions and 544 deletions
|
@ -1,387 +0,0 @@
|
||||||
From f803f0d079ded4272d7a1c9813bfd24c58b8ee5f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Thierry Reding <thierry.reding@avionic-design.de>
|
|
||||||
Date: Mon, 17 Dec 2012 16:02:44 -0800
|
|
||||||
Subject: [PATCH] rtc: add NXP PCF8523 support
|
|
||||||
|
|
||||||
Add an RTC driver for PCF8523 chips by NXP Semiconductors. No support is
|
|
||||||
currently provided for the alarm and interrupt functions. Only the time
|
|
||||||
and date functionality is implemented.
|
|
||||||
|
|
||||||
Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de>
|
|
||||||
Cc: Alessandro Zummo <a.zummo@towertech.it>
|
|
||||||
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
|
||||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
||||||
---
|
|
||||||
drivers/rtc/Kconfig | 9 ++
|
|
||||||
drivers/rtc/Makefile | 1 +
|
|
||||||
drivers/rtc/rtc-pcf8523.c | 326 +++++++++++++++++++++++++++++++++++++++++++++
|
|
||||||
3 files changed, 336 insertions(+), 0 deletions(-)
|
|
||||||
create mode 100644 drivers/rtc/rtc-pcf8523.c
|
|
||||||
|
|
||||||
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
|
|
||||||
index 608a7b1..5bb0314 100644
|
|
||||||
--- drivers/rtc/Kconfig
|
|
||||||
+++ drivers/rtc/Kconfig
|
|
||||||
@@ -269,6 +269,15 @@ config RTC_DRV_X1205
|
|
||||||
This driver can also be built as a module. If so, the module
|
|
||||||
will be called rtc-x1205.
|
|
||||||
|
|
||||||
+config RTC_DRV_PCF8523
|
|
||||||
+ tristate "NXP PCF8523"
|
|
||||||
+ help
|
|
||||||
+ If you say yes here you get support for the NXP PCF8523 RTC
|
|
||||||
+ chips.
|
|
||||||
+
|
|
||||||
+ This driver can also be built as a module. If so, the module
|
|
||||||
+ will be called rtc-pcf8523.
|
|
||||||
+
|
|
||||||
config RTC_DRV_PCF8563
|
|
||||||
tristate "Philips PCF8563/Epson RTC8564"
|
|
||||||
help
|
|
||||||
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
|
|
||||||
index 56297f0..59e2132 100644
|
|
||||||
--- drivers/rtc/Makefile
|
|
||||||
+++ drivers/rtc/Makefile
|
|
||||||
@@ -76,6 +76,7 @@ obj-$(CONFIG_RTC_DRV_MV) += rtc-mv.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_NUC900) += rtc-nuc900.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_OMAP) += rtc-omap.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_PCAP) += rtc-pcap.o
|
|
||||||
+obj-$(CONFIG_RTC_DRV_PCF8523) += rtc-pcf8523.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o
|
|
||||||
obj-$(CONFIG_RTC_DRV_PCF2123) += rtc-pcf2123.o
|
|
||||||
diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..be05a64
|
|
||||||
--- /dev/null
|
|
||||||
+++ drivers/rtc/rtc-pcf8523.c
|
|
||||||
@@ -0,0 +1,326 @@
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2012 Avionic Design GmbH
|
|
||||||
+ *
|
|
||||||
+ * This program is free software; you can redistribute it and/or modify
|
|
||||||
+ * it under the terms of the GNU General Public License version 2 as
|
|
||||||
+ * published by the Free Software Foundation.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include <linux/bcd.h>
|
|
||||||
+#include <linux/i2c.h>
|
|
||||||
+#include <linux/module.h>
|
|
||||||
+#include <linux/rtc.h>
|
|
||||||
+#include <linux/of.h>
|
|
||||||
+
|
|
||||||
+#define DRIVER_NAME "rtc-pcf8523"
|
|
||||||
+
|
|
||||||
+#define REG_CONTROL1 0x00
|
|
||||||
+#define REG_CONTROL1_CAP_SEL (1 << 7)
|
|
||||||
+#define REG_CONTROL1_STOP (1 << 5)
|
|
||||||
+
|
|
||||||
+#define REG_CONTROL3 0x02
|
|
||||||
+#define REG_CONTROL3_PM_BLD (1 << 7) /* battery low detection disabled */
|
|
||||||
+#define REG_CONTROL3_PM_VDD (1 << 6) /* switch-over disabled */
|
|
||||||
+#define REG_CONTROL3_PM_DSM (1 << 5) /* direct switching mode */
|
|
||||||
+#define REG_CONTROL3_PM_MASK 0xe0
|
|
||||||
+
|
|
||||||
+#define REG_SECONDS 0x03
|
|
||||||
+#define REG_SECONDS_OS (1 << 7)
|
|
||||||
+
|
|
||||||
+#define REG_MINUTES 0x04
|
|
||||||
+#define REG_HOURS 0x05
|
|
||||||
+#define REG_DAYS 0x06
|
|
||||||
+#define REG_WEEKDAYS 0x07
|
|
||||||
+#define REG_MONTHS 0x08
|
|
||||||
+#define REG_YEARS 0x09
|
|
||||||
+
|
|
||||||
+struct pcf8523 {
|
|
||||||
+ struct rtc_device *rtc;
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int pcf8523_read(struct i2c_client *client, u8 reg, u8 *valuep)
|
|
||||||
+{
|
|
||||||
+ struct i2c_msg msgs[2];
|
|
||||||
+ u8 value = 0;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ msgs[0].addr = client->addr;
|
|
||||||
+ msgs[0].flags = 0;
|
|
||||||
+ msgs[0].len = sizeof(reg);
|
|
||||||
+ msgs[0].buf = ®
|
|
||||||
+
|
|
||||||
+ msgs[1].addr = client->addr;
|
|
||||||
+ msgs[1].flags = I2C_M_RD;
|
|
||||||
+ msgs[1].len = sizeof(value);
|
|
||||||
+ msgs[1].buf = &value;
|
|
||||||
+
|
|
||||||
+ err = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ *valuep = value;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_write(struct i2c_client *client, u8 reg, u8 value)
|
|
||||||
+{
|
|
||||||
+ u8 buffer[2] = { reg, value };
|
|
||||||
+ struct i2c_msg msg;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ msg.addr = client->addr;
|
|
||||||
+ msg.flags = 0;
|
|
||||||
+ msg.len = sizeof(buffer);
|
|
||||||
+ msg.buf = buffer;
|
|
||||||
+
|
|
||||||
+ err = i2c_transfer(client->adapter, &msg, 1);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_select_capacitance(struct i2c_client *client, bool high)
|
|
||||||
+{
|
|
||||||
+ u8 value;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_read(client, REG_CONTROL1, &value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ if (!high)
|
|
||||||
+ value &= ~REG_CONTROL1_CAP_SEL;
|
|
||||||
+ else
|
|
||||||
+ value |= REG_CONTROL1_CAP_SEL;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_write(client, REG_CONTROL1, value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ return err;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_set_pm(struct i2c_client *client, u8 pm)
|
|
||||||
+{
|
|
||||||
+ u8 value;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_read(client, REG_CONTROL3, &value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ value = (value & ~REG_CONTROL3_PM_MASK) | pm;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_write(client, REG_CONTROL3, value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_stop_rtc(struct i2c_client *client)
|
|
||||||
+{
|
|
||||||
+ u8 value;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_read(client, REG_CONTROL1, &value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ value |= REG_CONTROL1_STOP;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_write(client, REG_CONTROL1, value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_start_rtc(struct i2c_client *client)
|
|
||||||
+{
|
|
||||||
+ u8 value;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_read(client, REG_CONTROL1, &value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ value &= ~REG_CONTROL1_STOP;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_write(client, REG_CONTROL1, value);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
|
|
||||||
+{
|
|
||||||
+ struct i2c_client *client = to_i2c_client(dev);
|
|
||||||
+ u8 start = REG_SECONDS, regs[7];
|
|
||||||
+ struct i2c_msg msgs[2];
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ msgs[0].addr = client->addr;
|
|
||||||
+ msgs[0].flags = 0;
|
|
||||||
+ msgs[0].len = 1;
|
|
||||||
+ msgs[0].buf = &start;
|
|
||||||
+
|
|
||||||
+ msgs[1].addr = client->addr;
|
|
||||||
+ msgs[1].flags = I2C_M_RD;
|
|
||||||
+ msgs[1].len = sizeof(regs);
|
|
||||||
+ msgs[1].buf = regs;
|
|
||||||
+
|
|
||||||
+ err = i2c_transfer(client->adapter, msgs, ARRAY_SIZE(msgs));
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ if (regs[0] & REG_SECONDS_OS) {
|
|
||||||
+ /*
|
|
||||||
+ * If the oscillator was stopped, try to clear the flag. Upon
|
|
||||||
+ * power-up the flag is always set, but if we cannot clear it
|
|
||||||
+ * the oscillator isn't running properly for some reason. The
|
|
||||||
+ * sensible thing therefore is to return an error, signalling
|
|
||||||
+ * that the clock cannot be assumed to be correct.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+ regs[0] &= ~REG_SECONDS_OS;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_write(client, REG_SECONDS, regs[0]);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_read(client, REG_SECONDS, ®s[0]);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ if (regs[0] & REG_SECONDS_OS)
|
|
||||||
+ return -EAGAIN;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ tm->tm_sec = bcd2bin(regs[0] & 0x7f);
|
|
||||||
+ tm->tm_min = bcd2bin(regs[1] & 0x7f);
|
|
||||||
+ tm->tm_hour = bcd2bin(regs[2] & 0x3f);
|
|
||||||
+ tm->tm_mday = bcd2bin(regs[3] & 0x3f);
|
|
||||||
+ tm->tm_wday = regs[4] & 0x7;
|
|
||||||
+ tm->tm_mon = bcd2bin(regs[5] & 0x1f);
|
|
||||||
+ tm->tm_year = bcd2bin(regs[6]) + 100;
|
|
||||||
+
|
|
||||||
+ return rtc_valid_tm(tm);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
|
||||||
+{
|
|
||||||
+ struct i2c_client *client = to_i2c_client(dev);
|
|
||||||
+ struct i2c_msg msg;
|
|
||||||
+ u8 regs[8];
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_stop_rtc(client);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ regs[0] = REG_SECONDS;
|
|
||||||
+ regs[1] = bin2bcd(tm->tm_sec);
|
|
||||||
+ regs[2] = bin2bcd(tm->tm_min);
|
|
||||||
+ regs[3] = bin2bcd(tm->tm_hour);
|
|
||||||
+ regs[4] = bin2bcd(tm->tm_mday);
|
|
||||||
+ regs[5] = tm->tm_wday;
|
|
||||||
+ regs[6] = bin2bcd(tm->tm_mon);
|
|
||||||
+ regs[7] = bin2bcd(tm->tm_year - 100);
|
|
||||||
+
|
|
||||||
+ msg.addr = client->addr;
|
|
||||||
+ msg.flags = 0;
|
|
||||||
+ msg.len = sizeof(regs);
|
|
||||||
+ msg.buf = regs;
|
|
||||||
+
|
|
||||||
+ err = i2c_transfer(client->adapter, &msg, 1);
|
|
||||||
+ if (err < 0) {
|
|
||||||
+ /*
|
|
||||||
+ * If the time cannot be set, restart the RTC anyway. Note
|
|
||||||
+ * that errors are ignored if the RTC cannot be started so
|
|
||||||
+ * that we have a chance to propagate the original error.
|
|
||||||
+ */
|
|
||||||
+ pcf8523_start_rtc(client);
|
|
||||||
+ return err;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return pcf8523_start_rtc(client);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct rtc_class_ops pcf8523_rtc_ops = {
|
|
||||||
+ .read_time = pcf8523_rtc_read_time,
|
|
||||||
+ .set_time = pcf8523_rtc_set_time,
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+static int pcf8523_probe(struct i2c_client *client,
|
|
||||||
+ const struct i2c_device_id *id)
|
|
||||||
+{
|
|
||||||
+ struct pcf8523 *pcf;
|
|
||||||
+ int err;
|
|
||||||
+
|
|
||||||
+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
|
|
||||||
+ return -ENODEV;
|
|
||||||
+
|
|
||||||
+ pcf = devm_kzalloc(&client->dev, sizeof(*pcf), GFP_KERNEL);
|
|
||||||
+ if (!pcf)
|
|
||||||
+ return -ENOMEM;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_select_capacitance(client, true);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ err = pcf8523_set_pm(client, 0);
|
|
||||||
+ if (err < 0)
|
|
||||||
+ return err;
|
|
||||||
+
|
|
||||||
+ pcf->rtc = rtc_device_register(DRIVER_NAME, &client->dev,
|
|
||||||
+ &pcf8523_rtc_ops, THIS_MODULE);
|
|
||||||
+ if (IS_ERR(pcf->rtc))
|
|
||||||
+ return PTR_ERR(pcf->rtc);
|
|
||||||
+
|
|
||||||
+ i2c_set_clientdata(client, pcf);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int pcf8523_remove(struct i2c_client *client)
|
|
||||||
+{
|
|
||||||
+ struct pcf8523 *pcf = i2c_get_clientdata(client);
|
|
||||||
+
|
|
||||||
+ rtc_device_unregister(pcf->rtc);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static const struct i2c_device_id pcf8523_id[] = {
|
|
||||||
+ { "pcf8523", 0 },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(i2c, pcf8523_id);
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_OF
|
|
||||||
+static const struct of_device_id pcf8523_of_match[] = {
|
|
||||||
+ { .compatible = "nxp,pcf8523" },
|
|
||||||
+ { }
|
|
||||||
+};
|
|
||||||
+MODULE_DEVICE_TABLE(of, pcf8523_of_match);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+static struct i2c_driver pcf8523_driver = {
|
|
||||||
+ .driver = {
|
|
||||||
+ .name = DRIVER_NAME,
|
|
||||||
+ .owner = THIS_MODULE,
|
|
||||||
+ .of_match_table = of_match_ptr(pcf8523_of_match),
|
|
||||||
+ },
|
|
||||||
+ .probe = pcf8523_probe,
|
|
||||||
+ .remove = pcf8523_remove,
|
|
||||||
+ .id_table = pcf8523_id,
|
|
||||||
+};
|
|
||||||
+module_i2c_driver(pcf8523_driver);
|
|
||||||
+
|
|
||||||
+MODULE_AUTHOR("Thierry Reding <thierry.reding@avionic-design.de>");
|
|
||||||
+MODULE_DESCRIPTION("NXP PCF8523 RTC driver");
|
|
||||||
+MODULE_LICENSE("GPL v2");
|
|
||||||
--
|
|
||||||
1.7.6.5
|
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
|
|
||||||
index 7fe7283..a8e31e7 100644
|
|
||||||
--- arch/arm/mach-bcm2708/bcm2708.c
|
|
||||||
+++ arch/arm/mach-bcm2708/bcm2708.c
|
|
||||||
@@ -689,6 +689,21 @@ static void bcm2708_power_off(void)
|
|
||||||
bcm2708_restart(0, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
+#ifdef CONFIG_RTC_DRV_PCF8523
|
|
||||||
+static struct i2c_board_info offboard_i2c_devices[] = {
|
|
||||||
+ {
|
|
||||||
+ /* Raspy Juice real-time clock chip */
|
|
||||||
+ I2C_BOARD_INFO("pcf8523", 0x68),
|
|
||||||
+ },
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+#if defined(CONFIG_RTC_HCTOSYS) && \
|
|
||||||
+ (!defined(CONFIG_I2C_CHARDEV) || \
|
|
||||||
+ !defined(CONFIG_I2C_BCM2708))
|
|
||||||
+#error "RTC_DRV_PCF8523 defined as kernel built-in, but I2C_CHARDEV and I2C_BMC2708 isn't: RTC_HCTOSYS will not work."
|
|
||||||
+#endif
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
void __init bcm2708_init(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
@@ -752,6 +767,15 @@ void __init bcm2708_init(void)
|
|
||||||
spi_register_board_info(bcm2708_spi_devices,
|
|
||||||
ARRAY_SIZE(bcm2708_spi_devices));
|
|
||||||
#endif
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_RTC_DRV_PCF8523
|
|
||||||
+ i = 0;
|
|
||||||
+ /* test of Raspberry Pi Rev.2, where GPIO-header I2C busnum=1 */
|
|
||||||
+ if (system_rev >= 15)
|
|
||||||
+ i = 1;
|
|
||||||
+ i2c_register_board_info(i, offboard_i2c_devices,
|
|
||||||
+ ARRAY_SIZE(offboard_i2c_devices));
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#define TIMER_PERIOD DIV_ROUND_CLOSEST(STC_FREQ_HZ, HZ)
|
|
|
@ -1,98 +0,0 @@
|
||||||
commit 2394d67e446bf616a0885167d5f0d397bdacfdfc
|
|
||||||
Author: Oliver Neukum <oneukum@suse.de>
|
|
||||||
Date: Tue Sep 13 08:42:21 2011 +0200
|
|
||||||
|
|
||||||
USB: add RESET_RESUME for webcams shown to be quirky
|
|
||||||
|
|
||||||
The new runtime PM code has shown that many webcams suffer
|
|
||||||
from a race condition that may crash them upon resume.
|
|
||||||
Runtime PM is especially prone to show the problem because
|
|
||||||
it retains power to the cameras at all times. However
|
|
||||||
system suspension may also crash the devices and retain
|
|
||||||
power to the devices.
|
|
||||||
The only way to solve this problem without races is in
|
|
||||||
usbcore with the RESET_RESUME quirk.
|
|
||||||
|
|
||||||
Signed-off-by: Oliver Neukum <oneukum@suse.de>
|
|
||||||
Signed-off-by: stable <stable@kernel.org>
|
|
||||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
|
|
||||||
index 81ce6a8..38f0510 100644
|
|
||||||
--- drivers/usb/core/quirks.c
|
|
||||||
+++ drivers/usb/core/quirks.c
|
|
||||||
@@ -38,6 +38,24 @@ static const struct usb_device_id usb_quirk_list[] = {
|
|
||||||
/* Creative SB Audigy 2 NX */
|
|
||||||
{ USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
|
|
||||||
+ /* Logitech Webcam C200 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
+ /* Logitech Webcam C250 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
+ /* Logitech Webcam B/C500 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
+ /* Logitech Webcam Pro 9000 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
+ /* Logitech Webcam C310 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
+ /* Logitech Webcam C270 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
/* Logitech Harmony 700-series */
|
|
||||||
{ USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
|
|
||||||
|
|
||||||
@@ -69,6 +87,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
|
||||||
{ USB_DEVICE(0x06a3, 0x0006), .driver_info =
|
|
||||||
USB_QUIRK_CONFIG_INTF_STRINGS },
|
|
||||||
|
|
||||||
+ /* Guillemot Webcam Hercules Dualpix Exchange*/
|
|
||||||
+ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
/* M-Systems Flash Disk Pioneers */
|
|
||||||
{ USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
|
|
||||||
commit 5b253d88cc6c65a23cefc457a5a4ef139913c5fc
|
|
||||||
Author: Jon Levell <linuxusb@coralbark.net>
|
|
||||||
Date: Thu Sep 29 20:42:52 2011 +0100
|
|
||||||
|
|
||||||
USB: add quirk for Logitech C300 web cam
|
|
||||||
|
|
||||||
My webcam is a Logitech C300 and I get "chipmunk"ed squeaky sound.
|
|
||||||
The following trivial patch fixes it.
|
|
||||||
|
|
||||||
Signed-off-by: Jon Levell <linuxusb@coralbark.net>
|
|
||||||
Cc: stable <stable@kernel.org>
|
|
||||||
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
|
|
||||||
index 38f0510..d6a8d82 100644
|
|
||||||
--- drivers/usb/core/quirks.c
|
|
||||||
+++ drivers/usb/core/quirks.c
|
|
||||||
@@ -44,6 +44,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
|
||||||
/* Logitech Webcam C250 */
|
|
||||||
{ USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
|
|
||||||
+ /* Logitech Webcam C300 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0805), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
/* Logitech Webcam B/C500 */
|
|
||||||
{ USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
|
|
||||||
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
|
|
||||||
index d6a8d82..caa1991 100644
|
|
||||||
--- drivers/usb/core/quirks.c
|
|
||||||
+++ drivers/usb/core/quirks.c
|
|
||||||
@@ -50,6 +50,9 @@ static const struct usb_device_id usb_quirk_list[] = {
|
|
||||||
/* Logitech Webcam B/C500 */
|
|
||||||
{ USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
|
|
||||||
+ /* Logitech Webcam C600 */
|
|
||||||
+ { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
||||||
+
|
|
||||||
/* Logitech Webcam Pro 9000 */
|
|
||||||
{ USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
|
|
|
@ -1,18 +1,18 @@
|
||||||
# Template file for 'kernel-rpi'
|
# Template file for 'kernel-rpi'
|
||||||
#
|
#
|
||||||
# Latest commit as of 20131009
|
# Latest commit as of 20131107
|
||||||
_githash="10bc582"
|
_githash="350ee7b"
|
||||||
|
|
||||||
pkgname=kernel-rpi
|
pkgname=kernel-rpi
|
||||||
version=3.6.11
|
version=3.10.18
|
||||||
revision=8
|
revision=1
|
||||||
maintainer="Juan RP <xtraeme@gmail.com>"
|
maintainer="Juan RP <xtraeme@gmail.com>"
|
||||||
homepage="http://www.kernel.org"
|
homepage="http://www.kernel.org"
|
||||||
license="GPL-2"
|
license="GPL-2"
|
||||||
short_desc="The Linux kernel and modules for the Raspberry Pi (3.6 series [git ${_githash}])"
|
short_desc="The Linux kernel and modules for the Raspberry Pi (3.10 series [git ${_githash}])"
|
||||||
|
|
||||||
_kernver="${version}_${revision}"
|
_kernver="${version}_${revision}"
|
||||||
hostmakedepends="perl python kmod>=11_2 uboot-mkimage"
|
hostmakedepends="perl python kmod>=11_2 uboot-mkimage openssl which elfutils bc"
|
||||||
makedepends="ncurses-devel"
|
makedepends="ncurses-devel"
|
||||||
only_for_archs="armv6l"
|
only_for_archs="armv6l"
|
||||||
|
|
||||||
|
@ -113,15 +113,6 @@ do_install() {
|
||||||
fi
|
fi
|
||||||
cp arch/arm/kernel/asm-offsets.s ${hdrdest}/arch/arm/kernel
|
cp arch/arm/kernel/asm-offsets.s ${hdrdest}/arch/arm/kernel
|
||||||
|
|
||||||
# add headers for lirc package
|
|
||||||
mkdir -p ${hdrdest}/drivers/media/video
|
|
||||||
cp drivers/media/video/*.h ${hdrdest}/drivers/media/video/
|
|
||||||
|
|
||||||
for i in bt8xx cpia2 cx25840 cx88 em28xx pwc saa7134 sn9c102; do
|
|
||||||
mkdir -p ${hdrdest}/drivers/media/video/${i}
|
|
||||||
cp -a drivers/media/video/${i}/*.h ${hdrdest}/drivers/media/video/${i}
|
|
||||||
done
|
|
||||||
|
|
||||||
# Add docbook makefile
|
# Add docbook makefile
|
||||||
install -Dm644 Documentation/DocBook/Makefile \
|
install -Dm644 Documentation/DocBook/Makefile \
|
||||||
${hdrdest}/Documentation/DocBook/Makefile
|
${hdrdest}/Documentation/DocBook/Makefile
|
||||||
|
@ -165,7 +156,7 @@ do_install() {
|
||||||
kernel-headers-rpi_package() {
|
kernel-headers-rpi_package() {
|
||||||
nostrip=yes
|
nostrip=yes
|
||||||
noverifyrdeps=yes
|
noverifyrdeps=yes
|
||||||
short_desc="Linux kernel headers for the RaspberryPI (3.6 series [${_githash}])"
|
short_desc="Linux kernel headers for the RaspberryPI (3.10 series [${_githash}])"
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
vmove usr/src
|
vmove usr/src
|
||||||
vmove usr/lib/modules/${_kernver}/build
|
vmove usr/lib/modules/${_kernver}/build
|
||||||
|
@ -175,7 +166,6 @@ kernel-headers-rpi_package() {
|
||||||
kernel-rpi_package() {
|
kernel-rpi_package() {
|
||||||
nostrip=yes
|
nostrip=yes
|
||||||
noverifyrdeps=yes
|
noverifyrdeps=yes
|
||||||
provides="kernel-${version}"
|
|
||||||
triggers="kernel-hooks"
|
triggers="kernel-hooks"
|
||||||
depends="kmod>=11_2"
|
depends="kmod>=11_2"
|
||||||
# These files could be modified when an external module is built.
|
# These files could be modified when an external module is built.
|
||||||
|
|
Loading…
Add table
Reference in a new issue