[PATCH v3] drm/exynos: mixer: document YCbCr magic numbers
Inki Dae
inki.dae at samsung.com
Wed Apr 12 02:02:46 UTC 2017
2017년 04월 11일 17:01에 Tobias Jakobi 이(가) 쓴 글:
> Inki Dae wrote:
>>
>>
>> 2017년 04월 10일 19:27에 Tobias Jakobi 이(가) 쓴 글:
>>> Inki Dae wrote:
>>>> 2017-03-29 20:56 GMT+09:00 Tobias Jakobi <tjakobi at math.uni-bielefeld.de>:
>>>>> Hello Daniel,
>>>>>
>>>>> same question here. Patch doesn't introduce any functional changes (just
>>>>> adds code documentation), so can you merge it through drm-misc?
>>>>>
>>>>
>>>> Sorry for late. Confirmed just now. I will check it on next Monday.
>>> You have added the wrong patch (v2 instead of v3).
>>
>> Tobias,
>>
>> you had posted this patch with other one like below,
>> [PATCH v2 1/2] drm/exynos: mixer: simplify mixer_cfg_rgb_fmt()
>> [PATCH v2 2/2] drm/exynos: mixer: document YCbCr magic numbers
>>
>> And than you have posted it without any comment again, v3,
>> [PATCH v3] drm/exynos: mixer: document YCbCr magic numbers
>>
>> Please use --cover-letter option to make patch series and keep the patch set to be consistent with previous version.
> This is not necessary. There were only changes to 'drm/exynos: mixer:
> document YCbCr magic numbers' and we're talking about _two_ patches here
> (which can be applied independently).
Tobias, why did you post the patch set 1/2 and 2/2 before?
If these patches can be applied independently - you found out later - then you need to clarify why you posted them separately.
Thanks,
Inki Dae
>
>
>>
>> I can merge the new one - really trivial - but I think it'd be better you to resend this patch series for other people.
>>
>> This patch set has been removed from my tree. Please resend (not v4) this patch set like below,
>> [PATCH v3 0/2] drm/exynos: clean up mixer driver??
>> [PATCH v3 1/2] drm/exynos: mixer: simplify mixer_cfg_rgb_fmt()
>> [PATCH v3 2/2] drm/exynos: mixer: document YCbCr magic numbers
> Not necessary, just pick up the two patches which for which I already
> pinged you. For you convenience, here are the two on dri-devel patchwork:
> https://patchwork.kernel.org/patch/9617085/
> https://patchwork.kernel.org/patch/9617493/
>
> - Tobias
>
>
>
>>
>> Thanks,
>> Inki Dae
>>
>>>
>>> - Tobias
>>>
>>>
>>>> Thanks,
>>>> Inki Dae
>>>>
>>>>> With best wishes,
>>>>> Tobias
>>>>>
>>>>>
>>>>> Tobias Jakobi wrote:
>>>>>> The output stage of the mixer uses YCbCr for the internal
>>>>>> computations, which is the reason that some registers take
>>>>>> YCbCr related data as input. In particular this applies
>>>>>> to MXR_BG_COLOR{0,1,2} and MXR_CM_COEFF_{Y,CB,CR}.
>>>>>>
>>>>>> Document the formatting of the data which we write to
>>>>>> these registers.
>>>>>>
>>>>>> While at it, unify wording of comments in the register header.
>>>>>>
>>>>>> Reviewed-by: Andrzej Hajda <a.hajda at samsung.com>
>>>>>> Signed-off-by: Tobias Jakobi <tjakobi at math.uni-bielefeld.de>
>>>>>> ---
>>>>>> Changes in v2:
>>>>>> - use floating point values as input for the macros, as
>>>>>> suggested by Andrzej
>>>>>> - the floating point values have been tuned to exactly match
>>>>>> the values that are currently used
>>>>>>
>>>>>> Changes in v3:
>>>>>> - use only three digit values (pointed out by Andrzej)
>>>>>>
>>>>>> drivers/gpu/drm/exynos/exynos_mixer.c | 33 +++++++++++++++++++++++++--------
>>>>>> drivers/gpu/drm/exynos/regs-mixer.h | 7 +++++--
>>>>>> 2 files changed, 30 insertions(+), 10 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
>>>>>> index 41d0c36..9648dd5 100644
>>>>>> --- a/drivers/gpu/drm/exynos/exynos_mixer.c
>>>>>> +++ b/drivers/gpu/drm/exynos/exynos_mixer.c
>>>>>> @@ -45,6 +45,22 @@
>>>>>> #define MIXER_WIN_NR 3
>>>>>> #define VP_DEFAULT_WIN 2
>>>>>>
>>>>>> +/*
>>>>>> + * Mixer color space conversion coefficient triplet.
>>>>>> + * Used for CSC from RGB to YCbCr.
>>>>>> + * Each coefficient is a 10-bit fixed point number with
>>>>>> + * sign and no integer part, i.e.
>>>>>> + * [0:8] = fractional part (representing a value y = x / 2^9)
>>>>>> + * [9] = sign
>>>>>> + * Negative values are encoded with two's complement.
>>>>>> + */
>>>>>> +#define MXR_CSC_C(x) ((int)((x) * 512.0) & 0x3ff)
>>>>>> +#define MXR_CSC_CT(a0, a1, a2) \
>>>>>> + ((MXR_CSC_C(a0) << 20) | (MXR_CSC_C(a1) << 10) | (MXR_CSC_C(a2) << 0))
>>>>>> +
>>>>>> +/* YCbCr value, used for mixer background color configuration. */
>>>>>> +#define MXR_YCBCR_VAL(y, cb, cr) (((y) << 16) | ((cb) << 8) | ((cr) << 0))
>>>>>> +
>>>>>> /* The pixelformats that are natively supported by the mixer. */
>>>>>> #define MXR_FORMAT_RGB565 4
>>>>>> #define MXR_FORMAT_ARGB1555 5
>>>>>> @@ -391,13 +407,14 @@ static void mixer_cfg_rgb_fmt(struct mixer_context *ctx, unsigned int height)
>>>>>> case 1080:
>>>>>> default:
>>>>>> val = MXR_CFG_RGB709_16_235;
>>>>>> + /* Configure the BT.709 CSC matrix for full range RGB. */
>>>>>> mixer_reg_write(res, MXR_CM_COEFF_Y,
>>>>>> - (1 << 30) | (94 << 20) | (314 << 10) |
>>>>>> - (32 << 0));
>>>>>> + MXR_CSC_CT( 0.184, 0.614, 0.063) |
>>>>>> + MXR_CM_COEFF_RGB_FULL);
>>>>>> mixer_reg_write(res, MXR_CM_COEFF_CB,
>>>>>> - (972 << 20) | (851 << 10) | (225 << 0));
>>>>>> + MXR_CSC_CT(-0.102, -0.338, 0.440));
>>>>>> mixer_reg_write(res, MXR_CM_COEFF_CR,
>>>>>> - (225 << 20) | (820 << 10) | (1004 << 0));
>>>>>> + MXR_CSC_CT( 0.440, -0.399, -0.040));
>>>>>> break;
>>>>>> }
>>>>>>
>>>>>> @@ -715,10 +732,10 @@ static void mixer_win_reset(struct mixer_context *ctx)
>>>>>> /* reset default layer priority */
>>>>>> mixer_reg_write(res, MXR_LAYER_CFG, 0);
>>>>>>
>>>>>> - /* setting background color */
>>>>>> - mixer_reg_write(res, MXR_BG_COLOR0, 0x008080);
>>>>>> - mixer_reg_write(res, MXR_BG_COLOR1, 0x008080);
>>>>>> - mixer_reg_write(res, MXR_BG_COLOR2, 0x008080);
>>>>>> + /* set all background colors to RGB (0,0,0) */
>>>>>> + mixer_reg_write(res, MXR_BG_COLOR0, MXR_YCBCR_VAL(0, 128, 128));
>>>>>> + mixer_reg_write(res, MXR_BG_COLOR1, MXR_YCBCR_VAL(0, 128, 128));
>>>>>> + mixer_reg_write(res, MXR_BG_COLOR2, MXR_YCBCR_VAL(0, 128, 128));
>>>>>>
>>>>>> if (test_bit(MXR_BIT_VP_ENABLED, &ctx->flags)) {
>>>>>> /* configuration of Video Processor Registers */
>>>>>> diff --git a/drivers/gpu/drm/exynos/regs-mixer.h b/drivers/gpu/drm/exynos/regs-mixer.h
>>>>>> index 7f22df5..c311f57 100644
>>>>>> --- a/drivers/gpu/drm/exynos/regs-mixer.h
>>>>>> +++ b/drivers/gpu/drm/exynos/regs-mixer.h
>>>>>> @@ -140,11 +140,11 @@
>>>>>> #define MXR_INT_EN_VSYNC (1 << 11)
>>>>>> #define MXR_INT_EN_ALL (0x0f << 8)
>>>>>>
>>>>>> -/* bit for MXR_INT_STATUS */
>>>>>> +/* bits for MXR_INT_STATUS */
>>>>>> #define MXR_INT_CLEAR_VSYNC (1 << 11)
>>>>>> #define MXR_INT_STATUS_VSYNC (1 << 0)
>>>>>>
>>>>>> -/* bit for MXR_LAYER_CFG */
>>>>>> +/* bits for MXR_LAYER_CFG */
>>>>>> #define MXR_LAYER_CFG_GRP1_VAL(x) MXR_MASK_VAL(x, 11, 8)
>>>>>> #define MXR_LAYER_CFG_GRP1_MASK MXR_LAYER_CFG_GRP1_VAL(~0)
>>>>>> #define MXR_LAYER_CFG_GRP0_VAL(x) MXR_MASK_VAL(x, 7, 4)
>>>>>> @@ -152,5 +152,8 @@
>>>>>> #define MXR_LAYER_CFG_VP_VAL(x) MXR_MASK_VAL(x, 3, 0)
>>>>>> #define MXR_LAYER_CFG_VP_MASK MXR_LAYER_CFG_VP_VAL(~0)
>>>>>>
>>>>>> +/* bits for MXR_CM_COEFF_Y */
>>>>>> +#define MXR_CM_COEFF_RGB_FULL (1 << 30)
>>>>>> +
>>>>>> #endif /* SAMSUNG_REGS_MIXER_H */
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> dri-devel mailing list
>>>>> dri-devel at lists.freedesktop.org
>>>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
>>>> the body of a message to majordomo at vger.kernel.org
>>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>>
>>>
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
>>> the body of a message to majordomo at vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>>
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
>> the body of a message to majordomo at vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>
>
>
>
>
More information about the dri-devel
mailing list