From cb2fc41bd28c3b314b32f081df37c29d3af05737 Mon Sep 17 00:00:00 2001 From: Alan Tull Date: Thu, 15 Sep 2011 15:51:33 -0500 Subject: [PATCH] ENGR00160860-1 hdmi audio driver Audio driver for i.Mx built-in HDMI Transmitter. * Uses HDMI Transmitter's built-in DMA. * Adds IEC958-style digital audio header info to the raw audio. * Gets pixel clock from the IPU driver and calculates clock regenerator values (cts and N). * Move ipu_id, and disp_id from the HDMI's platform data to the HDMI mfd's platform data. Saves them in the hdmi mfd. Signed-off-by: Alan Tull --- arch/arm/configs/imx6_defconfig | 5 +- arch/arm/mach-mx6/board-mx6q_sabreauto.c | 8 +- arch/arm/mach-mx6/devices-imx6q.h | 9 +- arch/arm/plat-mxc/devices/Makefile | 2 + .../devices/platform-imx-hdmi-soc-dai.c | 47 ++++++ .../plat-mxc/devices/platform-imx-hdmi-soc.c | 28 ++++ .../plat-mxc/devices/platform-mxc-hdmi-core.c | 6 +- .../plat-mxc/include/mach/devices-common.h | 11 +- arch/arm/plat-mxc/include/mach/mxc_hdmi.h | 137 ++++++++++++++++-- 9 files changed, 228 insertions(+), 25 deletions(-) create mode 100644 arch/arm/plat-mxc/devices/platform-imx-hdmi-soc-dai.c create mode 100644 arch/arm/plat-mxc/devices/platform-imx-hdmi-soc.c diff --git a/arch/arm/configs/imx6_defconfig b/arch/arm/configs/imx6_defconfig index 81f9dd6a89f6..550d63a89c34 100644 --- a/arch/arm/configs/imx6_defconfig +++ b/arch/arm/configs/imx6_defconfig @@ -1443,9 +1443,6 @@ CONFIG_SND_DRIVERS=y CONFIG_SND_ARM=y CONFIG_SND_SPI=y CONFIG_SND_USB=y -# CONFIG_SND_USB_AUDIO is not set -# CONFIG_SND_USB_UA101 is not set -# CONFIG_SND_USB_CAIAQ is not set CONFIG_SND_SOC=y # CONFIG_SND_SOC_CACHE_LZO is not set CONFIG_SND_SOC_AC97_BUS=y @@ -1454,10 +1451,12 @@ CONFIG_SND_MXC_SOC_MX2=y CONFIG_SND_MXC_SOC_SPDIF_DAI=y CONFIG_SND_SOC_IMX_CS42888=y CONFIG_SND_SOC_IMX_SPDIF=y +CONFIG_SND_SOC_IMX_HDMI=y CONFIG_SND_SOC_I2C_AND_SPI=y # CONFIG_SND_SOC_ALL_CODECS is not set CONFIG_SND_SOC_MXC_SPDIF=y CONFIG_SND_SOC_CS42888=y +CONFIG_SND_SOC_MXC_HDMI=y # CONFIG_SOUND_PRIME is not set CONFIG_AC97_BUS=y CONFIG_HID_SUPPORT=y diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.c b/arch/arm/mach-mx6/board-mx6q_sabreauto.c index 7ef2be92f06f..5f76cbc3a18e 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabreauto.c +++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.c @@ -767,6 +767,9 @@ static void hdmi_init(int ipu_id, int disp_id) static struct fsl_mxc_hdmi_platform_data hdmi_data = { .init = hdmi_init, +}; + +static struct fsl_mxc_hdmi_core_platform_data hdmi_core_data = { .ipu_id = 0, .disp_id = 0, }; @@ -942,7 +945,7 @@ static void __init mx6_board_init(void) ARRAY_SIZE(mx6q_sabreauto_esai_record_pads)); mx6q_sabreauto_init_uart(); - imx6q_add_mxc_hdmi_core(); + imx6q_add_mxc_hdmi_core(&hdmi_core_data); imx6q_add_ipuv3(0, &ipu_data[0]); imx6q_add_ipuv3(1, &ipu_data[1]); @@ -1018,6 +1021,9 @@ static void __init mx6_board_init(void) imx6q_add_spdif(&mxc_spdif_data); imx6q_add_spdif_dai(); imx6q_add_spdif_audio_device(); + + imx6q_add_hdmi_soc(); + imx6q_add_hdmi_soc_dai(); } extern void __iomem *twd_base; diff --git a/arch/arm/mach-mx6/devices-imx6q.h b/arch/arm/mach-mx6/devices-imx6q.h index dd83e095b6a7..d010b62436c9 100644 --- a/arch/arm/mach-mx6/devices-imx6q.h +++ b/arch/arm/mach-mx6/devices-imx6q.h @@ -117,8 +117,8 @@ extern const struct imx_mxc_hdmi_data imx6q_mxc_hdmi_data __initconst; imx_add_mxc_hdmi(&imx6q_mxc_hdmi_data, pdata) extern const struct imx_mxc_hdmi_core_data imx6q_mxc_hdmi_core_data __initconst; -#define imx6q_add_mxc_hdmi_core() \ - imx_add_mxc_hdmi_core(&imx6q_mxc_hdmi_core_data) +#define imx6q_add_mxc_hdmi_core(pdata) \ + imx_add_mxc_hdmi_core(&imx6q_mxc_hdmi_core_data, pdata) extern const struct imx_vpu_data imx6q_vpu_data __initconst; #define imx6q_add_vpu() imx_add_vpu(&imx6q_vpu_data) @@ -158,3 +158,8 @@ extern const struct imx_spdif_dai_data imx6q_spdif_dai_data __initconst; #define imx6q_add_spdif_dai() imx_add_spdif_dai(&imx6q_spdif_dai_data) #define imx6q_add_spdif_audio_device(pdata) imx_add_spdif_audio_device() + +#define imx6q_add_hdmi_soc() imx_add_hdmi_soc() +extern const struct imx_hdmi_soc_data imx6q_imx_hdmi_soc_dai_data __initconst; +#define imx6q_add_hdmi_soc_dai() \ + imx_add_hdmi_soc_dai(&imx6q_imx_hdmi_soc_dai_data) diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile index 0159733e32bb..831e259d7b01 100755 --- a/arch/arm/plat-mxc/devices/Makefile +++ b/arch/arm/plat-mxc/devices/Makefile @@ -55,4 +55,6 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB_WAKEUP) += platform-fsl-usb2-wakeup.o obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_PM) += platform-imx-pm.o obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_HDMI) += platform-mxc_hdmi.o obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_HDMI) += platform-mxc-hdmi-core.o +obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_HDMI) += platform-imx-hdmi-soc.o +obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_HDMI) += platform-imx-hdmi-soc-dai.o obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_ASRC) += platform-imx-asrc.o diff --git a/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc-dai.c b/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc-dai.c new file mode 100644 index 000000000000..813f954517bb --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc-dai.c @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2011 Freescale Semiconductor, Inc. + */ + +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include + +#define imx_hdmi_soc_data_entry_single(soc) \ + { \ + .irq = soc ## _INT_HDMI_TX, \ + } + +#ifdef CONFIG_SOC_IMX6Q +const struct imx_hdmi_soc_data imx6q_imx_hdmi_soc_dai_data __initconst = + imx_hdmi_soc_data_entry_single(MX6Q); +#endif + +struct platform_device *__init imx_add_hdmi_soc_dai( + const struct imx_hdmi_soc_data *data) +{ + struct resource res[] = { + { + .start = data->irq, + .end = data->irq, + .flags = IORESOURCE_IRQ, + }, + }; + + return imx_add_platform_device("imx-hdmi-soc-dai", 0, + res, ARRAY_SIZE(res), NULL, 0); +} diff --git a/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc.c b/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc.c new file mode 100644 index 000000000000..33c8a685e8a4 --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imx-hdmi-soc.c @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. + */ + +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include + +struct platform_device *__init imx_add_hdmi_soc(void) +{ return imx_add_platform_device("mxc_hdmi_soc", 0, + NULL, 0, NULL, 0); +} + diff --git a/arch/arm/plat-mxc/devices/platform-mxc-hdmi-core.c b/arch/arm/plat-mxc/devices/platform-mxc-hdmi-core.c index bee2de3d2de9..e0c1906166a2 100644 --- a/arch/arm/plat-mxc/devices/platform-mxc-hdmi-core.c +++ b/arch/arm/plat-mxc/devices/platform-mxc-hdmi-core.c @@ -34,7 +34,8 @@ const struct imx_mxc_hdmi_core_data imx6q_mxc_hdmi_core_data __initconst = #endif struct platform_device *__init imx_add_mxc_hdmi_core( - const struct imx_mxc_hdmi_core_data *data) + const struct imx_mxc_hdmi_core_data *data, + const struct fsl_mxc_hdmi_core_platform_data *pdata) { struct resource res[] = { { @@ -45,6 +46,5 @@ struct platform_device *__init imx_add_mxc_hdmi_core( }; return imx_add_platform_device_dmamask("mxc_hdmi_core", -1, - res, ARRAY_SIZE(res), NULL, 0, - DMA_BIT_MASK(32)); + res, ARRAY_SIZE(res), pdata, sizeof(*pdata), DMA_BIT_MASK(32)); } diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h index 693e14c3a916..5061be63174f 100755 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/plat-mxc/include/mach/devices-common.h @@ -553,7 +553,8 @@ struct imx_mxc_hdmi_core_data { }; struct platform_device *__init imx_add_mxc_hdmi_core( - const struct imx_mxc_hdmi_core_data *data); + const struct imx_mxc_hdmi_core_data *data, + const struct fsl_mxc_hdmi_core_platform_data *pdata); #include struct imx_imx_asrc_data { @@ -571,6 +572,14 @@ struct imx_imx_asrc_data { struct platform_device *__init imx_add_imx_asrc( const struct imx_imx_asrc_data *data, const struct imx_asrc_platform_data *pdata); + +struct imx_hdmi_soc_data { + resource_size_t irq; +}; +struct platform_device *__init imx_add_hdmi_soc(void); + +struct platform_device *__init imx_add_hdmi_soc_dai( + const struct imx_hdmi_soc_data *data); struct platform_device *__init imx_add_dcp( struct imx_fsl_usb2_otg_data { diff --git a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h index 23ad1827ff39..a7f22de9b407 100644 --- a/arch/arm/plat-mxc/include/mach/mxc_hdmi.h +++ b/arch/arm/plat-mxc/include/mach/mxc_hdmi.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright (C) 2011 Freescale Semiconductor, Inc. */ /* @@ -177,17 +177,6 @@ #define HDMI_FC_SPDDEVICEINF 0x1062 #define HDMI_FC_AUDSCONF 0x1063 #define HDMI_FC_AUDSSTAT 0x1064 -#define HDMI_FC_AUDSV 0x1065 -#define HDMI_FC_AUDSU 0x1066 -#define HDMI_FC_AUDSCHNLS0 0x1067 -#define HDMI_FC_AUDSCHNLS1 0x1068 -#define HDMI_FC_AUDSCHNLS2 0x1069 -#define HDMI_FC_AUDSCHNLS3 0x106A -#define HDMI_FC_AUDSCHNLS4 0x106B -#define HDMI_FC_AUDSCHNLS5 0x106C -#define HDMI_FC_AUDSCHNLS6 0x106D -#define HDMI_FC_AUDSCHNLS7 0x106E -#define HDMI_FC_AUDSCHNLS8 0x106F #define HDMI_FC_DATACH0FILL 0x1070 #define HDMI_FC_DATACH1FILL 0x1071 #define HDMI_FC_DATACH2FILL 0x1072 @@ -381,9 +370,6 @@ #define HDMI_AUD_CONF1 0x3101 #define HDMI_AUD_INT 0x3102 #define HDMI_AUD_CONF2 0x3103 -#define HDMI_AUD_SPDIF0 0x3300 -#define HDMI_AUD_SPDIF 0x3301 -#define HDMI_AUD_SPDIFINT 0x3302 #define HDMI_AUD_N1 0x3200 #define HDMI_AUD_N2 0x3201 #define HDMI_AUD_N3 0x3202 @@ -398,6 +384,7 @@ #define HDMI_AUD_HBR_MASK 0x3404 /* Generic Parallel Audio Interface Registers */ +/* Not used as GPAUD interface is not enabled in hw */ #define HDMI_GP_CONF0 0x3500 #define HDMI_GP_CONF1 0x3501 #define HDMI_GP_CONF2 0x3502 @@ -589,6 +576,22 @@ enum { HDMI_IH_MUTE_I2CMPHY_STAT0_I2CMPHYDONE = 0x2, HDMI_IH_MUTE_I2CMPHY_STAT0_I2CMPHYERROR = 0x1, +/* IH_AHBDMAAUD_STAT0 field values */ + HDMI_IH_AHBDMAAUD_STAT0_ERROR = 0x20, + HDMI_IH_AHBDMAAUD_STAT0_LOST = 0x10, + HDMI_IH_AHBDMAAUD_STAT0_RETRY = 0x08, + HDMI_IH_AHBDMAAUD_STAT0_DONE = 0x04, + HDMI_IH_AHBDMAAUD_STAT0_BUFFFULL = 0x02, + HDMI_IH_AHBDMAAUD_STAT0_BUFFEMPTY = 0x01, + +/* IH_MUTE_AHBDMAAUD_STAT0 field values */ + HDMI_IH_MUTE_AHBDMAAUD_STAT0_ERROR = 0x20, + HDMI_IH_MUTE_AHBDMAAUD_STAT0_LOST = 0x10, + HDMI_IH_MUTE_AHBDMAAUD_STAT0_RETRY = 0x08, + HDMI_IH_MUTE_AHBDMAAUD_STAT0_DONE = 0x04, + HDMI_IH_MUTE_AHBDMAAUD_STAT0_BUFFFULL = 0x02, + HDMI_IH_MUTE_AHBDMAAUD_STAT0_BUFFEMPTY = 0x01, + /* IH_MUTE field values */ HDMI_IH_MUTE_MUTE_WAKEUP_INTERRUPT = 0x2, HDMI_IH_MUTE_MUTE_ALL_INTERRUPT = 0x1, @@ -684,10 +687,66 @@ enum { HDMI_FC_INVIDCONF_IN_I_P_INTERLACED = 0x1, HDMI_FC_INVIDCONF_IN_I_P_PROGRESSIVE = 0x0, +/* FC_AUDICONF0 field values */ + HDMI_FC_AUDICONF0_CC_OFFSET = 4, + HDMI_FC_AUDICONF0_CC_MASK = 0x70, + HDMI_FC_AUDICONF0_CT_OFFSET = 0, + HDMI_FC_AUDICONF0_CT_MASK = 0xF, + +/* FC_AUDICONF1 field values */ + HDMI_FC_AUDICONF1_SS_OFFSET = 3, + HDMI_FC_AUDICONF1_SS_MASK = 0x18, + HDMI_FC_AUDICONF1_SF_OFFSET = 0, + HDMI_FC_AUDICONF1_SF_MASK = 0x7, + +/* FC_AUDICONF3 field values */ + HDMI_FC_AUDICONF3_LFEPBL_OFFSET = 5, + HDMI_FC_AUDICONF3_LFEPBL_MASK = 0x60, + HDMI_FC_AUDICONF3_DM_INH_OFFSET = 4, + HDMI_FC_AUDICONF3_DM_INH_MASK = 0x10, + HDMI_FC_AUDICONF3_LSV_OFFSET = 0, + HDMI_FC_AUDICONF3_LSV_MASK = 0xF, + +/* FC_AUDSCHNLS0 field values */ + HDMI_FC_AUDSCHNLS0_CGMSA_OFFSET = 4, + HDMI_FC_AUDSCHNLS0_CGMSA_MASK = 0x30, + HDMI_FC_AUDSCHNLS0_COPYRIGHT_OFFSET = 0, + HDMI_FC_AUDSCHNLS0_COPYRIGHT_MASK = 0x01, + +/* FC_AUDSCHNLS3-6 field values */ + HDMI_FC_AUDSCHNLS3_OIEC_CH0_OFFSET = 0, + HDMI_FC_AUDSCHNLS3_OIEC_CH0_MASK = 0x0f, + HDMI_FC_AUDSCHNLS3_OIEC_CH1_OFFSET = 4, + HDMI_FC_AUDSCHNLS3_OIEC_CH1_MASK = 0xf0, + HDMI_FC_AUDSCHNLS4_OIEC_CH2_OFFSET = 0, + HDMI_FC_AUDSCHNLS4_OIEC_CH2_MASK = 0x0f, + HDMI_FC_AUDSCHNLS4_OIEC_CH3_OFFSET = 4, + HDMI_FC_AUDSCHNLS4_OIEC_CH3_MASK = 0xf0, + + HDMI_FC_AUDSCHNLS5_OIEC_CH0_OFFSET = 0, + HDMI_FC_AUDSCHNLS5_OIEC_CH0_MASK = 0x0f, + HDMI_FC_AUDSCHNLS5_OIEC_CH1_OFFSET = 4, + HDMI_FC_AUDSCHNLS5_OIEC_CH1_MASK = 0xf0, + HDMI_FC_AUDSCHNLS6_OIEC_CH2_OFFSET = 0, + HDMI_FC_AUDSCHNLS6_OIEC_CH2_MASK = 0x0f, + HDMI_FC_AUDSCHNLS6_OIEC_CH3_OFFSET = 4, + HDMI_FC_AUDSCHNLS6_OIEC_CH3_MASK = 0xf0, + +/* HDMI_FC_AUDSCHNLS7 field values */ + HDMI_FC_AUDSCHNLS7_ACCURACY_OFFSET = 4, + HDMI_FC_AUDSCHNLS7_ACCURACY_MASK = 0x30, + +/* HDMI_FC_AUDSCHNLS8 field values */ + HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_MASK = 0xf0, + HDMI_FC_AUDSCHNLS8_ORIGSAMPFREQ_OFFSET = 4, + HDMI_FC_AUDSCHNLS8_WORDLEGNTH_MASK = 0x0f, + HDMI_FC_AUDSCHNLS8_WORDLEGNTH_OFFSET = 0, + /* FC_AUDSCONF field values */ HDMI_FC_AUDSCONF_AUD_PACKET_SAMPFIT_MASK = 0xF0, HDMI_FC_AUDSCONF_AUD_PACKET_SAMPFIT_OFFSET = 4, HDMI_FC_AUDSCONF_AUD_PACKET_LAYOUT_MASK = 0x1, + HDMI_FC_AUDSCONF_AUD_PACKET_LAYOUT_OFFSET = 0, HDMI_FC_AUDSCONF_AUD_PACKET_LAYOUT_LAYOUT1 = 0x1, HDMI_FC_AUDSCONF_AUD_PACKET_LAYOUT_LAYOUT0 = 0x0, @@ -808,6 +867,54 @@ enum { HDMI_PHY_I2CM_OPERATION_ADDR_WRITE = 0x10, HDMI_PHY_I2CM_OPERATION_ADDR_READ = 0x1, +/* AUD_CTS3 field values */ + HDMI_AUD_CTS3_N_SHIFT_OFFSET = 5, + HDMI_AUD_CTS3_N_SHIFT_MASK = 0xe0, + HDMI_AUD_CTS3_N_SHIFT_1 = 0, + HDMI_AUD_CTS3_N_SHIFT_16 = 0x20, + HDMI_AUD_CTS3_N_SHIFT_32 = 0x40, + HDMI_AUD_CTS3_N_SHIFT_64 = 0x60, + HDMI_AUD_CTS3_N_SHIFT_128 = 0x80, + HDMI_AUD_CTS3_N_SHIFT_256 = 0xa0, + /* note that the CTS3 MANUAL bit has been removed + from our part. Can't set it, will read as 0. */ + HDMI_AUD_CTS3_CTS_MANUAL = 0x10, + HDMI_AUD_CTS3_AUDCTS19_16_MASK = 0x0f, + +/* AHB_DMA_CONF0 field values */ + HDMI_AHB_DMA_CONF0_SW_FIFO_RST_OFFSET = 7, + HDMI_AHB_DMA_CONF0_SW_FIFO_RST_MASK = 0x80, + HDMI_AHB_DMA_CONF0_HBR = 0x10, + HDMI_AHB_DMA_CONF0_EN_HLOCK_OFFSET = 3, + HDMI_AHB_DMA_CONF0_EN_HLOCK_MASK = 0x08, + HDMI_AHB_DMA_CONF0_INCR_TYPE_OFFSET = 1, + HDMI_AHB_DMA_CONF0_INCR_TYPE_MASK = 0x06, + HDMI_AHB_DMA_CONF0_INCR4 = 0x0, + HDMI_AHB_DMA_CONF0_INCR8 = 0x2, + HDMI_AHB_DMA_CONF0_INCR16 = 0x4, + HDMI_AHB_DMA_CONF0_BURST_MODE = 0x1, + +/* HDMI_AHB_DMA_START field values */ + HDMI_AHB_DMA_START_START_OFFSET = 0, + HDMI_AHB_DMA_START_START_MASK = 0x01, + +/* HDMI_AHB_DMA_STOP field values */ + HDMI_AHB_DMA_STOP_STOP_OFFSET = 0, + HDMI_AHB_DMA_STOP_STOP_MASK = 0x01, + +/* AHB_DMA_STAT, AHB_DMA_INT, AHB_DMA_MASK, AHB_DMA_POL field values */ + HDMI_AHB_DMA_DONE = 0x80, + HDMI_AHB_DMA_RETRY_SPLIT = 0x40, + HDMI_AHB_DMA_LOSTOWNERSHIP = 0x20, + HDMI_AHB_DMA_ERROR = 0x10, + HDMI_AHB_DMA_FIFO_THREMPTY = 0x04, + HDMI_AHB_DMA_FIFO_FULL = 0x02, + HDMI_AHB_DMA_FIFO_EMPTY = 0x01, + +/* AHB_DMA_BUFFSTAT, AHB_DMA_BUFFINT, AHB_DMA_BUFFMASK, AHB_DMA_BUFFPOL field values */ + HDMI_AHB_DMA_BUFFSTAT_FULL = 0x02, + HDMI_AHB_DMA_BUFFSTAT_EMPTY = 0x01, + /* MC_CLKDIS field values */ HDMI_MC_CLKDIS_HDCPCLK_DISABLE_MASK = 0x40, HDMI_MC_CLKDIS_HDCPCLK_DISABLE_DISABLE = 0x40, -- 2.39.5