Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp3250079imm; Mon, 13 Aug 2018 08:25:19 -0700 (PDT) X-Google-Smtp-Source: AA+uWPxw+iN4OqvejjqkPZchJsJ3F90dGrOmzHUbLCgnUiOGlkLwwFIv1/axr6m91ilwFEnjI8Yj X-Received: by 2002:a17:902:8a4:: with SMTP id 33-v6mr17275835pll.82.1534173919587; Mon, 13 Aug 2018 08:25:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534173919; cv=none; d=google.com; s=arc-20160816; b=HEm1xBj0A1swiE8mePo6WQH22dCi4Pg61Dn6iQZI6ItNCnr+/XNmxT1/ami2YLXbjT Gth+bC6Ga/Zz8YroqTjwWtfZOHfnRO0G9MBhJLcfSsnPHgUiXZMFYBqXzeAQq4LC55WW WVDLwlNcUBfaxywzlSSGcoaZMvMfJ4Hwgy5eytG9Xq02r5/jrV1w2ouy5140wHjYeneB uN1GnZ3ND7HibMooS35JxfWh95Z6MAn8oGJdbMF+7bbbr3Z7CGIyL1wS35eM389TK22T KMyVijEjd0xUytSmI9ofADJFzy3yQj82XXB/6Sb/pTsJyYgzUboUDwQ2p3SnwM8+4ng2 IHdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :organization:references:in-reply-to:message-id:subject:cc:to:from :date:arc-authentication-results; bh=kd5O6xvgizgdJyAESbTbdn+Oy+wadkxTs+8N14hU1dc=; b=uUkvWP+VDkQNCvGbkHLw4vtWWsKIDZLp74NOVEIvlyjIoKnoG1QvMh3T9TuCZz7qnD fYvU1Ncad48Zkey4elplhBXjzO03HhRU2DPsh8vOgBXP8seyZ1ma5eC33nIT7xGgOWQn ztV3DDIJNxWUvlaaXKS3QW4qVEy0/xdZXy923FpbZ285CaRjYzud7hCifGdwzAkzT+Xm Nq8i3W6K6y4tBJrlJX3hb9QtmlSTaEr3l4U4GF/jjUOKcGlual4b1yuRW8p85dl8/4XW AHsgolxHC/xWzM81U+VQJBVldjlrodBrvX88y4z32LhQZhiGjPkv37DpIPCyf2sOWR5a qh2w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a16-v6si17752430pga.168.2018.08.13.08.25.04; Mon, 13 Aug 2018 08:25:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730066AbeHMSGx convert rfc822-to-8bit (ORCPT + 99 others); Mon, 13 Aug 2018 14:06:53 -0400 Received: from mail.bootlin.com ([62.4.15.54]:32923 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728293AbeHMSGw (ORCPT ); Mon, 13 Aug 2018 14:06:52 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id F215D207F3; Mon, 13 Aug 2018 17:24:07 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from dell-desktop.home (AAubervilliers-681-1-43-114.w90-88.abo.wanadoo.fr [90.88.161.114]) by mail.bootlin.com (Postfix) with ESMTPSA id AD3A920787; Mon, 13 Aug 2018 17:23:57 +0200 (CEST) Date: Mon, 13 Aug 2018 17:23:58 +0200 From: =?UTF-8?B?TXlsw6huZQ==?= Josserand To: Dmitry Torokhov Cc: robh+dt@kernel.org, mark.rutland@arm.com, mylene.josserand@free-electrons.com, thomas.petazzoni@free-electrons.com, maxime.ripard@free-electrons.com, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH v6 0/2] Input: Add Cypress Gen5 Touchscreen driver Message-ID: <20180813172358.71912d55@dell-desktop.home> In-Reply-To: <20180724174053.GA61165@dtor-ws> References: <20180703094309.18514-1-mylene.josserand@bootlin.com> <20180704162158.euiw2v3hyv3hzofn@penguin> <20180724150046.7d70786c@dell-desktop.home> <20180724174053.GA61165@dtor-ws> Organization: Bootlin X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Dmitry, On Tue, 24 Jul 2018 10:40:53 -0700 Dmitry Torokhov wrote: > Hi Mylène, > > On Tue, Jul 24, 2018 at 03:00:46PM +0200, Mylène Josserand wrote: > > Hello Dmitry, > > > > On Wed, 4 Jul 2018 16:21:58 +0000 > > Dmitry Torokhov wrote: > > > > > Hi Mylène, > > > > > > On Tue, Jul 03, 2018 at 11:43:07AM +0200, Mylène Josserand wrote: > > > > Hello, > > > > > > > > Here is a V6 series to add the driver of the touchscreen Cypress, > > > > TrueTouch Generation 5. > > > > Based on v4.18-rc3. > > > > > > > > This patch series has already been posted in several iterations: > > > > - v1: Sent on 2017/05/29 > > > > - v2: Sent on 2017/08/18 > > > > - v3: Sent on 2017/09/27 > > > > - v4: Sent on 2017/12/01 > > > > - v5: Sent on 2017/12/20 > > > > > > > > I did not have any comments the last 4 versions. > > > > And no reviews on my v5 during 6 months. Could I have any updates > > > > or feedback on my series to know why it is not merged (to be able to > > > > correct what is wrong)? > > > > > > Sorry, I must have missed the v5, sorry about that. > > > > > > I probably asked this question before, but just to make sure - I see > > > references to HID in the patch - the device is really not HID > > > compatible? Is there any hope it could be made work with i2c-hid + > > > hid-multitouch? > > > > > > Thanks. > > > > > > > I have checked and, for what I have seen, all the HID descriptor stuff > > is HID compliant. We could definitely use i2c-hid and hid-multitouch > > (there is the "hid-cypress" driver that exists also). > > > > The only problem is that this touchscreen has two modes: a bootloader > > mode and an application mode (which is the one where we can send > > HID commands). After a power-on-reset, it is always in "bootloader" > > mode so we need to send some commands (called "bootloader commands") to > > switch to application mode. > > Is this a documented or observed behavior? In my practice devices (I am > talking in general, not about Cypress) that have proper configuration > loaded and that were brought up with appropriate power up sequence and > timings automatically switch to application mode. They only end up in > bootloader mode when proper power up sequence is not respected and they > are unhappy. I have checked and indeed, if everything is correctly performed, the bootloader has a timeout to switch to application mode. The datasheet says that this timeout can be configured and the "0" value means that the bootloader will never automatically switch to application unless a bootloader command is sent. In our case, you were right, after a timeout, the touchscreen is correctly switching to Application mode. Great news! > > > These commands are not HID-compliant as the > > datasheet indicates: > > > > "Bootloader commands are not HID-over-I2C compliant." > > Any chance you could share the datasheet? Sorry, it is not possible, the datasheet is under NDA :( > > > > > I think that if the touchscreen would start directly in "application" > > mode, we could directly use i2c-hid and hid-cypress drivers. > > Unfortunately, this is not the case. > > > > In bootloader mode, the ProductID is 0xc101 and in application mode, it > > is 0xc001 (already available in hid-ids.h: > > USB_DEVICE_ID_CYPRESS_TRUETOUCH but not handled) > > > > What would be the better approach here? > > Should I add a new product ID to detect the bootloader mode in > > hid-cypress driver and send non-HID commands to switch to > > "application" mode in this driver? > > Anyway, I guess that I will drop this cyttsp5 driver and update the > > existing one, right? > > So it still accessible through HID, even when in bootloader mode? OK, > then I guess there are 2 options: > > - if device is documented to always start in bootloader mode, you could > have a small stub driver that switches it into application mode in its > probe() code. The "bootloader" device will disappear and > "application" device will appear, and standard driver (hid-multitouch) > will bind to it. Okay, I see. In our case, we do not have the timeout to 0 as after a moment, the application mode is automatically switched. > > - if device supposed to come up in application mode unless configuration > is damaged: I'd recommend doing what we do on Chrome OS and have some > userspace software that runs on boot (or whenever device is > discovered) and check if it has the latest firmware/configuration, and > repair device if needed. I see. I tried to make the i2d-hid & hid-cypress working. This is not successful for the moment because I can not retrieve the correct bcdVersion. While debugging, I have noticed that the HID descriptors don't seem to be exactly the same: under i2c-hid.c: struct i2c_hid_desc { __le16 wHIDDescLength; __le16 bcdVersion; __le16 wReportDescLength; __le16 wReportDescRegister; __le16 wInputRegister; __le16 wMaxInputLength; __le16 wOutputRegister; __le16 wMaxOutputLength; __le16 wCommandRegister; __le16 wDataRegister; __le16 wVendorID; __le16 wProductID; __le16 wVersionID; __le32 reserved; } __packed; whereas in my driver, I have: struct cyttsp5_hid_desc { __le16 hid_desc_len; u8 packet_id; <-- Different u8 reserved_byte; <-- Different __le16 bcd_version; __le16 report_desc_len; __le16 report_desc_register; __le16 input_register; __le16 max_input_len; __le16 output_register; __le16 max_output_len; __le16 command_register; __le16 data_register; __le16 vendor_id; __le16 product_id; __le16 version_id; u8 reserved[4]; } __packed; Have you already seen devices that are "HID compatible" with a different HID descriptor's content like this? Thank you in advance, Best regards, -- Mylène Josserand, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering https://bootlin.com