summaryrefslogtreecommitdiff
path: root/include/linux/mfd/ab8500/denc.h
blob: 25a09a2c2bd4a7cb5f97287d6e28beb3b8b7ad4b (plain)
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
75
76
77
78
79
80
81
82
/*
 * Copyright (C) ST-Ericsson SA 2010
 *
 * AB8500 tvout driver interface
 *
 * Author: Marcel Tunnissen <marcel.tuennissen@stericsson.com>
 * for ST-Ericsson.
 *
 * License terms: GNU General Public License (GPL), version 2.
 */
#ifndef __AB8500_DENC__H__
#define __AB8500_DENC__H__

#include <linux/platform_device.h>

struct ab8500_denc_platform_data {
	/* Platform info */
	bool ddr_enable;
	bool ddr_little_endian;
};

enum ab8500_denc_TV_std {
	TV_STD_PAL_BDGHI,
	TV_STD_PAL_N,
	TV_STD_PAL_M,
	TV_STD_NTSC_M,
};

enum ab8500_denc_cr_filter_bandwidth {
	TV_CR_NTSC_LOW_DEF_FILTER,
	TV_CR_PAL_LOW_DEF_FILTER,
	TV_CR_NTSC_HIGH_DEF_FILTER,
	TV_CR_PAL_HIGH_DEF_FILTER,
};

enum ab8500_denc_phase_reset_mode {
	TV_PHASE_RST_MOD_DISABLE,
	TV_PHASE_RST_MOD_FROM_PHASE_BUF,
	TV_PHASE_RST_MOD_FROM_INC_DFS,
	TV_PHASE_RST_MOD_RST,
};

enum ab8500_denc_plug_time {
	TV_PLUG_TIME_0_5S,
	TV_PLUG_TIME_1S,
	TV_PLUG_TIME_1_5S,
	TV_PLUG_TIME_2S,
	TV_PLUG_TIME_2_5S,
	TV_PLUG_TIME_3S,
};

struct ab8500_denc_conf {
	/* register settings for DENC_configuration */
	bool					act_output;
	enum ab8500_denc_TV_std			TV_std;
	bool					progressive;
	bool					test_pattern;
	bool					partial_blanking;
	bool					blank_all;
	bool					black_level_setup;
	enum ab8500_denc_cr_filter_bandwidth	cr_filter;
	bool					suppress_col;
	enum ab8500_denc_phase_reset_mode	phase_reset_mode;
	bool					dac_enable;
	bool					act_dc_output;
};

struct platform_device *ab8500_denc_get_device(void);
void ab8500_denc_put_device(struct platform_device *pdev);

void ab8500_denc_reset(struct platform_device *pdev, bool hard);
void ab8500_denc_power_up(struct platform_device *pdev);
void ab8500_denc_power_down(struct platform_device *pdev);

void ab8500_denc_conf(struct platform_device *pdev,
						struct ab8500_denc_conf *conf);
void ab8500_denc_conf_plug_detect(struct platform_device *pdev,
					bool enable, bool load_RC,
					enum ab8500_denc_plug_time time);
void ab8500_denc_mask_int_plug_det(struct platform_device *pdev, bool plug,
								bool unplug);
#endif /* __AB8500_DENC__H__ */