drm/amd/display/dc/irq: Remove duplications of hpd_ack function from IRQ
authorSebastian Aguilera Novoa <saguileran@ime.usp.br>
Sat, 3 May 2025 03:59:46 +0000 (00:59 -0300)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 13 May 2025 13:37:09 +0000 (09:37 -0400)
The major of dcn and dce irqs share a copy-pasted collection
of copy-pasted function, which is: hpd_ack.

This patch removes the multiple copy-pasted by moving them to
the irq_service.c and make the irq_service's
calls the functions implemented by the irq_service.c
instead.

The hpd_ack function is replaced by hpd0_ack and hpd1_ack, the
required constants are also added.

The changes were not tested on actual hardware. I am only able
to verify that the changes keep the code compileable and do my
best to look repeatedly if I am not actually changing any code.

Signed-off-by: Sebastian Aguilera Novoa <saguileran@ime.usp.br>
Reviewed-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
20 files changed:
drivers/gpu/drm/amd/display/dc/irq/dce120/irq_service_dce120.c
drivers/gpu/drm/amd/display/dc/irq/dce60/irq_service_dce60.c
drivers/gpu/drm/amd/display/dc/irq/dce80/irq_service_dce80.c
drivers/gpu/drm/amd/display/dc/irq/dcn10/irq_service_dcn10.c
drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c
drivers/gpu/drm/amd/display/dc/irq/dcn201/irq_service_dcn201.c
drivers/gpu/drm/amd/display/dc/irq/dcn21/irq_service_dcn21.c
drivers/gpu/drm/amd/display/dc/irq/dcn30/irq_service_dcn30.c
drivers/gpu/drm/amd/display/dc/irq/dcn302/irq_service_dcn302.c
drivers/gpu/drm/amd/display/dc/irq/dcn303/irq_service_dcn303.c
drivers/gpu/drm/amd/display/dc/irq/dcn31/irq_service_dcn31.c
drivers/gpu/drm/amd/display/dc/irq/dcn314/irq_service_dcn314.c
drivers/gpu/drm/amd/display/dc/irq/dcn315/irq_service_dcn315.c
drivers/gpu/drm/amd/display/dc/irq/dcn32/irq_service_dcn32.c
drivers/gpu/drm/amd/display/dc/irq/dcn35/irq_service_dcn35.c
drivers/gpu/drm/amd/display/dc/irq/dcn351/irq_service_dcn351.c
drivers/gpu/drm/amd/display/dc/irq/dcn36/irq_service_dcn36.c
drivers/gpu/drm/amd/display/dc/irq/dcn401/irq_service_dcn401.c
drivers/gpu/drm/amd/display/dc/irq/irq_service.c
drivers/gpu/drm/amd/display/dc/irq/irq_service.h

index 953f4a4dacad96f3c9f49cb4d1f064acef292b52..33ce470e4c88fbef7453ed0c67c70f11cac8bbf5 100644 (file)
 
 #include "ivsrcid/ivsrcid_vislands30.h"
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 2c72074310c7973727a249c25e2b99ed5c97b8c5..d777b85e70da8e8c4003b20f013860cb8f6c98ec 100644 (file)
 
 #include "dc_types.h"
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       DC_HPD1_INT_STATUS,
-                       DC_HPD1_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               DC_HPD1_INT_CONTROL,
-               DC_HPD1_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd1_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
@@ -391,5 +364,3 @@ struct irq_service *dal_irq_service_dce60_create(
        dce60_irq_construct(irq_service, init_data);
        return irq_service;
 }
-
-
index 49317934ef4f7928cd60312a2add72d680f58ba2..3a9163acb49b11ebcd002be2721c57c4f9428441 100644 (file)
 
 #include "dc_types.h"
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       DC_HPD1_INT_STATUS,
-                       DC_HPD1_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               DC_HPD1_INT_CONTROL,
-               DC_HPD1_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd1_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
@@ -303,5 +276,3 @@ struct irq_service *dal_irq_service_dce80_create(
        dce80_irq_construct(irq_service, init_data);
        return irq_service;
 }
