Patchwork [v3,10/10] ACPI: simplify acpiphp driver with new helper functions

login
register
mail settings
Submitter Jiang Liu
Date June 28, 2013, 4:24 p.m.
Message ID <1372436683-31711-11-git-send-email-liuj97@gmail.com>
Download mbox | patch
Permalink /patch/255466/
State Not Applicable
Headers show

Comments

Jiang Liu - June 28, 2013, 4:24 p.m.
From: Jiang Liu <jiang.liu@huawei.com>

Use new helper functions to simplify acpiphp driver.

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Cc: Jiang Liu <liuj97@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Len Brown <lenb@kernel.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Yijing Wang <wangyijing@huawei.com>
Cc: linux-acpi@vger.kernel.org
Cc: linux-pci@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/pci/hotplug/acpiphp_glue.c | 30 ++++++++----------------------
 1 file changed, 8 insertions(+), 22 deletions(-)
Bjorn Helgaas - June 28, 2013, 5:20 p.m.
On Fri, Jun 28, 2013 at 10:24 AM, Jiang Liu <liuj97@gmail.com> wrote:
> From: Jiang Liu <jiang.liu@huawei.com>
>
> Use new helper functions to simplify acpiphp driver.
>
> Signed-off-by: Jiang Liu <jiang.liu@huawei.com>

Acked-by: Bjorn Helgaas <bhelgaas@google.com>

I assume this will be merged via linux-pm with the rest of the series.

