Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp32196pxb; Fri, 15 Jan 2021 07:02:54 -0800 (PST) X-Google-Smtp-Source: ABdhPJxSanvvWYrEoZM4xg+2AFVpyFkbtmBynWzp11KJ5q23og6B4TvOWbz/tbHtNDzuTOLgOHDF X-Received: by 2002:a17:906:4058:: with SMTP id y24mr8824877ejj.245.1610722974053; Fri, 15 Jan 2021 07:02:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610722974; cv=none; d=google.com; s=arc-20160816; b=iIM+NTYG26rQXFCtbW3470Mwx7tjMOy+YIYQFFjzrhecVm/3k1prcJCjomgoGL8Ucr 9gnKj7aQBoTb1B0mpDhYn6ggu9BpYUhlMiO1X7e1TYWQhbJ6xMYef8DaOXUWwyoNcZDs jTFSuBKAAPZ3zrwRcO+VJMBeBfMzJUVU6ZSkRastc6DmPTz6VsenhWtkVyokPFqyzEOY geCmieYFQXU4fm1Kf3Tk3HXXCcXLHwKG5ySgQ38wY8InqUp7vOH24VSEsJqAd4JGISUS Iip2HYoqK7fPHzL2qYmL1oXau2s04yExY7OCyA02I1DGtDdVrl2d1EkaSPstVodAlos+ Ed3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:references:cc :to:subject:from:dkim-signature; bh=dmVQjQTpqOnD4r9o3Q6+/fS9ZXoOCu6z+q20+s/vvWQ=; b=e677Raq9uB8mA+mv3dqyHtUZvNspQl1hNDZp9vGz2/LcQpUtcKKDc4oqnl4vNWFwFj jGljiajtGzfC9TK8Hiaqht94CSN/K7vif7EOoBlANvfeBeC0nnbCKMnJ4OwIPi+f1T1z 6QTa3KyUNXGVPF8gwQP5FLic5f7U0XR5rtfInlpfRkxiHHBFuMmAR54Cwol4NNODHZGz eefiQ4G9R+ffhynVwhKZa/HTStElISWAk3rKUH7yBVjoO6tJQXqbTlGhnmFDjb0s25in v4sLwv9PVoeVdwJxRjugy111jEUfPa6CJmOLBcOZoH1VwivH6+5hcPVznQraAKBF7yNi FMrg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QH75kkNU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h6si426586ejq.244.2021.01.15.07.02.26; Fri, 15 Jan 2021 07:02:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=QH75kkNU; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732257AbhAOO77 (ORCPT + 99 others); Fri, 15 Jan 2021 09:59:59 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:27410 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731503AbhAOO7y (ORCPT ); Fri, 15 Jan 2021 09:59:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1610722707; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=dmVQjQTpqOnD4r9o3Q6+/fS9ZXoOCu6z+q20+s/vvWQ=; b=QH75kkNUjnFtmHIIAnk1g5yTdMJo0KL0iIzcAuux4a77OpfG8gGALAvTJeogWJxk77+1LD ZtQ5oSEyrbE9XSsjxVZP5rNEPuyibBv/BMPGdZjmGkKk6Wxgj0sXfo5FLVC5bh+ft/lqMw qhwKXS+fpj342daF/MzD0fZLwA3MkM8= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-453-rgGdeWj0MmifTgpM8s-7vQ-1; Fri, 15 Jan 2021 09:58:25 -0500 X-MC-Unique: rgGdeWj0MmifTgpM8s-7vQ-1 Received: by mail-wr1-f72.google.com with SMTP id j5so4267585wro.12 for ; Fri, 15 Jan 2021 06:58:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:subject:to:cc:references:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=dmVQjQTpqOnD4r9o3Q6+/fS9ZXoOCu6z+q20+s/vvWQ=; b=DUzFz/DxVzITpoyKx5JvwkY63zgC0nXdYdUw3emUF6Y13QWL9FeNvNYJ2BINzGK+5/ 6Lb3q9JYQD2Ewe7q/juVvBH1APG0J7JdY3Ez1K1pLR5fZm7HwzSyqKaVRA34J7RQgTi7 bYo5xxyBLq9ZLAV5Abv7aJP7XVbF2zm9THIMZdEK9U/mjGdUuZ5EWqTZbRmDwEb237ZB 9Gu2O48Neq9g6X4JteQ9v679K6qbb0aX9e6Qi3O65Q2BmUysymZ1fuDAi315atdS3npU DxEkTEKHaTXTlgD9LnyHaWw8zN5x0Idchp58uRbFBgU4utXSSt4lxZ9pUW32XCEVMD2A jucg== X-Gm-Message-State: AOAM531t5oXp81Q9BL5Veojuhsj22mkjyxb2p6sNbYzKgFnHu4QFPG8B 2lyL4fzMlkYjuKW9jueVRegT66QMVimW10d09FJZegc1SWMn7kRNLsPdypyyKRrb8YEQsjKjSD6 SihAotDxeD3PQzySVHApMnNXYX4f2znt4W+8tgk0vMdE/hCy8tShaQ5/T2ph5vGqawp9wmI76n6 qMQYa6Ne4P7OWz4Q== X-Received: by 2002:a1c:e255:: with SMTP id z82mr1118491wmg.60.1610722704235; Fri, 15 Jan 2021 06:58:24 -0800 (PST) X-Received: by 2002:a1c:e255:: with SMTP id z82mr1118429wmg.60.1610722703896; Fri, 15 Jan 2021 06:58:23 -0800 (PST) Received: from ?IPv6:2a01:e34:eea6:7961::e71? ([2a01:e34:eea6:7961::e71]) by smtp.gmail.com with ESMTPSA id f14sm15410402wre.69.2021.01.15.06.58.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 15 Jan 2021 06:58:23 -0800 (PST) From: Benjamin Tissoires Subject: Re: [PATCH v8 0/4] HID: i2c-hid: Reorganize to allow supporting goodix,gt7375p To: Doug Anderson Cc: Jiri Kosina , Greg Kroah-Hartman , Dmitry Torokhov , Hans de Goede , "open list:HID CORE LAYER" , Kai-Heng Feng , Rob Herring , Stephen Boyd , Andrea Borgia , Anson Huang , Bjorn Andersson , Catalin Marinas , Daniel Playfair Cal , Geert Uytterhoeven , =?UTF-8?Q?Guido_G=c3=bcnther?= , Jiri Kosina , Li Yang , Masahiro Yamada , Max Krummenacher , Michael Walle , Pavel Balan , Shawn Guo , Vinod Koul , Will Deacon , Xiaofei Tan , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux ARM , LKML References: <20201211222448.2115188-1-dianders@chromium.org> Message-ID: Date: Fri, 15 Jan 2021 15:58:20 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Wed, Jan 13, 2021 at 8:35 PM Benjamin Tissoires wrote: > > On Wed, Jan 13, 2021 at 5:05 PM Doug Anderson wrote: > > > > Hi, > > > > On Wed, Jan 13, 2021 at 7:09 AM Benjamin Tissoires > > wrote: > > > > > > > I wanted to apply the series yesterday, but for these kinds of changes > > > > I like giving it a spin on actual hardware. Turns out that my XPS-13 > > > > can not boot to v5.11-rc2, which makes testing the new branch slightly > > > > more difficult. > > > > > > > > I'll give it a spin next week, but I think I should be able to land it for 5.12. > > > > > > > > Regarding the defconfig conflict, no worries, we can handle it with > > > > Stephen and Linus. > > > > > > > > > > After 2 full kernel bisects (I messed up the first because I am an > > > idiot and inverted good and bad after the first reboot), I found my > > > culprit, and I was able to test the series today. > > > > > > The series works fine regarding enumeration and removing of devices, > > > but it prevents my system from being suspended. If I rmmod > > > i2c-hid-acpi, suspend works fine, but if it is present, it immediately > > > comes back, which makes me think that something must be wrong. > > > > > > I also just reverted the series and confirmed that suspend/resume now > > > works, meaning that patch 1/4 needs to be checked. > > > > Can you give me any hints about what type of failure you're seeing? > > Any logs? I don't have an ACPI system to test with... > > I don't have any logs, just that the system comes back up. There is a > chance we are not powering the device down correctly, which triggers > an IRQ and which puts the system back on. > > > > > Is there any chance that some type of userspace / udev rule is getting > > tripped up by the driver being renamed? We ran into something like > > this recently on Chrome OS where we had a tool that was hardcoded to > > look for "i2c-hid" and needed to be adapted to account for the new > > driver name. Often userspace tweaks with wakeup rules based on driver > > name... > > I don't think there is anything like that on a regular desktop. > > > > > I'll go stare at the code now and see if anything jumps out. > > > > Thanks, but don't spend too much time on it, unless something really > jumps out. I'll debug that tomorrow. It's much easier with an actual > device than by just looking at the code. > Well, that's weird. Now suspend resume works reliably even with your series. It could just have been that the lid sensor was too close to a magnet or something like that. Though while testing the old version of i2c-hid, it was working... Such a mystery :) Anyway, while trying to dig up that now-non-issue, I got the following patch that you likely want to squash into 1/4: --- diff --git a/drivers/hid/i2c-hid/i2c-hid-acpi.c b/drivers/hid/i2c-hid/i2c-hid-acpi.c index 0f86060f01b4..dd6d9f74e7e7 100644 --- a/drivers/hid/i2c-hid/i2c-hid-acpi.c +++ b/drivers/hid/i2c-hid/i2c-hid-acpi.c @@ -31,7 +31,6 @@ struct i2c_hid_acpi { struct i2chid_ops ops; struct i2c_client *client; - bool power_fixed; }; static const struct acpi_device_id i2c_hid_acpi_blacklist[] = { @@ -75,25 +74,6 @@ static int i2c_hid_acpi_get_descriptor(struct i2c_client *client) return hid_descriptor_address; } -static int i2c_hid_acpi_power_up(struct i2chid_ops *ops) -{ - struct i2c_hid_acpi *ihid_of = - container_of(ops, struct i2c_hid_acpi, ops); - struct device *dev = &ihid_of->client->dev; - struct acpi_device *adev; - - /* Only need to call acpi_device_fix_up_power() the first time */ - if (ihid_of->power_fixed) - return 0; - ihid_of->power_fixed = true; - - adev = ACPI_COMPANION(dev); - if (adev) - acpi_device_fix_up_power(adev); - - return 0; -} - static void i2c_hid_acpi_shutdown_tail(struct i2chid_ops *ops) { struct i2c_hid_acpi *ihid_of = @@ -107,6 +87,7 @@ static int i2c_hid_acpi_probe(struct i2c_client *client, { struct device *dev = &client->dev; struct i2c_hid_acpi *ihid_acpi; + struct acpi_device *adev; u16 hid_descriptor_address; int ret; @@ -115,7 +96,6 @@ static int i2c_hid_acpi_probe(struct i2c_client *client, return -ENOMEM; ihid_acpi->client = client; - ihid_acpi->ops.power_up = i2c_hid_acpi_power_up; ihid_acpi->ops.shutdown_tail = i2c_hid_acpi_shutdown_tail; ret = i2c_hid_acpi_get_descriptor(client); @@ -123,6 +103,10 @@ static int i2c_hid_acpi_probe(struct i2c_client *client, return ret; hid_descriptor_address = ret; + adev = ACPI_COMPANION(dev); + if (adev) + acpi_device_fix_up_power(adev); + if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0) { device_set_wakeup_capable(dev, true); device_set_wakeup_enable(dev, false); --- This allows to keep the powering ordering of the old i2c-hid module (power up before setting device wakeup capable), and simplify the not so obvious power_fixed field of struct i2c_hid_acpi. (I can also send it as a followup on the series if you prefer). Cheers, Benjamin