Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp1428372imw; Tue, 5 Jul 2022 09:16:22 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vccNusu+P4aYIVX1UhYCuKpjJVNf9sedrmeK6v6twQFgVBOMWWpkECmpe4/pt+DguiH2c9 X-Received: by 2002:a17:907:8a17:b0:726:35ac:b3ad with SMTP id sc23-20020a1709078a1700b0072635acb3admr34316934ejc.447.1657037782315; Tue, 05 Jul 2022 09:16:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657037782; cv=none; d=google.com; s=arc-20160816; b=PDBF7Q5uM5Mv6NYLk2d2QnQ3/h0/TH+AzfvnWHkNIC5G1gDLvZ2U8P1/8suoT+vOeG CZWZdu86zbZjAZCAF5gt4sQhRdRlBQ3+WIJEL5EYXBe/e6wymmYpZT6kJABW6CbDmseJ JzpocKCL52q5/3HG10gY6ldwUkypLvu2YTaVZxRYpihGSzOjWHypWjcfhp6o+XQ87IxN ZCHcVmjiOUvX/vqCewSwlLfFGz6VaYQ46Z4HEsRqmIJ6Y6NaDh68HdJ5HQedxCee3K4x 2Rqjg/D0ys+47XlyepnG5aCedZDt+AbEue+7Bjqy4e0Cl/xLmikbukfWD9/TIfMk7SGA sa3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=0PWyJkGbY1QecBgTJVZxXj+1AZU7IHfNHTa4FKb8zOI=; b=th0iUbR3Q5WL9GD62RyDixeIb6koDXf3XhEX91W9IKZp09cZqOYVfcqm5IebDMZFs0 DHIAtAB6SYRvjpEIChe2+IIBeO2OFu2ng0pO61tci8gECV5yTjCXIkODTmXHUdQkb2gu yAz/QdC9+tNwrXS0FJSpmRmH04e2akvcex1MklmAx2bt2y4olwG9DdSMGEC+ki9Hgfnh d04RTWUSwi+pbePGWbuMBGFee6hMP+2n1Frmig5XYdNgyuFG8h+B1s0d8xSDhBjwrMJW ysKN27HB9R94cVw7+qBOWtv2LadxVy9Ge5h8Y02NSblnaIDZAXAg/5KmZfV4h+MZf7P0 PWhg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id js21-20020a17090797d500b0072636d040c2si4918524ejc.104.2022.07.05.09.15.57; Tue, 05 Jul 2022 09:16:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230060AbiGEQAu (ORCPT + 99 others); Tue, 5 Jul 2022 12:00:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60676 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233003AbiGEQAp (ORCPT ); Tue, 5 Jul 2022 12:00:45 -0400 Received: from mail-yb1-f173.google.com (mail-yb1-f173.google.com [209.85.219.173]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1775A1839A; Tue, 5 Jul 2022 09:00:44 -0700 (PDT) Received: by mail-yb1-f173.google.com with SMTP id j7so16252932ybj.10; Tue, 05 Jul 2022 09:00:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=0PWyJkGbY1QecBgTJVZxXj+1AZU7IHfNHTa4FKb8zOI=; b=QYuM7m+Q97t6nZQNV6/ggJc+DuE1yR0185yj5iVWh5OLgYpfHrCgYzxhAs80mx3HUz 6F7i16k/Hx3ugzQEHBIwe7xc5gntSjxP6bCW+VAudGjQgcC9OaJe7G4QOnBFUBr6H3B9 jQlTYGiF/VVnOXaWAmfuvtEB43zeD4jsVfIWvKmOjkKXfWZ727iDHxIsB8bSc0npJiwl AzlOF/ZWUya8qyWkDxYoh81AIkXi9D8gt8BRBH8iMvDTbx4HIU6MqT/RNcCKNm3/eJXn OKsz4U1vTY0/etIGKd5ZwD1HG1t5JHUPPEWtwPJfzoMV2yCyNlfufsyEo3YbMnrk6riw Ra1A== X-Gm-Message-State: AJIora8ATw5CICSCcNKuFyPrvpey5uA/PoqJbv4qg6kSLTOiace6NPNA DYHuQCQuesovZx9reWm3FHSwnLzs02/9BXMricmALHRT X-Received: by 2002:a25:9847:0:b0:669:b4c6:d081 with SMTP id k7-20020a259847000000b00669b4c6d081mr37036694ybo.633.1657036843024; Tue, 05 Jul 2022 09:00:43 -0700 (PDT) MIME-Version: 1.0 References: <20220630150135.1799535-1-sbinding@opensource.cirrus.com> <20220630150135.1799535-2-sbinding@opensource.cirrus.com> In-Reply-To: <20220630150135.1799535-2-sbinding@opensource.cirrus.com> From: "Rafael J. Wysocki" Date: Tue, 5 Jul 2022 18:00:32 +0200 Message-ID: Subject: Re: [PATCH v5 1/2] ACPI: utils: Add api to read _SUB from ACPI To: Stefan Binding Cc: "Rafael J . Wysocki" , Len Brown , Mark Brown , Liam Girdwood , ACPI Devel Maling List , "moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..." , Linux Kernel Mailing List , patches@opensource.cirrus.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jun 30, 2022 at 5:01 PM Stefan Binding wrote: > > Add a wrapper function to read the _SUB string from ACPI. > > Signed-off-by: Stefan Binding > --- > drivers/acpi/utils.c | 38 ++++++++++++++++++++++++++++++++++++++ > include/linux/acpi.h | 6 ++++++ > 2 files changed, 44 insertions(+) > > diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c > index 3a9773a09e19..394954f4b6ef 100644 > --- a/drivers/acpi/utils.c > +++ b/drivers/acpi/utils.c > @@ -291,6 +291,44 @@ int acpi_get_local_address(acpi_handle handle, u32 *addr) > } > EXPORT_SYMBOL(acpi_get_local_address); > > +#define ACPI_MAX_SUB_BUF_SIZE 9 > + > +const char *acpi_get_subsystem_id(acpi_handle handle) > +{ > + struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; > + union acpi_object *obj; > + acpi_status status; > + const char *sub; > + > + status = acpi_evaluate_object(handle, METHOD_NAME__SUB, NULL, &buffer); > + if (ACPI_FAILURE(status)) { > + acpi_handle_debug(handle, "Reading ACPI _SUB failed: %#x\n", status); > + return ERR_PTR(-ENODATA); > + } > + > + obj = buffer.pointer; > + if (obj->type == ACPI_TYPE_STRING) { > + if (strlen(obj->string.pointer) < ACPI_MAX_SUB_BUF_SIZE && > + strlen(obj->string.pointer) > 0) { > + sub = kstrdup(obj->string.pointer, GFP_KERNEL); > + if (!sub) > + sub = ERR_PTR(-ENOMEM); The error codes below are somewhat questionable. > + } else { > + acpi_handle_err(handle, "ACPI _SUB Length %zu is Invalid\n", > + strlen(obj->string.pointer)); > + sub = ERR_PTR(-EINVAL); This is as good as failure, so why not use -ENODATA here? > + } > + } else { > + acpi_handle_warn(handle, "Warning ACPI _SUB did not return a string\n"); > + sub = ERR_PTR(-EINVAL); Likewise. > + } > + > + acpi_os_free(buffer.pointer); > + > + return sub; > +} > +EXPORT_SYMBOL_GPL(acpi_get_subsystem_id); > + > acpi_status > acpi_evaluate_reference(acpi_handle handle, > acpi_string pathname, > diff --git a/include/linux/acpi.h b/include/linux/acpi.h > index 7b96a8bff6d2..7651198ad6f5 100644 > --- a/include/linux/acpi.h > +++ b/include/linux/acpi.h > @@ -762,6 +762,7 @@ static inline u64 acpi_arch_get_root_pointer(void) > #endif > > int acpi_get_local_address(acpi_handle handle, u32 *addr); > +const char *acpi_get_subsystem_id(acpi_handle handle); > > #else /* !CONFIG_ACPI */ > > @@ -1023,6 +1024,11 @@ static inline int acpi_get_local_address(acpi_handle handle, u32 *addr) > return -ENODEV; > } > > +static inline const char *acpi_get_subsystem_id(acpi_handle handle) > +{ > + return ERR_PTR(-ENODEV); > +} > + > static inline int acpi_register_wakeup_handler(int wake_irq, > bool (*wakeup)(void *context), void *context) > { > -- > 2.25.1 >