0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026 #include "dm_services.h"
0027 #include "dcn10_ipp.h"
0028 #include "reg_helper.h"
0029
0030 #define REG(reg) \
0031 (ippn10->regs->reg)
0032
0033 #undef FN
0034 #define FN(reg_name, field_name) \
0035 ippn10->ipp_shift->field_name, ippn10->ipp_mask->field_name
0036
0037 #define CTX \
0038 ippn10->base.ctx
0039
0040
0041
0042
0043
0044 static void dcn10_ipp_destroy(struct input_pixel_processor **ipp)
0045 {
0046 kfree(TO_DCN10_IPP(*ipp));
0047 *ipp = NULL;
0048 }
0049
0050 static const struct ipp_funcs dcn10_ipp_funcs = {
0051 .ipp_destroy = dcn10_ipp_destroy
0052 };
0053
0054 static const struct ipp_funcs dcn20_ipp_funcs = {
0055 .ipp_destroy = dcn10_ipp_destroy
0056 };
0057
0058 void dcn10_ipp_construct(
0059 struct dcn10_ipp *ippn10,
0060 struct dc_context *ctx,
0061 int inst,
0062 const struct dcn10_ipp_registers *regs,
0063 const struct dcn10_ipp_shift *ipp_shift,
0064 const struct dcn10_ipp_mask *ipp_mask)
0065 {
0066 ippn10->base.ctx = ctx;
0067 ippn10->base.inst = inst;
0068 ippn10->base.funcs = &dcn10_ipp_funcs;
0069
0070 ippn10->regs = regs;
0071 ippn10->ipp_shift = ipp_shift;
0072 ippn10->ipp_mask = ipp_mask;
0073 }
0074
0075 void dcn20_ipp_construct(
0076 struct dcn10_ipp *ippn10,
0077 struct dc_context *ctx,
0078 int inst,
0079 const struct dcn10_ipp_registers *regs,
0080 const struct dcn10_ipp_shift *ipp_shift,
0081 const struct dcn10_ipp_mask *ipp_mask)
0082 {
0083 ippn10->base.ctx = ctx;
0084 ippn10->base.inst = inst;
0085 ippn10->base.funcs = &dcn20_ipp_funcs;
0086
0087 ippn10->regs = regs;
0088 ippn10->ipp_shift = ipp_shift;
0089 ippn10->ipp_mask = ipp_mask;
0090 }