From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/6] misc: q8-hardwaremgr: Add accelerometer detection
Date: Fri, 14 Oct 2016 09:53:34 +0200 [thread overview]
Message-ID: <20161014075337.10452-4-hdegoede@redhat.com> (raw)
In-Reply-To: <20161014075337.10452-1-hdegoede@redhat.com>
Extend the q8-hardwaremgr with accelerometer detection.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
drivers/misc/Kconfig | 2 +-
drivers/misc/q8-hardwaremgr.c | 219 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 220 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index d6c1529..11b05b0 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -801,7 +801,7 @@ config Q8_HARDWAREMGR
default n
help
This option enables support for autodetecting the touchscreen
- on Allwinner Q8 tablets.
+ and accelerometer on Allwinner Q8 tablets.
If unsure, say N.
diff --git a/drivers/misc/q8-hardwaremgr.c b/drivers/misc/q8-hardwaremgr.c
index 346102d..8ed71a9 100644
--- a/drivers/misc/q8-hardwaremgr.c
+++ b/drivers/misc/q8-hardwaremgr.c
@@ -83,6 +83,48 @@ enum {
zet6251,
};
+#define DA280_REG_CHIP_ID 0x01
+#define DA280_CHIP_ID 0x13
+#define DA311_REG_CHIP_ID 0x0f
+#define DA311_CHIP_ID 0x13
+
+#define DMARD06_CHIP_ID_REG 0x0f
+#define DMARD05_CHIP_ID 0x05
+#define DMARD06_CHIP_ID 0x06
+#define DMARD07_CHIP_ID 0x07
+#define DMARD09_REG_CHIPID 0x18
+#define DMARD09_CHIPID 0x95
+#define DMARD10_REG_STADR 0x12
+#define DMARD10_REG_STAINT 0x1c
+#define DMARD10_VALUE_STADR 0x55
+#define DMARD10_VALUE_STAINT 0xaa
+
+#define MC3230_REG_CHIP_ID 0x18
+#define MC3230_CHIP_ID 0x01
+#define MMA7660_CHIP_ID 0x00 /* Factory reserved on MMA7660 */
+#define MC3230_REG_PRODUCT_CODE 0x3b
+#define MMA7660_PRODUCT_CODE 0x00 /* Factory reserved on MMA7660 */
+#define MC3210_PRODUCT_CODE 0x90
+#define MC3230_PRODUCT_CODE 0x19
+
+#define MXC6225_REG_CHIP_ID 0x08
+#define MXC6225_CHIP_ID 0x05
+
+enum {
+ accel_unknown,
+ da280,
+ da311,
+ dmard05,
+ dmard06,
+ dmard07,
+ dmard09,
+ dmard10,
+ mc3210,
+ mc3230,
+ mma7660,
+ mxc6225,
+};
+
struct q8_hardwaremgr_device {
int model;
int addr;
@@ -94,6 +136,7 @@ struct q8_hardwaremgr_data {
struct device *dev;
enum soc soc;
struct q8_hardwaremgr_device touchscreen;
+ struct q8_hardwaremgr_device accelerometer;
int touchscreen_variant;
int touchscreen_width;
int touchscreen_height;
@@ -411,6 +454,175 @@ static void q8_hardwaremgr_apply_touchscreen(struct q8_hardwaremgr_data *data)
of_node_put(np);
}
+static int q8_hardwaremgr_probe_mxc6225(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, MXC6225_REG_CHIP_ID);
+ /* Bits 7 - 5 of the chip-id register are undefined */
+ if (id >= 0 && (id & 0x1f) == MXC6225_CHIP_ID) {
+ data->accelerometer.compatible = "memsic,mxc6225";
+ data->accelerometer.model = mxc6225;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_mc3230(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id, pc = 0;
+
+ /* First check chip-id, then product-id */
+ id = i2c_smbus_read_byte_data(client, MC3230_REG_CHIP_ID);
+ if (id == MC3230_CHIP_ID || id == MMA7660_CHIP_ID) {
+ pc = i2c_smbus_read_byte_data(client, MC3230_REG_PRODUCT_CODE);
+ switch (pc) {
+ case MMA7660_PRODUCT_CODE:
+ data->accelerometer.compatible = "fsl,mma7660";
+ data->accelerometer.model = mma7660;
+ return 0;
+ case MC3210_PRODUCT_CODE:
+ data->accelerometer.compatible = "mcube,mc3210";
+ data->accelerometer.model = mc3210;
+ return 0;
+ case MC3230_PRODUCT_CODE:
+ data->accelerometer.compatible = "mcube,mc3230";
+ data->accelerometer.model = mc3230;
+ return 0;
+ case -ETIMEDOUT:
+ return -ETIMEDOUT; /* Bus stuck bail immediately */
+ }
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard06(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DMARD06_CHIP_ID_REG);
+ switch (id) {
+ case DMARD05_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard05";
+ data->accelerometer.model = dmard05;
+ return 0;
+ case DMARD06_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard06";
+ data->accelerometer.model = dmard06;
+ return 0;
+ case DMARD07_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard07";
+ data->accelerometer.model = dmard07;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard09(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DMARD09_REG_CHIPID);
+ if (id == DMARD09_CHIPID) {
+ data->accelerometer.compatible = "domintech,dmard09";
+ data->accelerometer.model = dmard09;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard10(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int stadr, staint = 0;
+
+ /* These 2 registers have special POR reset values used for id */
+ stadr = i2c_smbus_read_byte_data(client, DMARD10_REG_STADR);
+ if (stadr == DMARD10_VALUE_STADR) {
+ staint = i2c_smbus_read_byte_data(client, DMARD10_REG_STAINT);
+ switch (staint) {
+ case DMARD10_VALUE_STAINT:
+ data->accelerometer.compatible = "domintech,dmard10";
+ data->accelerometer.model = dmard10;
+ return 0;
+ case -ETIMEDOUT:
+ return -ETIMEDOUT; /* Bus stuck bail immediately */
+ }
+ }
+
+ return stadr == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_da280(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DA280_REG_CHIP_ID);
+ if (id == DA280_CHIP_ID) {
+ data->accelerometer.compatible = "miramems,da280";
+ data->accelerometer.model = da280;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_da311(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DA311_REG_CHIP_ID);
+ if (id == DA311_CHIP_ID) {
+ data->accelerometer.compatible = "miramems,da311";
+ data->accelerometer.model = da311;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_accelerometer(struct q8_hardwaremgr_data *data,
+ struct i2c_adapter *adap)
+{
+ PROBE_CLIENT(&data->accelerometer, 0x15, q8_hardwaremgr_probe_mxc6225);
+ PROBE_CLIENT(&data->accelerometer, 0x4c, q8_hardwaremgr_probe_mc3230);
+ PROBE_CLIENT(&data->accelerometer, 0x1c, q8_hardwaremgr_probe_dmard06);
+ PROBE_CLIENT(&data->accelerometer, 0x1d, q8_hardwaremgr_probe_dmard09);
+ PROBE_CLIENT(&data->accelerometer, 0x18, q8_hardwaremgr_probe_dmard10);
+ PROBE_CLIENT(&data->accelerometer, 0x26, q8_hardwaremgr_probe_da280);
+ PROBE_CLIENT(&data->accelerometer, 0x27, q8_hardwaremgr_probe_da311);
+
+ return -ENODEV;
+}
+
+static void q8_hardwaremgr_apply_accelerometer(struct q8_hardwaremgr_data *data)
+{
+ struct of_changeset cset;
+ struct device_node *np;
+
+ if (data->accelerometer.model == accel_unknown)
+ return;
+
+ np = q8_hardware_mgr_apply_common(&data->accelerometer, &cset,
+ "accelerometer");
+ if (!np)
+ return;
+
+ of_changeset_apply(&cset);
+
+ of_node_put(np);
+}
+
static int q8_hardwaremgr_do_probe(struct q8_hardwaremgr_data *data,
struct q8_hardwaremgr_device *dev,
const char *prefix, bus_probe_func func)
@@ -531,7 +743,14 @@ static int q8_hardwaremgr_probe(struct platform_device *pdev)
if (ret)
goto error;
+ ret = q8_hardwaremgr_do_probe(data, &data->accelerometer,
+ "accelerometer",
+ q8_hardwaremgr_probe_accelerometer);
+ if (ret)
+ goto error;
+
q8_hardwaremgr_apply_touchscreen(data);
+ q8_hardwaremgr_apply_accelerometer(data);
error:
kfree(data);
--
2.9.3
WARNING: multiple messages have this Message-ID (diff)
From: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>,
Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
Greg Kroah-Hartman
<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
Cc: Maxime Ripard
<maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>,
Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
devicetree <devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Subject: [PATCH 3/6] misc: q8-hardwaremgr: Add accelerometer detection
Date: Fri, 14 Oct 2016 09:53:34 +0200 [thread overview]
Message-ID: <20161014075337.10452-4-hdegoede@redhat.com> (raw)
In-Reply-To: <20161014075337.10452-1-hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
Extend the q8-hardwaremgr with accelerometer detection.
Signed-off-by: Hans de Goede <hdegoede-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
drivers/misc/Kconfig | 2 +-
drivers/misc/q8-hardwaremgr.c | 219 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 220 insertions(+), 1 deletion(-)
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index d6c1529..11b05b0 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -801,7 +801,7 @@ config Q8_HARDWAREMGR
default n
help
This option enables support for autodetecting the touchscreen
- on Allwinner Q8 tablets.
+ and accelerometer on Allwinner Q8 tablets.
If unsure, say N.
diff --git a/drivers/misc/q8-hardwaremgr.c b/drivers/misc/q8-hardwaremgr.c
index 346102d..8ed71a9 100644
--- a/drivers/misc/q8-hardwaremgr.c
+++ b/drivers/misc/q8-hardwaremgr.c
@@ -83,6 +83,48 @@ enum {
zet6251,
};
+#define DA280_REG_CHIP_ID 0x01
+#define DA280_CHIP_ID 0x13
+#define DA311_REG_CHIP_ID 0x0f
+#define DA311_CHIP_ID 0x13
+
+#define DMARD06_CHIP_ID_REG 0x0f
+#define DMARD05_CHIP_ID 0x05
+#define DMARD06_CHIP_ID 0x06
+#define DMARD07_CHIP_ID 0x07
+#define DMARD09_REG_CHIPID 0x18
+#define DMARD09_CHIPID 0x95
+#define DMARD10_REG_STADR 0x12
+#define DMARD10_REG_STAINT 0x1c
+#define DMARD10_VALUE_STADR 0x55
+#define DMARD10_VALUE_STAINT 0xaa
+
+#define MC3230_REG_CHIP_ID 0x18
+#define MC3230_CHIP_ID 0x01
+#define MMA7660_CHIP_ID 0x00 /* Factory reserved on MMA7660 */
+#define MC3230_REG_PRODUCT_CODE 0x3b
+#define MMA7660_PRODUCT_CODE 0x00 /* Factory reserved on MMA7660 */
+#define MC3210_PRODUCT_CODE 0x90
+#define MC3230_PRODUCT_CODE 0x19
+
+#define MXC6225_REG_CHIP_ID 0x08
+#define MXC6225_CHIP_ID 0x05
+
+enum {
+ accel_unknown,
+ da280,
+ da311,
+ dmard05,
+ dmard06,
+ dmard07,
+ dmard09,
+ dmard10,
+ mc3210,
+ mc3230,
+ mma7660,
+ mxc6225,
+};
+
struct q8_hardwaremgr_device {
int model;
int addr;
@@ -94,6 +136,7 @@ struct q8_hardwaremgr_data {
struct device *dev;
enum soc soc;
struct q8_hardwaremgr_device touchscreen;
+ struct q8_hardwaremgr_device accelerometer;
int touchscreen_variant;
int touchscreen_width;
int touchscreen_height;
@@ -411,6 +454,175 @@ static void q8_hardwaremgr_apply_touchscreen(struct q8_hardwaremgr_data *data)
of_node_put(np);
}
+static int q8_hardwaremgr_probe_mxc6225(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, MXC6225_REG_CHIP_ID);
+ /* Bits 7 - 5 of the chip-id register are undefined */
+ if (id >= 0 && (id & 0x1f) == MXC6225_CHIP_ID) {
+ data->accelerometer.compatible = "memsic,mxc6225";
+ data->accelerometer.model = mxc6225;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_mc3230(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id, pc = 0;
+
+ /* First check chip-id, then product-id */
+ id = i2c_smbus_read_byte_data(client, MC3230_REG_CHIP_ID);
+ if (id == MC3230_CHIP_ID || id == MMA7660_CHIP_ID) {
+ pc = i2c_smbus_read_byte_data(client, MC3230_REG_PRODUCT_CODE);
+ switch (pc) {
+ case MMA7660_PRODUCT_CODE:
+ data->accelerometer.compatible = "fsl,mma7660";
+ data->accelerometer.model = mma7660;
+ return 0;
+ case MC3210_PRODUCT_CODE:
+ data->accelerometer.compatible = "mcube,mc3210";
+ data->accelerometer.model = mc3210;
+ return 0;
+ case MC3230_PRODUCT_CODE:
+ data->accelerometer.compatible = "mcube,mc3230";
+ data->accelerometer.model = mc3230;
+ return 0;
+ case -ETIMEDOUT:
+ return -ETIMEDOUT; /* Bus stuck bail immediately */
+ }
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard06(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DMARD06_CHIP_ID_REG);
+ switch (id) {
+ case DMARD05_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard05";
+ data->accelerometer.model = dmard05;
+ return 0;
+ case DMARD06_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard06";
+ data->accelerometer.model = dmard06;
+ return 0;
+ case DMARD07_CHIP_ID:
+ data->accelerometer.compatible = "domintech,dmard07";
+ data->accelerometer.model = dmard07;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard09(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DMARD09_REG_CHIPID);
+ if (id == DMARD09_CHIPID) {
+ data->accelerometer.compatible = "domintech,dmard09";
+ data->accelerometer.model = dmard09;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_dmard10(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int stadr, staint = 0;
+
+ /* These 2 registers have special POR reset values used for id */
+ stadr = i2c_smbus_read_byte_data(client, DMARD10_REG_STADR);
+ if (stadr == DMARD10_VALUE_STADR) {
+ staint = i2c_smbus_read_byte_data(client, DMARD10_REG_STAINT);
+ switch (staint) {
+ case DMARD10_VALUE_STAINT:
+ data->accelerometer.compatible = "domintech,dmard10";
+ data->accelerometer.model = dmard10;
+ return 0;
+ case -ETIMEDOUT:
+ return -ETIMEDOUT; /* Bus stuck bail immediately */
+ }
+ }
+
+ return stadr == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_da280(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DA280_REG_CHIP_ID);
+ if (id == DA280_CHIP_ID) {
+ data->accelerometer.compatible = "miramems,da280";
+ data->accelerometer.model = da280;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_da311(struct q8_hardwaremgr_data *data,
+ struct i2c_client *client)
+{
+ int id;
+
+ id = i2c_smbus_read_byte_data(client, DA311_REG_CHIP_ID);
+ if (id == DA311_CHIP_ID) {
+ data->accelerometer.compatible = "miramems,da311";
+ data->accelerometer.model = da311;
+ return 0;
+ }
+
+ return id == -ETIMEDOUT ? -ETIMEDOUT : -ENODEV;
+}
+
+static int q8_hardwaremgr_probe_accelerometer(struct q8_hardwaremgr_data *data,
+ struct i2c_adapter *adap)
+{
+ PROBE_CLIENT(&data->accelerometer, 0x15, q8_hardwaremgr_probe_mxc6225);
+ PROBE_CLIENT(&data->accelerometer, 0x4c, q8_hardwaremgr_probe_mc3230);
+ PROBE_CLIENT(&data->accelerometer, 0x1c, q8_hardwaremgr_probe_dmard06);
+ PROBE_CLIENT(&data->accelerometer, 0x1d, q8_hardwaremgr_probe_dmard09);
+ PROBE_CLIENT(&data->accelerometer, 0x18, q8_hardwaremgr_probe_dmard10);
+ PROBE_CLIENT(&data->accelerometer, 0x26, q8_hardwaremgr_probe_da280);
+ PROBE_CLIENT(&data->accelerometer, 0x27, q8_hardwaremgr_probe_da311);
+
+ return -ENODEV;
+}
+
+static void q8_hardwaremgr_apply_accelerometer(struct q8_hardwaremgr_data *data)
+{
+ struct of_changeset cset;
+ struct device_node *np;
+
+ if (data->accelerometer.model == accel_unknown)
+ return;
+
+ np = q8_hardware_mgr_apply_common(&data->accelerometer, &cset,
+ "accelerometer");
+ if (!np)
+ return;
+
+ of_changeset_apply(&cset);
+
+ of_node_put(np);
+}
+
static int q8_hardwaremgr_do_probe(struct q8_hardwaremgr_data *data,
struct q8_hardwaremgr_device *dev,
const char *prefix, bus_probe_func func)
@@ -531,7 +743,14 @@ static int q8_hardwaremgr_probe(struct platform_device *pdev)
if (ret)
goto error;
+ ret = q8_hardwaremgr_do_probe(data, &data->accelerometer,
+ "accelerometer",
+ q8_hardwaremgr_probe_accelerometer);
+ if (ret)
+ goto error;
+
q8_hardwaremgr_apply_touchscreen(data);
+ q8_hardwaremgr_apply_accelerometer(data);
error:
kfree(data);
--
2.9.3
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-10-14 7:53 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-14 7:53 Add Allwinner Q8 tablets hardware manager Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-14 7:53 ` [PATCH 1/6] dt: bindings: Add Allwinner Q8 tablets hardware manager bindings Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-26 20:39 ` Rob Herring
2016-10-26 20:39 ` Rob Herring
2016-10-14 7:53 ` [PATCH 2/6] misc: Add Allwinner Q8 tablet hardware manager Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-14 7:53 ` Hans de Goede [this message]
2016-10-14 7:53 ` [PATCH 3/6] misc: q8-hardwaremgr: Add accelerometer detection Hans de Goede
2016-10-14 7:53 ` [PATCH 4/6] misc: q8-hardwaremgr: Add rda599x wift/bt/fm radio combo detection Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-14 7:53 ` [PATCH 5/6] misc: q8-hardwaremgr: Better touchscreen defaults based on heuristics Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-14 7:53 ` [PATCH 6/6] misc: q8-hardwaremgr: Add quirk handling Hans de Goede
2016-10-14 7:53 ` Hans de Goede
2016-10-24 17:39 ` Add Allwinner Q8 tablets hardware manager Mark Rutland
2016-10-24 17:39 ` Mark Rutland
2016-10-26 11:46 ` Hans de Goede
2016-10-26 11:46 ` Hans de Goede
[not found] ` <CAJ-oXjQbOkrkNToEXYmPUZOgYBGbxQREZ4NL4bMcZmG=KP2vQQ@mail.gmail.com>
2016-10-27 9:14 ` Hans de Goede
2016-10-27 9:14 ` Hans de Goede
2016-10-27 12:57 ` Pierre-Hugues Husson
2016-10-27 12:57 ` Pierre-Hugues Husson
2016-10-27 14:53 ` Hans de Goede
2016-10-27 14:53 ` Hans de Goede
2016-10-27 16:27 ` Pantelis Antoniou
2016-10-27 16:27 ` Pantelis Antoniou
2016-10-27 17:31 ` Pierre-Hugues Husson
2016-10-27 17:31 ` Pierre-Hugues Husson
2016-10-27 21:15 ` Hans de Goede
2016-10-27 21:15 ` Hans de Goede
2016-10-27 15:52 ` Pantelis Antoniou
2016-10-27 15:52 ` Pantelis Antoniou
2016-10-27 16:59 ` Pierre-Hugues Husson
2016-10-27 16:59 ` Pierre-Hugues Husson
2016-10-27 17:11 ` Pantelis Antoniou
2016-10-27 17:11 ` Pantelis Antoniou
2016-10-27 19:04 ` Pierre-Hugues Husson
2016-10-27 19:04 ` Pierre-Hugues Husson
2016-10-27 19:23 ` Pantelis Antoniou
2016-10-27 19:23 ` Pantelis Antoniou
2016-10-27 21:10 ` Hans de Goede
2016-10-27 21:10 ` Hans de Goede
2016-10-26 20:54 ` Rob Herring
2016-10-26 20:54 ` Rob Herring
2016-10-27 8:10 ` Pierre-Hugues Husson
2016-10-27 8:10 ` Pierre-Hugues Husson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161014075337.10452-4-hdegoede@redhat.com \
--to=hdegoede@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.