embox

Форк
0
74 строки · 1.6 Кб
1
/**
2
 * @file
3
 *
4
 * @date 30.03.2017
5
 * @author Anton Bondarev
6
 */
7
#include <util/log.h>
8
#include <stdint.h>
9

10
#include <drivers/common/memory.h>
11
#include <drivers/clk/ccm_imx6.h>
12
#include <hal/reg.h>
13

14
#include <embox/unit.h>
15

16
#include "dw_hdmi.h"
17

18
#include <framework/mod/options.h>
19

20
#define DW_HDMI_BASE          OPTION_GET(NUMBER, base_addr)
21

22
EMBOX_UNIT_INIT(dw_hdmi_init);
23

24
struct dw_hdmi {
25
	uint32_t regs;
26
	uint8_t (*read)(struct dw_hdmi *hdmi, int offset);
27
	void (*write)(struct dw_hdmi *hdmi, uint8_t val, int offset) ;
28
};
29

30
static struct dw_hdmi dw_hdmi;
31

32
static void dw_hdmi_writeb(struct dw_hdmi *hdmi, uint8_t val, int offset)
33
{
34
	REG8_STORE(hdmi->regs + offset, val);
35
}
36

37
static uint8_t dw_hdmi_readb(struct dw_hdmi *hdmi, int offset)
38
{
39
	return REG8_LOAD(hdmi->regs + offset);
40
}
41

42
static inline void hdmi_writeb(struct dw_hdmi *hdmi, uint8_t val, int offset)
43
{
44
	hdmi->write(hdmi, val, offset);
45
}
46

47
static inline uint8_t hdmi_readb(struct dw_hdmi *hdmi, int offset)
48
{
49
	return hdmi->read(hdmi, offset);
50
}
51

52
static int dw_hdmi_init(void) {
53
	struct dw_hdmi *hdmi;
54
	hdmi = &dw_hdmi;
55

56
	dw_hdmi.regs = DW_HDMI_BASE;
57
	dw_hdmi.write = dw_hdmi_writeb;
58
	dw_hdmi.read = dw_hdmi_readb;
59

60
	if (-1 == clk_enable("isfr")) {
61
		log_error("Clk 'isfr' didn't find");
62
	}
63
	if (-1 == clk_enable("iahb")) {
64
		log_error("Clk 'iahb' didn't find");
65
	}
66
	log_debug("Detected HDMI controller 0x%x:0x%x:0x%x:0x%x\n",
67
		 hdmi_readb(hdmi, HDMI_DESIGN_ID),
68
		 hdmi_readb(hdmi, HDMI_REVISION_ID),
69
		 hdmi_readb(hdmi, HDMI_PRODUCT_ID0),
70
		 hdmi_readb(hdmi, HDMI_PRODUCT_ID1));
71
	return 0;
72
}
73

74
PERIPH_MEMORY_DEFINE(dw_hdmi, DW_HDMI_BASE, 0x8000);
75

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.