From: Dave Airlie <airl...@redhat.com>

This is similiar to previous patches, don't return when we don't
need to, also do error checking before allocating memory, makes
it simpler to cleanup after.

Signed-off-by: Dave Airlie <airl...@redhat.com>
---
 drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c  | 33 +++++++------------
 drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.c |  4 +--
 drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.h |  2 +-
 drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c  | 47 ++++++++++-----------------
 4 files changed, 30 insertions(+), 56 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c 
b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
index 7b6efa4..310f489 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c
@@ -199,25 +199,14 @@ static const struct hw_gpio_pin_funcs funcs = {
        .close = dal_hw_gpio_close,
 };
 
-static bool construct(
+static void construct(
        struct hw_ddc *ddc,
        enum gpio_id id,
        uint32_t en,
        struct dc_context *ctx)
 {
-       if ((en < GPIO_DDC_LINE_MIN) || (en > GPIO_DDC_LINE_MAX)) {
-               ASSERT_CRITICAL(false);
-               return false;
-       }
-
-       if (!dal_hw_gpio_construct(&ddc->base, id, en, ctx)) {
-               ASSERT_CRITICAL(false);
-               return false;
-       }
-
+       dal_hw_gpio_construct(&ddc->base, id, en, ctx);
        ddc->base.base.funcs = &funcs;
-
-       return true;
 }
 
 struct hw_gpio_pin *dal_hw_ddc_create(
@@ -225,19 +214,19 @@ struct hw_gpio_pin *dal_hw_ddc_create(
        enum gpio_id id,
        uint32_t en)
 {
-       struct hw_ddc *pin = kzalloc(sizeof(struct hw_ddc), GFP_KERNEL);
+       struct hw_ddc *pin;
 
-       if (!pin) {
+       if ((en < GPIO_DDC_LINE_MIN) || (en > GPIO_DDC_LINE_MAX)) {
                ASSERT_CRITICAL(false);
                return NULL;
        }
 
-       if (construct(pin, id, en, ctx))
-               return &pin->base.base;
-
-       ASSERT_CRITICAL(false);
-
-       kfree(pin);
+       pin = kzalloc(sizeof(struct hw_ddc), GFP_KERNEL);
+       if (!pin) {
+               ASSERT_CRITICAL(false);
+               return NULL;
+       }
 
-       return NULL;
+       construct(pin, id, en, ctx);
+       return &pin->base.base;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.c 
b/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.c
index 4cdcdfb..6605108 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.c
@@ -176,7 +176,7 @@ enum gpio_result dal_hw_gpio_config_mode(
        }
 }
 
-bool dal_hw_gpio_construct(
+void dal_hw_gpio_construct(
        struct hw_gpio *pin,
        enum gpio_id id,
        uint32_t en,
@@ -194,8 +194,6 @@ bool dal_hw_gpio_construct(
        pin->store.mux = 0;
 
        pin->mux_supported = false;
-
-       return true;
 }
 
 void dal_hw_gpio_destruct(
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.h 
b/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.h
index fb41ee2..bca0cef 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.h
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_gpio.h
@@ -109,7 +109,7 @@ struct hw_gpio {
 #define HW_GPIO_FROM_BASE(hw_gpio_pin) \
        container_of((hw_gpio_pin), struct hw_gpio, base)
 
-bool dal_hw_gpio_construct(
+void dal_hw_gpio_construct(
        struct hw_gpio *pin,
        enum gpio_id id,
        uint32_t en,
diff --git a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c 
b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
index 0c255c0..784fecc 100644
--- a/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
+++ b/drivers/gpu/drm/amd/display/dc/gpio/hw_hpd.c
@@ -41,15 +41,13 @@
 #define REG(reg)\
        (hpd->regs->reg)
 
-static bool dal_hw_hpd_construct(
+static void dal_hw_hpd_construct(
        struct hw_hpd *pin,
        enum gpio_id id,
        uint32_t en,
        struct dc_context *ctx)
 {
-       if (!dal_hw_gpio_construct(&pin->base, id, en, ctx))
-               return false;
-       return true;
+       dal_hw_gpio_construct(&pin->base, id, en, ctx);
 }
 
 static void dal_hw_hpd_destruct(
@@ -126,30 +124,14 @@ static const struct hw_gpio_pin_funcs funcs = {
        .close = dal_hw_gpio_close,
 };
 
-static bool construct(
+static void construct(
        struct hw_hpd *hpd,
        enum gpio_id id,
        uint32_t en,
        struct dc_context *ctx)
 {
-       if (id != GPIO_ID_HPD) {
-               ASSERT_CRITICAL(false);
-               return false;
-       }
-
-       if ((en < GPIO_HPD_MIN) || (en > GPIO_HPD_MAX)) {
-               ASSERT_CRITICAL(false);
-               return false;
-       }
-
-       if (!dal_hw_hpd_construct(hpd, id, en, ctx)) {
-               ASSERT_CRITICAL(false);
-               return false;
-       }
-
+       dal_hw_hpd_construct(hpd, id, en, ctx);
        hpd->base.base.funcs = &funcs;
-
-       return true;
 }
 
 struct hw_gpio_pin *dal_hw_hpd_create(
@@ -157,19 +139,24 @@ struct hw_gpio_pin *dal_hw_hpd_create(
        enum gpio_id id,
        uint32_t en)
 {
-       struct hw_hpd *hpd = kzalloc(sizeof(struct hw_hpd), GFP_KERNEL);
+       struct hw_hpd *hpd;
 
-       if (!hpd) {
+       if (id != GPIO_ID_HPD) {
                ASSERT_CRITICAL(false);
                return NULL;
        }
 
-       if (construct(hpd, id, en, ctx))
-               return &hpd->base.base;
-
-       ASSERT_CRITICAL(false);
+       if ((en < GPIO_HPD_MIN) || (en > GPIO_HPD_MAX)) {
+               ASSERT_CRITICAL(false);
+               return NULL;
+       }
 
-       kfree(hpd);
+       hpd = kzalloc(sizeof(struct hw_hpd), GFP_KERNEL);
+       if (!hpd) {
+               ASSERT_CRITICAL(false);
+               return NULL;
+       }
 
-       return NULL;
+       construct(hpd, id, en, ctx);
+       return &hpd->base.base;
 }
-- 
2.9.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to