-
-
index 9ca28565a9d17a26d025139c9a7b7be47a4b148e..4ce9edd1634431887f309b8bb3e07c5fbb01f6c0 100644 (file)
@@ -129,36 +129,9 @@ static enum dc_irq_source to_dal_irq_source_dcn10(struct irq_service *irq_servic
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 916f0c974637236a5231b951e08d2f74f3780926..5847af0e66cb88cee7ab3e7acca050f40d359de6 100644 (file)
@@ -130,36 +130,9 @@ static enum dc_irq_source to_dal_irq_source_dcn20(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 1d61d475d36fe6d85a92ddd8679e53313c182433..6417011d22463399b6deeeab2a58249eb084991f 100644 (file)
@@ -80,36 +80,9 @@ static enum dc_irq_source to_dal_irq_source_dcn201(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 42cdfe6c3538244d84d9e02206684e07cc952d05..71d2f065140bde8952352e8c98eb47e514894f41 100644 (file)
@@ -132,36 +132,9 @@ static enum dc_irq_source to_dal_irq_source_dcn21(struct irq_service *irq_servic
        return DC_IRQ_SOURCE_INVALID;
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index a443a8abb1ea39702b751982041f820d6622d23e..2a4080bdcf6bd0b31515cc35976501f0d65cfaa1 100644 (file)
@@ -139,36 +139,9 @@ static enum dc_irq_source to_dal_irq_source_dcn30(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
@@ -447,4 +420,3 @@ struct irq_service *dal_irq_service_dcn30_create(
        dcn30_irq_construct(irq_service, init_data);
        return irq_service;
 }
-
index 8ffc7e2c681a241ecf4ea537ebcd32fba1bc14c4..624f1ac309f822ed1dc3ec41175ea613550676f4 100644 (file)
@@ -126,26 +126,9 @@ static enum dc_irq_source to_dal_irq_source_dcn302(struct irq_service *irq_servi
        }
 }
 
-static bool hpd_ack(struct irq_service *irq_service, const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status = get_reg_field_value(value, HPD0_DC_HPD_INT_STATUS, DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(value, current_status ? 0 : 1, HPD0_DC_HPD_INT_CONTROL, DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
                .set = NULL,
-               .ack = hpd_ack
+               .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 262bb8b74b1595f7d66ec76cc97a1c571131081b..137caffae91687d8bdaf3062082220d169b90891 100644 (file)
@@ -77,26 +77,9 @@ static enum dc_irq_source to_dal_irq_source_dcn303(struct irq_service *irq_servi
        }
 }
 
-static bool hpd_ack(struct irq_service *irq_service, const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status = get_reg_field_value(value, HPD0_DC_HPD_INT_STATUS, DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(value, current_status ? 0 : 1, HPD0_DC_HPD_INT_CONTROL, DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
                .set = NULL,
-               .ack = hpd_ack
+               .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 53e78ae7eecfd7efd890f21d654e38d696862752..921cb167d920e9afbef36d6e1b0932da8c416b6c 100644 (file)
@@ -128,36 +128,9 @@ static enum dc_irq_source to_dal_irq_source_dcn31(struct irq_service *irq_servic
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index e0563e88043237ec79ebc94bd4e257b0e648a23d..0118fd6e5db003808c70b670f05c85ae803a85d1 100644 (file)
@@ -130,36 +130,9 @@ static enum dc_irq_source to_dal_irq_source_dcn314(struct irq_service *irq_servi
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 2ef22299101a2d2555bafdf10d00c24e35aba0ee..adebfc888618dffe3f3b80427d7f05ef8e7f2097 100644 (file)
@@ -135,36 +135,9 @@ static enum dc_irq_source to_dal_irq_source_dcn315(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index f839afacd5a5c008ba3afadcddce581c193100ef..e9e315c75d760f97051e9dbc8693ebfbf768c9d1 100644 (file)
@@ -129,36 +129,9 @@ static enum dc_irq_source to_dal_irq_source_dcn32(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs  = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index ea8c271171bcb25505c12a256b65e981c6fc40d7..79e5e8c137ca7be777dba3b15639bad7f92dbe06 100644 (file)
@@ -127,36 +127,9 @@ static enum dc_irq_source to_dal_irq_source_dcn35(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 7ec8e0de2f0185f0818bffba486c73417265a8dc..163b8ee9ebf7d8a5cdec5f9fef2821103c1145d4 100644 (file)
@@ -106,36 +106,9 @@ static enum dc_irq_source to_dal_irq_source_dcn351(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index ea958628f8b85ab13b8d1f3a58a9f640050c7077..f716ab0fd30e0407441ce679b5614e147f5442b4 100644 (file)
@@ -105,36 +105,9 @@ static enum dc_irq_source to_dal_irq_source_dcn36(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index 8499e505cf3ef7254b006de3f27a95ad3fe2dbed..fd9bb1950c20400f8589d5e85cf87bd42ea8e0fe 100644 (file)
@@ -109,36 +109,9 @@ static enum dc_irq_source to_dal_irq_source_dcn401(
        }
 }
 
-static bool hpd_ack(
-       struct irq_service *irq_service,
-       const struct irq_source_info *info)
-{
-       uint32_t addr = info->status_reg;
-       uint32_t value = dm_read_reg(irq_service->ctx, addr);
-       uint32_t current_status =
-               get_reg_field_value(
-                       value,
-                       HPD0_DC_HPD_INT_STATUS,
-                       DC_HPD_SENSE_DELAYED);
-
-       dal_irq_service_ack_generic(irq_service, info);
-
-       value = dm_read_reg(irq_service->ctx, info->enable_reg);
-
-       set_reg_field_value(
-               value,
-               current_status ? 0 : 1,
-               HPD0_DC_HPD_INT_CONTROL,
-               DC_HPD_INT_POLARITY);
-
-       dm_write_reg(irq_service->ctx, info->enable_reg, value);
-
-       return true;
-}
-
 static struct irq_source_info_funcs hpd_irq_info_funcs = {
        .set = NULL,
-       .ack = hpd_ack
+       .ack = hpd0_ack
 };
 
 static struct irq_source_info_funcs hpd_rx_irq_info_funcs = {
index eca3d7ee7e4ed24d151e2e206321e43debd24bca..b595a11c5eafa78a957380ad165045732b85deed 100644 (file)
 #include "reg_helper.h"
 #include "irq_service.h"
 
+//HPD0_DC_HPD_INT_STATUS
+#define HPD0_DC_HPD_INT_STATUS__DC_HPD_SENSE_DELAYED_MASK              0x00000010L
+#define HPD0_DC_HPD_INT_CONTROL__DC_HPD_INT_POLARITY_MASK              0x00000100L
+#define HPD0_DC_HPD_INT_STATUS__DC_HPD_SENSE_DELAYED__SHIFT            0x4
+#define HPD0_DC_HPD_INT_CONTROL__DC_HPD_INT_POLARITY__SHIFT     0x8
+//HPD1_DC_HPD_INT_STATUS
+#define DC_HPD1_INT_STATUS__DC_HPD1_SENSE_DELAYED_MASK                 0x10
+#define DC_HPD1_INT_STATUS__DC_HPD1_SENSE_DELAYED__SHIFT               0x4
+#define DC_HPD1_INT_CONTROL__DC_HPD1_INT_POLARITY_MASK                 0x100
+#define DC_HPD1_INT_CONTROL__DC_HPD1_INT_POLARITY__SHIFT               0x8
 
 
 #define CTX \
@@ -177,3 +187,57 @@ enum dc_irq_source dal_irq_service_to_irq_source(
                src_id,
                ext_id);
 }
+
+bool hpd0_ack(
+       struct irq_service *irq_service,
+       const struct irq_source_info *info)
+{
+       uint32_t addr = info->status_reg;
+       uint32_t value = dm_read_reg(irq_service->ctx, addr);
+       uint32_t current_status =
+               get_reg_field_value(
+                       value,
+                       HPD0_DC_HPD_INT_STATUS,
+                       DC_HPD_SENSE_DELAYED);
+
+       dal_irq_service_ack_generic(irq_service, info);
+
+       value = dm_read_reg(irq_service->ctx, info->enable_reg);
+
+       set_reg_field_value(
+               value,
+               current_status ? 0 : 1,
+               HPD0_DC_HPD_INT_CONTROL,
+               DC_HPD_INT_POLARITY);
+
+       dm_write_reg(irq_service->ctx, info->enable_reg, value);
+
+       return true;
+}
+
+bool hpd1_ack(
+       struct irq_service *irq_service,
+       const struct irq_source_info *info)
+{
+       uint32_t addr = info->status_reg;
+       uint32_t value = dm_read_reg(irq_service->ctx, addr);
+       uint32_t current_status =
+               get_reg_field_value(
+                       value,
+                       DC_HPD1_INT_STATUS,
+                       DC_HPD1_SENSE_DELAYED);
+
+       dal_irq_service_ack_generic(irq_service, info);
+
+       value = dm_read_reg(irq_service->ctx, info->enable_reg);
+
+       set_reg_field_value(
+               value,
+               current_status ? 0 : 1,
+               DC_HPD1_INT_CONTROL,
+               DC_HPD1_INT_POLARITY);
+
+       dm_write_reg(irq_service->ctx, info->enable_reg, value);
+
+       return true;
+}
index b178f85944cda1c7abb93e6154744e008f5a3679..bbcef3d2fe3340338529fa323f574d7305fac720 100644 (file)
@@ -82,4 +82,12 @@ void dal_irq_service_set_generic(
        const struct irq_source_info *info,
        bool enable);
 
+bool hpd0_ack(
+       struct irq_service *irq_service,
+       const struct irq_source_info *info);
+
+bool hpd1_ack(
+       struct irq_service *irq_service,
+       const struct irq_source_info *info);
+
 #endif