vdac: get cputype from dts

PD#174269: get cputype from dts

Change-Id: I50e240e8d1f2aa275a2c215989e02e8b51cb6738
Signed-off-by: Nian Jing <nian.jing@amlogic.com>
This commit is contained in:
Nian Jing
2018-09-27 13:32:14 +08:00
committed by Jianxin Pan
parent cb56da4fc1
commit 42def0031c
40 changed files with 163 additions and 205 deletions

View File

@@ -562,6 +562,11 @@
cpu_ver_name {
compatible = "amlogic, cpu-major-id-gxl";
};
vdac {
compatible = "amlogic, vdac-gxl";
status = "okay";
};
}; /* end of root */
&pinctrl_aobus {

View File

@@ -1049,6 +1049,11 @@
reg_base = <0xda838400>;
interrupts = <0 51 1>;
};
vdac {
compatible = "amlogic, vdac-txl";
status = "okay";
};
}; /* end of / */
&gpu{

View File

@@ -938,6 +938,11 @@
cpu_ver_name {
compatible = "amlogic, cpu-major-id-txlx";
};
vdac {
compatible = "amlogic, vdac-txlx";
status = "okay";
};
}; /* end of / */
&pinctrl_aobus {

View File

@@ -909,12 +909,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -932,12 +932,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -938,12 +938,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -582,12 +582,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -561,12 +561,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -572,12 +572,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -679,12 +679,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -640,12 +640,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -669,12 +669,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -655,12 +655,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -594,12 +594,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -594,12 +594,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -586,12 +586,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -644,12 +644,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -635,12 +635,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -645,12 +645,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -634,12 +634,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -572,12 +572,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -668,12 +668,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -582,12 +582,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxl";
dev_name = "cvbsout";

View File

@@ -684,12 +684,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxm";
dev_name = "cvbsout";

View File

@@ -679,12 +679,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxm";
dev_name = "cvbsout";

View File

@@ -584,12 +584,6 @@
fr_auto_policy = <0>;
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-gxm";
dev_name = "cvbsout";

View File

@@ -1163,8 +1163,7 @@
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
compatible = "amlogic, vdac-g12a";
status = "okay";
};

View File

