162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2013 Texas Instruments Inc.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * David Griego, <dagriego@biglakesoftware.com>
662306a36Sopenharmony_ci * Dale Farnsworth, <dale@farnsworth.org>
762306a36Sopenharmony_ci * Archit Taneja, <archit@ti.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci#ifndef TI_CSC_H
1062306a36Sopenharmony_ci#define TI_CSC_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci/* VPE color space converter regs */
1362306a36Sopenharmony_ci#define CSC_CSC00		0x00
1462306a36Sopenharmony_ci#define CSC_A0_MASK		0x1fff
1562306a36Sopenharmony_ci#define CSC_A0_SHIFT		0
1662306a36Sopenharmony_ci#define CSC_B0_MASK		0x1fff
1762306a36Sopenharmony_ci#define CSC_B0_SHIFT		16
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#define CSC_CSC01		0x04
2062306a36Sopenharmony_ci#define CSC_C0_MASK		0x1fff
2162306a36Sopenharmony_ci#define CSC_C0_SHIFT		0
2262306a36Sopenharmony_ci#define CSC_A1_MASK		0x1fff
2362306a36Sopenharmony_ci#define CSC_A1_SHIFT		16
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#define CSC_CSC02		0x08
2662306a36Sopenharmony_ci#define CSC_B1_MASK		0x1fff
2762306a36Sopenharmony_ci#define CSC_B1_SHIFT		0
2862306a36Sopenharmony_ci#define CSC_C1_MASK		0x1fff
2962306a36Sopenharmony_ci#define CSC_C1_SHIFT		16
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#define CSC_CSC03		0x0c
3262306a36Sopenharmony_ci#define CSC_A2_MASK		0x1fff
3362306a36Sopenharmony_ci#define CSC_A2_SHIFT		0
3462306a36Sopenharmony_ci#define CSC_B2_MASK		0x1fff
3562306a36Sopenharmony_ci#define CSC_B2_SHIFT		16
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci#define CSC_CSC04		0x10
3862306a36Sopenharmony_ci#define CSC_C2_MASK		0x1fff
3962306a36Sopenharmony_ci#define CSC_C2_SHIFT		0
4062306a36Sopenharmony_ci#define CSC_D0_MASK		0x0fff
4162306a36Sopenharmony_ci#define CSC_D0_SHIFT		16
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci#define CSC_CSC05		0x14
4462306a36Sopenharmony_ci#define CSC_D1_MASK		0x0fff
4562306a36Sopenharmony_ci#define CSC_D1_SHIFT		0
4662306a36Sopenharmony_ci#define CSC_D2_MASK		0x0fff
4762306a36Sopenharmony_ci#define CSC_D2_SHIFT		16
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci#define CSC_BYPASS		(1 << 28)
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_cistruct csc_data {
5262306a36Sopenharmony_ci	void __iomem		*base;
5362306a36Sopenharmony_ci	struct resource		*res;
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci	struct platform_device	*pdev;
5662306a36Sopenharmony_ci};
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_civoid csc_dump_regs(struct csc_data *csc);
5962306a36Sopenharmony_civoid csc_set_coeff_bypass(struct csc_data *csc, u32 *csc_reg5);
6062306a36Sopenharmony_civoid csc_set_coeff(struct csc_data *csc, u32 *csc_reg0,
6162306a36Sopenharmony_ci		   struct v4l2_format *src_fmt, struct v4l2_format *dst_fmt);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_cistruct csc_data *csc_create(struct platform_device *pdev, const char *res_name);
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci#endif
66