diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2431-amdgpu-dc-cleanup-construct-returns-in-gpio.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2431-amdgpu-dc-cleanup-construct-returns-in-gpio.patch | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2431-amdgpu-dc-cleanup-construct-returns-in-gpio.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2431-amdgpu-dc-cleanup-construct-returns-in-gpio.patch new file mode 100644 index 00000000..0fc0b34f --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2431-amdgpu-dc-cleanup-construct-returns-in-gpio.patch @@ -0,0 +1,205 @@ +From 7ae78f973420cb42b4cdbaf493b5b99fd055dff2 Mon Sep 17 00:00:00 2001 +From: Dave Airlie <airlied@redhat.com> +Date: Fri, 29 Sep 2017 14:34:38 +1000 +Subject: [PATCH 2431/4131] amdgpu/dc: cleanup construct returns in gpio. + +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 <airlied@redhat.com> +Reviewed-by: Harry Wentland <harry.wentland@amd.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.7.4 + |