@@ -1201,9 +1201,8 @@
};
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "disabled";
compatible = "amlogic, vdac-g12b";
status = "okay";
};
canvas: canvas{

View File

@@ -549,6 +549,11 @@
cpu_ver_name {
compatible = "amlogic, cpu-major-id-gxl";
};
vdac {
compatible = "amlogic, vdac-gxl";
status = "okay";
};
}; /* end of root */
&pinctrl_aobus {

View File

@@ -539,6 +539,11 @@
ranges = <0x0 0x0 0x0 0xd0000000 0x0 0x200000>;
};
}; /* end of soc */
vdac {
compatible = "amlogic, vdac-gxl";
status = "okay";
};
}; /* end of root */
&pinctrl_aobus {

View File

@@ -637,6 +637,11 @@
cpu_ver_name {
compatible = "amlogic, cpu-major-id-gxm";
};
vdac {
compatible = "amlogic, vdac-gxm";
status = "okay";
};
}; /* end of root */
&pinctrl_aobus {

View File

@@ -1049,6 +1049,11 @@
reg_base = <0xda838400>;
interrupts = <0 51 1>;
};
vdac {
compatible = "amlogic, vdac-txl";
status = "okay";
};
}; /* end of / */
&gpu{

View File

@@ -938,6 +938,11 @@
cpu_ver_name {
compatible = "amlogic, cpu-major-id-txlx";
};
vdac {
compatible = "amlogic, vdac-txlx";
status = "okay";
};
}; /* end of / */
&pinctrl_aobus {

View File

@@ -908,12 +908,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -946,12 +946,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -929,12 +929,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -935,12 +935,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -928,12 +928,6 @@
};
}; /* End unifykey */
vdac {
compatible = "amlogic, vdac";
dev_name = "vdac";
status = "okay";
};
cvbsout {
compatible = "amlogic, cvbsout-txlx";
dev_name = "cvbsout";

View File

@@ -24,6 +24,7 @@
#include <linux/device.h>
#include <linux/cdev.h>
#include <linux/platform_device.h>
#include <linux/of_device.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/stat.h>
@@ -52,6 +53,7 @@ struct amvdac_dev_s {
struct class *clsp;
};
static struct amvdac_dev_s amvdac_dev;
static struct meson_vdac_data *s_vdac_data;
static struct mutex vdac_mutex;
#define HHI_VDAC_CNTL0 0xbd
@@ -152,7 +154,8 @@ void ana_ref_cntl0_bit9(bool on, unsigned int module_sel)
vdac_cntl0_bit9 &= ~VDAC_MODULE_CVBS_OUT;
break;
case VDAC_MODULE_AUDIO_OUT: /* audio out ctrl*/
if (is_meson_txl_cpu() || is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXL ||
s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
if (on)
vdac_cntl0_bit9 |= VDAC_MODULE_AUDIO_OUT;
else
@@ -170,10 +173,10 @@ void ana_ref_cntl0_bit9(bool on, unsigned int module_sel)
else
enable = 1;
if (is_meson_txl_cpu() || is_meson_txlx_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_TXL ||
s_vdac_data->cpu_id == CPU_TYPE_TXLX)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, enable, 9, 1);
else if (is_meson_g12a_cpu() ||
is_meson_g12b_cpu())
else if (s_vdac_data->cpu_id >= CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0_G12A, ~enable, 9, 1);
else
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, ~enable, 9, 1);
@@ -188,7 +191,7 @@ void vdac_out_cntl0_bit10(bool on, unsigned int module_sel)
bool enable = 0;
/*bit10 is for bandgap startup setting in g12a*/
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
if (s_vdac_data->cpu_id >= CPU_TYPE_G12AB)
return;
switch (module_sel & 0xf) {
@@ -274,7 +277,7 @@ void vdac_out_cntl0_bit0(bool on, unsigned int module_sel)
else
enable = 1;
if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
if (s_vdac_data->cpu_id >= CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0_G12A, enable, 0, 1);
else
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, enable, 0, 1);
@@ -324,9 +327,10 @@ void vdac_out_cntl1_bit3(bool on, unsigned int module_sel)
else
enable = 1;
if (is_meson_txl_cpu() || is_meson_txlx_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_TXL ||
s_vdac_data->cpu_id == CPU_TYPE_TXLX)
vdac_hiu_reg_setb(HHI_VDAC_CNTL1, enable, 3, 1);
else if (is_meson_g12a_cpu() || is_meson_g12b_cpu())
else if (s_vdac_data->cpu_id >= CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL1_G12A, ~enable, 3, 1);
else
vdac_hiu_reg_setb(HHI_VDAC_CNTL1, ~enable, 3, 1);
@@ -335,7 +339,7 @@ EXPORT_SYMBOL(vdac_out_cntl1_bit3);
void vdac_set_ctrl0_ctrl1(unsigned int ctrl0, unsigned int ctrl1)
{
if (is_meson_g12a_cpu() || is_meson_g12b_cpu()) {
if (s_vdac_data->cpu_id >= CPU_TYPE_G12AB) {
vdac_hiu_reg_write(HHI_VDAC_CNTL0_G12A, ctrl0);
vdac_hiu_reg_write(HHI_VDAC_CNTL1_G12A, ctrl1);
} else {
@@ -359,7 +363,7 @@ void vdac_enable(bool on, unsigned int module_sel)
ana_ref_cntl0_bit9(1, VDAC_MODULE_ATV_DEMOD);
/*after txlx need reset bandgap after bit9 enabled*/
/*bit10 reset bandgap in g12a*/
if (is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 1, 13, 1);
udelay(5);
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 13, 1);
@@ -371,7 +375,7 @@ void vdac_enable(bool on, unsigned int module_sel)
/*Cdac pwd*/
vdac_out_cntl1_bit3(1, VDAC_MODULE_ATV_DEMOD);
/* enable AFE output buffer */
if (!is_meson_g12a_cpu() && !is_meson_g12b_cpu())
if (s_vdac_data->cpu_id < CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 10, 1);
vdac_out_cntl0_bit0(1, VDAC_MODULE_ATV_DEMOD);
} else {
@@ -381,7 +385,7 @@ void vdac_enable(bool on, unsigned int module_sel)
break;
vdac_out_cntl0_bit0(0, VDAC_MODULE_ATV_DEMOD);
/* Disable AFE output buffer */
if (!is_meson_g12a_cpu() && !is_meson_g12b_cpu())
if (s_vdac_data->cpu_id < CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 10, 1);
/* enable dac output */
vdac_out_cntl1_bit3(0, VDAC_MODULE_ATV_DEMOD);
@@ -389,10 +393,10 @@ void vdac_enable(bool on, unsigned int module_sel)
break;
case VDAC_MODULE_DTV_DEMOD: /* dtv demod */
if (on) {
if (is_meson_gxlx_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_GXLX)
vdac_out_cntl1_bit3(1, VDAC_MODULE_DTV_DEMOD);
ana_ref_cntl0_bit9(1, VDAC_MODULE_DTV_DEMOD);
if (is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 1, 13, 1);
udelay(5);
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 13, 1);
@@ -400,7 +404,7 @@ void vdac_enable(bool on, unsigned int module_sel)
pri_flag |= VDAC_MODULE_DTV_DEMOD;
} else {
ana_ref_cntl0_bit9(0, VDAC_MODULE_DTV_DEMOD);
if (is_meson_gxlx_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_GXLX)
vdac_out_cntl1_bit3(0, VDAC_MODULE_DTV_DEMOD);
pri_flag &= ~VDAC_MODULE_DTV_DEMOD;
}
@@ -409,7 +413,7 @@ void vdac_enable(bool on, unsigned int module_sel)
if (on) {
ana_ref_cntl0_bit9(1, VDAC_MODULE_TVAFE);
/*after txlx need reset bandgap after bit9 enabled*/
if (is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 1, 13, 1);
udelay(5);
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 13, 1);
@@ -436,7 +440,7 @@ void vdac_enable(bool on, unsigned int module_sel)
vdac_out_cntl1_bit3(1, VDAC_MODULE_CVBS_OUT);
vdac_out_cntl0_bit0(1, VDAC_MODULE_CVBS_OUT);
ana_ref_cntl0_bit9(1, VDAC_MODULE_CVBS_OUT);
if (is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 1, 13, 1);
udelay(5);
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0, 13, 1);
@@ -451,8 +455,7 @@ void vdac_enable(bool on, unsigned int module_sel)
pri_flag &= ~VDAC_MODULE_CVBS_OUT;
if (pri_flag & VDAC_MODULE_ATV_DEMOD) {
vdac_out_cntl1_bit3(1, VDAC_MODULE_ATV_DEMOD);
if (!is_meson_g12a_cpu() &&
!is_meson_g12b_cpu())
if (s_vdac_data->cpu_id < CPU_TYPE_G12AB)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0,
0, 10, 1);
vdac_out_cntl0_bit0(1, VDAC_MODULE_ATV_DEMOD);
@@ -460,7 +463,7 @@ void vdac_enable(bool on, unsigned int module_sel)
vdac_out_cntl1_bit3(0, VDAC_MODULE_TVAFE);
vdac_out_cntl0_bit10(1, VDAC_MODULE_TVAFE);
} else if (pri_flag & VDAC_MODULE_DTV_DEMOD) {
if (is_meson_gxlx_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_GXLX)
vdac_out_cntl1_bit3(1,
VDAC_MODULE_DTV_DEMOD);
ana_ref_cntl0_bit9(1, VDAC_MODULE_DTV_DEMOD);
@@ -469,10 +472,12 @@ void vdac_enable(bool on, unsigned int module_sel)
break;
case VDAC_MODULE_AUDIO_OUT: /* audio demod */
/*Bandgap optimization*/
if (is_meson_txlx_cpu() || is_meson_txhd_cpu())
if (s_vdac_data->cpu_id == CPU_TYPE_TXHD ||
s_vdac_data->cpu_id == CPU_TYPE_TXLX)
vdac_hiu_reg_setb(HHI_VDAC_CNTL0, 0xe, 3, 5);
if (is_meson_txl_cpu() || is_meson_txlx_cpu()) {
if (s_vdac_data->cpu_id == CPU_TYPE_TXL ||
s_vdac_data->cpu_id == CPU_TYPE_TXLX) {
if (on)
ana_ref_cntl0_bit9(1, VDAC_MODULE_AUDIO_OUT);
else
@@ -515,14 +520,89 @@ static const struct file_operations amvdac_fops = {
.release = amvdac_release,
};
struct meson_vdac_data meson_gxtvbb_vdac_data = {
.cpu_id = CPU_TYPE_GXTVBB,
.name = "meson-gxtvbb-vdac",
};
struct meson_vdac_data meson_gx_l_m_vdac_data = {
.cpu_id = CPU_TYPE_GX_L_M,
.name = "meson-gx_l_m-vdac",
};
struct meson_vdac_data meson_txl_vdac_data = {
.cpu_id = CPU_TYPE_TXL,
.name = "meson-txl-vdac",
};
struct meson_vdac_data meson_txlx_vdac_data = {
.cpu_id = CPU_TYPE_TXLX,
.name = "meson-txlx-vdac",
};
struct meson_vdac_data meson_gxlx_vdac_data = {
.cpu_id = CPU_TYPE_GXLX,
.name = "meson-gxlx-vdac",
};
struct meson_vdac_data meson_txhd_vdac_data = {
.cpu_id = CPU_TYPE_TXHD,
.name = "meson-txhd-vdac",
};
struct meson_vdac_data meson_g12ab_vdac_data = {
.cpu_id = CPU_TYPE_G12AB,
.name = "meson-g12ab-vdac",
};
static const struct of_device_id meson_vdac_dt_match[] = {
{
.compatible = "amlogic, vdac-gxtvbb",
.data = &meson_gxtvbb_vdac_data,
}, {
.compatible = "amlogic, vdac-gxl",
.data = &meson_gx_l_m_vdac_data,
}, {
.compatible = "amlogic, vdac-gxm",
.data = &meson_gx_l_m_vdac_data,
}, {
.compatible = "amlogic, vdac-txl",
.data = &meson_txl_vdac_data,
}, {
.compatible = "amlogic, vdac-txlx",
.data = &meson_txlx_vdac_data,
}, {
.compatible = "amlogic, vdac-gxlx",
.data = &meson_gxlx_vdac_data,
}, {
.compatible = "amlogic, vdac-txhd",
.data = &meson_txhd_vdac_data,
}, {
.compatible = "amlogic, vdac-g12a",
.data = &meson_g12ab_vdac_data,
}, {
.compatible = "amlogic, vdac-g12b",
.data = &meson_g12ab_vdac_data,
},
{},
};
static int aml_vdac_probe(struct platform_device *pdev)
{
int ret = 0;
const struct of_device_id *match;
struct amvdac_dev_s *devp = &amvdac_dev;
memset(devp, 0, (sizeof(struct amvdac_dev_s)));
pr_info("\n%s: probe start\n", __func__);
match = of_match_device(meson_vdac_dt_match, &pdev->dev);
if (match == NULL) {
pr_err("%s,no matched table\n", __func__);
return -1;
}
s_vdac_data = (struct meson_vdac_data *)match->data;
pr_info("%s:probe start.cpu_id:%d,name:%s\n", __func__,
s_vdac_data->cpu_id, s_vdac_data->name);
ret = alloc_chrdev_region(&devp->devno, 0, 1, AMVDAC_NAME);
if (ret < 0)
@@ -608,19 +688,11 @@ static void amvdac_drv_shutdown(struct platform_device *pdev)
vdac_set_ctrl0_ctrl1(cntl0, cntl1);
}
static const struct of_device_id aml_vdac_dt_match[] = {
{
.compatible = "amlogic, vdac",
},
{},
};
static struct platform_driver aml_vdac_driver = {
.driver = {
.name = "aml_vdac",
.owner = THIS_MODULE,
.of_match_table = aml_vdac_dt_match,
.of_match_table = meson_vdac_dt_match,
},
.probe = aml_vdac_probe,
.remove = __exit_p(aml_vdac_remove),

View File

@@ -18,6 +18,22 @@
#ifndef _VDAC_DEV_H_
#define _VDAC_DEV_H_
enum vdac_cpu_type {
CPU_TYPE_GXTVBB = 0,
CPU_TYPE_GX_L_M = 1,
CPU_TYPE_TXL = 2,
CPU_TYPE_TXLX = 3,
CPU_TYPE_GXLX = 4,
CPU_TYPE_TXHD = 5,
CPU_TYPE_G12AB = 6,
CPU_TYPE_TL1 = 7,
};
struct meson_vdac_data {
enum vdac_cpu_type cpu_id;
const char *name;
};
extern void vdac_set_ctrl0_ctrl1(unsigned int ctrl0, unsigned int ctrl1);
#endif