On Wed, Oct 9, 2013 at 12:26 PM, Jiri Kosina <jkosina@xxxxxxx> wrote: > On Thu, 3 Oct 2013, Bibek Basu wrote: > >> Some HID device does not responds to INPUT/FEATURE >> report query during initialization. As a result HID driver >> throws error even when its not mandatory according to the >> HID specification. Add platform data to provide >> quirk information to the driver so that init query is not >> done on such devices. >> >> Signed-off-by: Bibek Basu <bbasu@xxxxxxxxxx> >> --- >> drivers/hid/i2c-hid/i2c-hid.c | 1 + >> include/linux/i2c/i2c-hid.h | 3 ++- >> 2 files changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c >> index fd7ce37..a7aec2c 100644 >> --- a/drivers/hid/i2c-hid/i2c-hid.c >> +++ b/drivers/hid/i2c-hid/i2c-hid.c >> @@ -1017,6 +1017,7 @@ static int i2c_hid_probe(struct i2c_client *client, >> hid->version = le16_to_cpu(ihid->hdesc.bcdVersion); >> hid->vendor = le16_to_cpu(ihid->hdesc.wVendorID); >> hid->product = le16_to_cpu(ihid->hdesc.wProductID); >> + hid->quirks = platform_data->quirks; >> >> snprintf(hid->name, sizeof(hid->name), "%s %04hX:%04hX", >> client->name, hid->vendor, hid->product); >> diff --git a/include/linux/i2c/i2c-hid.h b/include/linux/i2c/i2c-hid.h >> index 7aa901d..12e682d 100644 >> --- a/include/linux/i2c/i2c-hid.h >> +++ b/include/linux/i2c/i2c-hid.h >> @@ -17,7 +17,7 @@ >> /** >> * struct i2chid_platform_data - used by hid over i2c implementation. >> * @hid_descriptor_address: i2c register where the HID descriptor is stored. >> - * >> + * @quirks: quirks, if any for i2c-hid devices >> * Note that it is the responsibility of the platform driver (or the acpi 5.0 >> * driver, or the flattened device tree) to setup the irq related to the gpio in >> * the struct i2c_board_info. >> @@ -31,6 +31,7 @@ >> */ >> struct i2c_hid_platform_data { >> u16 hid_descriptor_address; >> + u32 quirks; >> }; > Hi Jiri, > Umm, and where does the quirks field of platform data actually get set? I > don't seem to see any followup patchset doing that? The platform data is filled by specific march-* board definition data. In this case some I would say a tegra board. So it's fine not having a patchset setting the quirk (as it is per board, and maybe per version/manufacturer). Other than that I would love seeing the same for the device tree binding if we add this to the struct i2c_hid_platform_data. BTW, Jiri, the aim of the patch was to be able to add the quirk HID_QUIRK_NO_INIT_INPUT_REPORTS to some of the i2c-hid devices. However, the Windows driver uses this by default, so I already told to Bibek that we could just drop the related calls in i2c_hid_init_reports(). Cheers, Benjamin -- To unsubscribe from this list: send the line "unsubscribe linux-tegra" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html