From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 90F81C43461 for ; Thu, 15 Apr 2021 08:36:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6BA8F601FD for ; Thu, 15 Apr 2021 08:36:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231664AbhDOIg2 (ORCPT ); Thu, 15 Apr 2021 04:36:28 -0400 Received: from mail.loongson.cn ([114.242.206.163]:57206 "EHLO loongson.cn" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230090AbhDOIg1 (ORCPT ); Thu, 15 Apr 2021 04:36:27 -0400 Received: from localhost.localdomain (unknown [10.40.54.95]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Dxr+_n+ndg9zsIAA--.1292S3; Thu, 15 Apr 2021 16:35:56 +0800 (CST) Subject: Re: [PATCH] ACPICA: Events: support fixed pcie wake event To: "Moore, Robert" , "Kaneda, Erik" , "Wysocki, Rafael J" , Len Brown References: <1617278736-7400-1-git-send-email-lvjianmin@loongson.cn> Cc: "linux-acpi@vger.kernel.org" , "devel@acpica.org" , "linux-kernel@vger.kernel.org" From: Jianmin Lv Message-ID: <4385b7c8-5f3b-99a5-e584-660e4555ec3b@loongson.cn> Date: Thu, 15 Apr 2021 04:35:51 -0400 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID: AQAAf9Dxr+_n+ndg9zsIAA--.1292S3 X-Coremail-Antispam: 1UD129KBjvJXoWxAFyrAF1xAry8XFyrXF15XFb_yoWrCw4DpF 9I9aySkr4UtF4I9anrtw1UuFyYgay8Cry7CF4qg347ZF4DCr1rWF4qgF1DGFZ8Cwsxua1I ya4DKFyUKay5XFJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvYb7Iv0xC_KF4lb4IE77IF4wAFF20E14v26r4j6ryUM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwV C2z280aVCY1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC 0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr 1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21l c2xSY4AK6svPMxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I 8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUAVWU twCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x 0267AKxVWUJVW8JwCI42IY6xAIw20EY4v20xvaj40_WFyUJVCq3wCI42IY6I8E87Iv67AK xVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07 j04E_UUUUU= X-CM-SenderInfo: 5oymxthqpl0qxorr0wxvrqhubq/ Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org Hi, Bob Thanks for your reply! I have submitted V2 in which related description in ACPI spec are added, please review it. See V2 at: https://lore.kernel.org/linux-acpi/1617335733-5942-1-git-send-email-lvjianmin@loongson.cn/T/#u Thanks sincerely! On 04/01/2021 04:56 PM, Moore, Robert wrote: > Can you send/point us to the spec that this change is based upon? > Thanks, > Bob > > > -----Original Message----- > From: Jianmin Lv > Sent: Thursday, April 01, 2021 5:06 AM > To: Moore, Robert ; Kaneda, Erik ; Wysocki, Rafael J ; Len Brown > Cc: linux-acpi@vger.kernel.org; devel@acpica.org; linux-kernel@vger.kernel.org; lvjianmin > Subject: [PATCH] ACPICA: Events: support fixed pcie wake event > > From: lvjianmin > > Some chipsets support fixed pcie wake event which is defined in the PM1 block, such as LS7A1000 of Loongson company, so we add code to handle it. > > Signed-off-by: lvjianmin > > diff --git a/drivers/acpi/acpica/evevent.c b/drivers/acpi/acpica/evevent.c index 35385148fedb..08ba368beb2d 100644 > --- a/drivers/acpi/acpica/evevent.c > +++ b/drivers/acpi/acpica/evevent.c > @@ -185,6 +185,10 @@ u32 acpi_ev_fixed_event_detect(void) > return (int_status); > } > > + if (fixed_enable & ACPI_BITMASK_PCIEXP_WAKE_DISABLE) > + fixed_enable &= ~ACPI_BITMASK_PCIEXP_WAKE_DISABLE; > + else > + fixed_enable |= ACPI_BITMASK_PCIEXP_WAKE_DISABLE; > ACPI_DEBUG_PRINT((ACPI_DB_INTERRUPTS, > "Fixed Event Block: Enable %08X Status %08X\n", > fixed_enable, fixed_status)); > @@ -250,8 +254,8 @@ static u32 acpi_ev_fixed_event_dispatch(u32 event) > if (!acpi_gbl_fixed_event_handlers[event].handler) { > (void)acpi_write_bit_register(acpi_gbl_fixed_event_info[event]. > enable_register_id, > - ACPI_DISABLE_EVENT); > - > + event == ACPI_EVENT_PCIE_WAKE ? > + ACPI_ENABLE_EVENT : ACPI_DISABLE_EVENT); > ACPI_ERROR((AE_INFO, > "No installed handler for fixed event - %s (%u), disabling", > acpi_ut_get_event_name(event), event)); diff --git a/drivers/acpi/acpica/hwsleep.c b/drivers/acpi/acpica/hwsleep.c index 14baa13bf848..7e7ea4c2e914 100644 > --- a/drivers/acpi/acpica/hwsleep.c > +++ b/drivers/acpi/acpica/hwsleep.c > @@ -312,6 +312,18 @@ acpi_status acpi_hw_legacy_wake(u8 sleep_state) > [ACPI_EVENT_SLEEP_BUTTON]. > status_register_id, ACPI_CLEAR_STATUS); > > + /* Enable pcie wake event if support */ > + if ((acpi_gbl_FADT.flags & ACPI_FADT_PCI_EXPRESS_WAKE)) { > + (void) > + acpi_write_bit_register(acpi_gbl_fixed_event_info > + [ACPI_EVENT_PCIE_WAKE]. > + enable_register_id, ACPI_DISABLE_EVENT); > + (void) > + acpi_write_bit_register(acpi_gbl_fixed_event_info > + [ACPI_EVENT_PCIE_WAKE]. > + status_register_id, ACPI_CLEAR_STATUS); > + } > + > acpi_hw_execute_sleep_method(METHOD_PATHNAME__SST, ACPI_SST_WORKING); > return_ACPI_STATUS(status); > } > diff --git a/drivers/acpi/acpica/utglobal.c b/drivers/acpi/acpica/utglobal.c index 59a48371a7bc..68baf16d8a02 100644 > --- a/drivers/acpi/acpica/utglobal.c > +++ b/drivers/acpi/acpica/utglobal.c > @@ -186,6 +186,10 @@ struct acpi_fixed_event_info acpi_gbl_fixed_event_info[ACPI_NUM_FIXED_EVENTS] = > ACPI_BITREG_RT_CLOCK_ENABLE, > ACPI_BITMASK_RT_CLOCK_STATUS, > ACPI_BITMASK_RT_CLOCK_ENABLE}, > + /* ACPI_EVENT_PCIE_WAKE */ {ACPI_BITREG_PCIEXP_WAKE_STATUS, > + ACPI_BITREG_PCIEXP_WAKE_DISABLE, > + ACPI_BITMASK_PCIEXP_WAKE_STATUS, > + ACPI_BITMASK_PCIEXP_WAKE_DISABLE}, > }; > #endif /* !ACPI_REDUCED_HARDWARE */ > > diff --git a/include/acpi/actypes.h b/include/acpi/actypes.h index 92c71dfce0d5..0b6c72033487 100644 > --- a/include/acpi/actypes.h > +++ b/include/acpi/actypes.h > @@ -714,7 +714,8 @@ typedef u32 acpi_event_type; > #define ACPI_EVENT_POWER_BUTTON 2 > #define ACPI_EVENT_SLEEP_BUTTON 3 > #define ACPI_EVENT_RTC 4 > -#define ACPI_EVENT_MAX 4 > +#define ACPI_EVENT_PCIE_WAKE 5 > +#define ACPI_EVENT_MAX 5 > #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 > > /* > -- > 2.27.0