hc
2024-05-09 b9d5c334faa47a75f1f28e72d203fc0334e8471d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (C) 2014 Free Electrons
 * Copyright (C) 2014 Atmel
 *
 * Author: Boris BREZILLON <boris.brezillon@free-electrons.com>
 */
 
#ifndef __LINUX_MFD_HLCDC_H
#define __LINUX_MFD_HLCDC_H
 
#include <linux/clk.h>
#include <linux/regmap.h>
 
#define ATMEL_HLCDC_CFG(i)        ((i) * 0x4)
#define ATMEL_HLCDC_SIG_CFG        LCDCFG(5)
#define ATMEL_HLCDC_HSPOL        BIT(0)
#define ATMEL_HLCDC_VSPOL        BIT(1)
#define ATMEL_HLCDC_VSPDLYS        BIT(2)
#define ATMEL_HLCDC_VSPDLYE        BIT(3)
#define ATMEL_HLCDC_DISPPOL        BIT(4)
#define ATMEL_HLCDC_DITHER        BIT(6)
#define ATMEL_HLCDC_DISPDLY        BIT(7)
#define ATMEL_HLCDC_MODE_MASK        GENMASK(9, 8)
#define ATMEL_HLCDC_PP            BIT(10)
#define ATMEL_HLCDC_VSPSU        BIT(12)
#define ATMEL_HLCDC_VSPHO        BIT(13)
#define ATMEL_HLCDC_GUARDTIME_MASK    GENMASK(20, 16)
 
#define ATMEL_HLCDC_EN            0x20
#define ATMEL_HLCDC_DIS            0x24
#define ATMEL_HLCDC_SR            0x28
#define ATMEL_HLCDC_IER            0x2c
#define ATMEL_HLCDC_IDR            0x30
#define ATMEL_HLCDC_IMR            0x34
#define ATMEL_HLCDC_ISR            0x38
 
#define ATMEL_HLCDC_CLKPOL        BIT(0)
#define ATMEL_HLCDC_CLKSEL        BIT(2)
#define ATMEL_HLCDC_CLKPWMSEL        BIT(3)
#define ATMEL_HLCDC_CGDIS(i)        BIT(8 + (i))
#define ATMEL_HLCDC_CLKDIV_SHFT        16
#define ATMEL_HLCDC_CLKDIV_MASK        GENMASK(23, 16)
#define ATMEL_HLCDC_CLKDIV(div)        ((div - 2) << ATMEL_HLCDC_CLKDIV_SHFT)
 
#define ATMEL_HLCDC_PIXEL_CLK        BIT(0)
#define ATMEL_HLCDC_SYNC        BIT(1)
#define ATMEL_HLCDC_DISP        BIT(2)
#define ATMEL_HLCDC_PWM            BIT(3)
#define ATMEL_HLCDC_SIP            BIT(4)
 
#define ATMEL_HLCDC_SOF            BIT(0)
#define ATMEL_HLCDC_SYNCDIS        BIT(1)
#define ATMEL_HLCDC_FIFOERR        BIT(4)
#define ATMEL_HLCDC_LAYER_STATUS(x)    BIT((x) + 8)
 
/**
 * Structure shared by the MFD device and its subdevices.
 *
 * @regmap: register map used to access HLCDC IP registers
 * @periph_clk: the hlcdc peripheral clock
 * @sys_clk: the hlcdc system clock
 * @slow_clk: the system slow clk
 * @irq: the hlcdc irq
 */
struct atmel_hlcdc {
   struct regmap *regmap;
   struct clk *periph_clk;
   struct clk *sys_clk;
   struct clk *slow_clk;
   int irq;
};
 
#endif /* __LINUX_MFD_HLCDC_H */