> Cc: Jiang Liu <liuj97@gmail.com>
> Cc: Bjorn Helgaas <bhelgaas@google.com>
> Cc: Yinghai Lu <yinghai@kernel.org>
> Cc: Len Brown <lenb@kernel.org>
> Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
> Cc: Yijing Wang <wangyijing@huawei.com>
> Cc: linux-acpi@vger.kernel.org
> Cc: linux-pci@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/pci/hotplug/acpiphp_glue.c | 30 ++++++++----------------------
>  1 file changed, 8 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
> index 59df857..a0a7133 100644
> --- a/drivers/pci/hotplug/acpiphp_glue.c
> +++ b/drivers/pci/hotplug/acpiphp_glue.c
> @@ -201,7 +201,6 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
>         struct acpiphp_bridge *bridge = (struct acpiphp_bridge *)context;
>         struct acpiphp_slot *slot;
>         struct acpiphp_func *newfunc;
> -       acpi_handle tmp;
>         acpi_status status = AE_OK;
>         unsigned long long adr, sun;
>         int device, function, retval, found = 0;
> @@ -232,19 +231,19 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
>         newfunc->handle = handle;
>         newfunc->function = function;
>
> -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
> +       if (acpi_has_method(handle, "_EJ0"))
>                 newfunc->flags = FUNC_HAS_EJ0;
>
> -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_STA", &tmp)))
> +       if (acpi_has_method(handle, "_STA"))
>                 newfunc->flags |= FUNC_HAS_STA;
>
> -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS0", &tmp)))
> +       if (acpi_has_method(handle, "_PS0"))
>                 newfunc->flags |= FUNC_HAS_PS0;
>
> -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS3", &tmp)))
> +       if (acpi_has_method(handle, "_PS3"))
>                 newfunc->flags |= FUNC_HAS_PS3;
>
> -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_DCK", &tmp)))
> +       if (acpi_has_method(handle, "_DCK"))
>                 newfunc->flags |= FUNC_HAS_DCK;
>
>         status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
> @@ -843,25 +842,14 @@ static unsigned int get_slot_status(struct acpiphp_slot *slot)
>   */
>  int acpiphp_eject_slot(struct acpiphp_slot *slot)
>  {
> -       acpi_status status;
>         struct acpiphp_func *func;
> -       struct acpi_object_list arg_list;
> -       union acpi_object arg;
>
>         list_for_each_entry(func, &slot->funcs, sibling) {
>                 /* We don't want to call _EJ0 on non-existing functions. */
>                 if ((func->flags & FUNC_HAS_EJ0)) {
> -                       /* _EJ0 method take one argument */
> -                       arg_list.count = 1;
> -                       arg_list.pointer = &arg;
> -                       arg.type = ACPI_TYPE_INTEGER;
> -                       arg.integer.value = 1;
> -
> -                       status = acpi_evaluate_object(func->handle, "_EJ0", &arg_list, NULL);
> -                       if (ACPI_FAILURE(status)) {
> -                               warn("%s: _EJ0 failed\n", __func__);
> +                       if (ACPI_FAILURE(acpi_evaluate_ej0(func->handle)))
>                                 return -1;
> -                       } else
> +                       else
>                                 break;
>                 }
>         }
> @@ -1171,7 +1159,6 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
>   */
>  void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
>  {
> -       acpi_handle dummy_handle;
>         struct acpiphp_bridge *bridge;
>
>         if (acpiphp_disabled)
> @@ -1200,8 +1187,7 @@ void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
>         get_device(&bus->dev);
>
>         if (!pci_is_root_bus(bridge->pci_bus) &&
> -           ACPI_SUCCESS(acpi_get_handle(bridge->handle,
> -                                       "_EJ0", &dummy_handle))) {
> +           acpi_has_method(bridge->handle, "_EJ0")) {
>                 dbg("found ejectable p2p bridge\n");
>                 bridge->flags |= BRIDGE_HAS_EJ0;
>                 bridge->func = acpiphp_bridge_handle_to_function(handle);
> --
> 1.8.1.2
>
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Rafael J. Wysocki - June 28, 2013, 6:42 p.m.
On Friday, June 28, 2013 11:20:21 AM Bjorn Helgaas wrote:
> On Fri, Jun 28, 2013 at 10:24 AM, Jiang Liu <liuj97@gmail.com> wrote:
> > From: Jiang Liu <jiang.liu@huawei.com>
> >
> > Use new helper functions to simplify acpiphp driver.
> >
> > Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
> 
> Acked-by: Bjorn Helgaas <bhelgaas@google.com>
> 
> I assume this will be merged via linux-pm with the rest of the series.

Yup, into 3.12.

Thanks,
Rafael


> > Cc: Jiang Liu <liuj97@gmail.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>
> > Cc: Yinghai Lu <yinghai@kernel.org>
> > Cc: Len Brown <lenb@kernel.org>
> > Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
> > Cc: Yijing Wang <wangyijing@huawei.com>
> > Cc: linux-acpi@vger.kernel.org
> > Cc: linux-pci@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > ---
> >  drivers/pci/hotplug/acpiphp_glue.c | 30 ++++++++----------------------
> >  1 file changed, 8 insertions(+), 22 deletions(-)
> >
> > diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
> > index 59df857..a0a7133 100644
> > --- a/drivers/pci/hotplug/acpiphp_glue.c
> > +++ b/drivers/pci/hotplug/acpiphp_glue.c
> > @@ -201,7 +201,6 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
> >         struct acpiphp_bridge *bridge = (struct acpiphp_bridge *)context;
> >         struct acpiphp_slot *slot;
> >         struct acpiphp_func *newfunc;
> > -       acpi_handle tmp;
> >         acpi_status status = AE_OK;
> >         unsigned long long adr, sun;
> >         int device, function, retval, found = 0;
> > @@ -232,19 +231,19 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
> >         newfunc->handle = handle;
> >         newfunc->function = function;
> >
> > -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
> > +       if (acpi_has_method(handle, "_EJ0"))
> >                 newfunc->flags = FUNC_HAS_EJ0;
> >
> > -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_STA", &tmp)))
> > +       if (acpi_has_method(handle, "_STA"))
> >                 newfunc->flags |= FUNC_HAS_STA;
> >
> > -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS0", &tmp)))
> > +       if (acpi_has_method(handle, "_PS0"))
> >                 newfunc->flags |= FUNC_HAS_PS0;
> >
> > -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS3", &tmp)))
> > +       if (acpi_has_method(handle, "_PS3"))
> >                 newfunc->flags |= FUNC_HAS_PS3;
> >
> > -       if (ACPI_SUCCESS(acpi_get_handle(handle, "_DCK", &tmp)))
> > +       if (acpi_has_method(handle, "_DCK"))
> >                 newfunc->flags |= FUNC_HAS_DCK;
> >
> >         status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
> > @@ -843,25 +842,14 @@ static unsigned int get_slot_status(struct acpiphp_slot *slot)
> >   */
> >  int acpiphp_eject_slot(struct acpiphp_slot *slot)
> >  {
> > -       acpi_status status;
> >         struct acpiphp_func *func;
> > -       struct acpi_object_list arg_list;
> > -       union acpi_object arg;
> >
> >         list_for_each_entry(func, &slot->funcs, sibling) {
> >                 /* We don't want to call _EJ0 on non-existing functions. */
> >                 if ((func->flags & FUNC_HAS_EJ0)) {
> > -                       /* _EJ0 method take one argument */
> > -                       arg_list.count = 1;
> > -                       arg_list.pointer = &arg;
> > -                       arg.type = ACPI_TYPE_INTEGER;
> > -                       arg.integer.value = 1;
> > -
> > -                       status = acpi_evaluate_object(func->handle, "_EJ0", &arg_list, NULL);
> > -                       if (ACPI_FAILURE(status)) {
> > -                               warn("%s: _EJ0 failed\n", __func__);
> > +                       if (ACPI_FAILURE(acpi_evaluate_ej0(func->handle)))
> >                                 return -1;
> > -                       } else
> > +                       else
> >                                 break;
> >                 }
> >         }
> > @@ -1171,7 +1159,6 @@ static void handle_hotplug_event_func(acpi_handle handle, u32 type,
> >   */
> >  void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
> >  {
> > -       acpi_handle dummy_handle;
> >         struct acpiphp_bridge *bridge;
> >
> >         if (acpiphp_disabled)
> > @@ -1200,8 +1187,7 @@ void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
> >         get_device(&bus->dev);
> >
> >         if (!pci_is_root_bus(bridge->pci_bus) &&
> > -           ACPI_SUCCESS(acpi_get_handle(bridge->handle,
> > -                                       "_EJ0", &dummy_handle))) {
> > +           acpi_has_method(bridge->handle, "_EJ0")) {
> >                 dbg("found ejectable p2p bridge\n");
> >                 bridge->flags |= BRIDGE_HAS_EJ0;
> >                 bridge->func = acpiphp_bridge_handle_to_function(handle);
> > --
> > 1.8.1.2
> >

Patch

diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index 59df857..a0a7133 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -201,7 +201,6 @@  register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
 	struct acpiphp_bridge *bridge = (struct acpiphp_bridge *)context;
 	struct acpiphp_slot *slot;
 	struct acpiphp_func *newfunc;
-	acpi_handle tmp;
 	acpi_status status = AE_OK;
 	unsigned long long adr, sun;
 	int device, function, retval, found = 0;
@@ -232,19 +231,19 @@  register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
 	newfunc->handle = handle;
 	newfunc->function = function;
 
-	if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
+	if (acpi_has_method(handle, "_EJ0"))
 		newfunc->flags = FUNC_HAS_EJ0;
 
-	if (ACPI_SUCCESS(acpi_get_handle(handle, "_STA", &tmp)))
+	if (acpi_has_method(handle, "_STA"))
 		newfunc->flags |= FUNC_HAS_STA;
 
-	if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS0", &tmp)))
+	if (acpi_has_method(handle, "_PS0"))
 		newfunc->flags |= FUNC_HAS_PS0;
 
-	if (ACPI_SUCCESS(acpi_get_handle(handle, "_PS3", &tmp)))
+	if (acpi_has_method(handle, "_PS3"))
 		newfunc->flags |= FUNC_HAS_PS3;
 
-	if (ACPI_SUCCESS(acpi_get_handle(handle, "_DCK", &tmp)))
+	if (acpi_has_method(handle, "_DCK"))
 		newfunc->flags |= FUNC_HAS_DCK;
 
 	status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
@@ -843,25 +842,14 @@  static unsigned int get_slot_status(struct acpiphp_slot *slot)
  */
 int acpiphp_eject_slot(struct acpiphp_slot *slot)
 {
-	acpi_status status;
 	struct acpiphp_func *func;
-	struct acpi_object_list arg_list;
-	union acpi_object arg;
 
 	list_for_each_entry(func, &slot->funcs, sibling) {
 		/* We don't want to call _EJ0 on non-existing functions. */
 		if ((func->flags & FUNC_HAS_EJ0)) {
-			/* _EJ0 method take one argument */
-			arg_list.count = 1;
-			arg_list.pointer = &arg;
-			arg.type = ACPI_TYPE_INTEGER;
-			arg.integer.value = 1;
-
-			status = acpi_evaluate_object(func->handle, "_EJ0", &arg_list, NULL);
-			if (ACPI_FAILURE(status)) {
-				warn("%s: _EJ0 failed\n", __func__);
+			if (ACPI_FAILURE(acpi_evaluate_ej0(func->handle)))
 				return -1;
-			} else
+			else
 				break;
 		}
 	}
@@ -1171,7 +1159,6 @@  static void handle_hotplug_event_func(acpi_handle handle, u32 type,
  */
 void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
 {
-	acpi_handle dummy_handle;
 	struct acpiphp_bridge *bridge;
 
 	if (acpiphp_disabled)
@@ -1200,8 +1187,7 @@  void acpiphp_enumerate_slots(struct pci_bus *bus, acpi_handle handle)
 	get_device(&bus->dev);
 
 	if (!pci_is_root_bus(bridge->pci_bus) &&
-	    ACPI_SUCCESS(acpi_get_handle(bridge->handle,
-					"_EJ0", &dummy_handle))) {
+	    acpi_has_method(bridge->handle, "_EJ0")) {
 		dbg("found ejectable p2p bridge\n");
 		bridge->flags |= BRIDGE_HAS_EJ0;
 		bridge->func = acpiphp_bridge_handle_to_function(handle);