123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
- */
- #ifndef __EP92_H__
- #define __EP92_H__
- /* EP92 register addresses */
- /* BI = Basic Info */
- #define EP92_BI_VENDOR_ID_0 0x00
- #define EP92_BI_VENDOR_ID_1 0x01
- #define EP92_BI_DEVICE_ID_0 0x02
- #define EP92_BI_DEVICE_ID_1 0x03
- #define EP92_BI_VERSION_NUM 0x04
- #define EP92_BI_VERSION_YEAR 0x05
- #define EP92_BI_VERSION_MONTH 0x06
- #define EP92_BI_VERSION_DATE 0x07
- #define EP92_BI_GENERAL_INFO_0 0x08
- #define EP92_BI_GENERAL_INFO_1 0x09
- #define EP92_BI_GENERAL_INFO_2 0x0A
- #define EP92_BI_GENERAL_INFO_3 0x0B
- #define EP92_BI_GENERAL_INFO_4 0x0C
- #define EP92_BI_GENERAL_INFO_5 0x0D
- #define EP92_BI_GENERAL_INFO_6 0x0E
- #define EP92_ISP_MODE_ENTER_ISP 0x0F
- #define EP92_GENERAL_CONTROL_0 0x10
- #define EP92_GENERAL_CONTROL_1 0x11
- #define EP92_GENERAL_CONTROL_2 0x12
- #define EP92_GENERAL_CONTROL_3 0x13
- #define EP92_GENERAL_CONTROL_4 0x14
- #define EP92_CEC_EVENT_CODE 0x15
- #define EP92_CEC_EVENT_PARAM_1 0x16
- #define EP92_CEC_EVENT_PARAM_2 0x17
- #define EP92_CEC_EVENT_PARAM_3 0x18
- #define EP92_CEC_EVENT_PARAM_4 0x19
- /* RESERVED 0x1A */
- /* ... ... */
- /* RESERVED 0x1F */
- #define EP92_AUDIO_INFO_SYSTEM_STATUS_0 0x20
- #define EP92_AUDIO_INFO_SYSTEM_STATUS_1 0x21
- #define EP92_AUDIO_INFO_AUDIO_STATUS 0x22
- #define EP92_AUDIO_INFO_CHANNEL_STATUS_0 0x23
- #define EP92_AUDIO_INFO_CHANNEL_STATUS_1 0x24
- #define EP92_AUDIO_INFO_CHANNEL_STATUS_2 0x25
- #define EP92_AUDIO_INFO_CHANNEL_STATUS_3 0x26
- #define EP92_AUDIO_INFO_CHANNEL_STATUS_4 0x27
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_0 0x28
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_1 0x29
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_2 0x2A
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_3 0x2B
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_4 0x2C
- #define EP92_AUDIO_INFO_ADO_INFO_FRAME_5 0x2D
- #define EP92_OTHER_PACKETS_HDMI_VS_0 0x2E
- #define EP92_OTHER_PACKETS_HDMI_VS_1 0x2F
- #define EP92_OTHER_PACKETS_ACP_PACKET 0x30
- #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_0 0x31
- #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_1 0x32
- #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_2 0x33
- #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_3 0x34
- #define EP92_OTHER_PACKETS_AVI_INFO_FRAME_4 0x35
- #define EP92_OTHER_PACKETS_GC_PACKET_0 0x36
- #define EP92_OTHER_PACKETS_GC_PACKET_1 0x37
- #define EP92_OTHER_PACKETS_GC_PACKET_2 0x38
- #define EP92_MAX_REGISTER_ADDR EP92_OTHER_PACKETS_GC_PACKET_2
- /* shift/masks for register bits
- * GI = General Info
- * GC = General Control
- * AI = Audio Info
- */
- #define EP92_GI_ADO_CHF_MASK 0x01
- #define EP92_GI_CEC_ECF_MASK 0x02
- #define EP92_GI_TX_HOT_PLUG_SHIFT 7
- #define EP92_GI_TX_HOT_PLUG_MASK 0x80
- #define EP92_GI_VIDEO_LATENCY_SHIFT 0
- #define EP92_GI_VIDEO_LATENCY_MASK 0xff
- #define EP92_GC_POWER_SHIFT 7
- #define EP92_GC_POWER_MASK 0x80
- #define EP92_GC_AUDIO_PATH_SHIFT 5
- #define EP92_GC_AUDIO_PATH_MASK 0x20
- #define EP92_GC_CEC_MUTE_SHIFT 1
- #define EP92_GC_CEC_MUTE_MASK 0x02
- #define EP92_GC_ARC_EN_SHIFT 0
- #define EP92_GC_ARC_EN_MASK 0x01
- #define EP92_GC_ARC_DIS_SHIFT 6
- #define EP92_GC_ARC_DIS_MASK 0x40
- #define EP92_GC_RX_SEL_SHIFT 0
- #define EP92_GC_RX_SEL_MASK 0x07
- #define EP92_GC_CEC_VOLUME_SHIFT 0
- #define EP92_GC_CEC_VOLUME_MASK 0xff
- #define EP92_GC_LINK_ON0_SHIFT 0
- #define EP92_GC_LINK_ON0_MASK 0x01
- #define EP92_GC_LINK_ON1_SHIFT 1
- #define EP92_GC_LINK_ON1_MASK 0x02
- #define EP92_GC_LINK_ON2_SHIFT 2
- #define EP92_GC_LINK_ON2_MASK 0x04
- #define EP92_AI_MCLK_ON_SHIFT 6
- #define EP92_AI_MCLK_ON_MASK 0x40
- #define EP92_AI_AVMUTE_SHIFT 5
- #define EP92_AI_AVMUTE_MASK 0x20
- #define EP92_AI_LAYOUT_SHIFT 0
- #define EP92_AI_LAYOUT_MASK 0x01
- #define EP92_AI_HBR_ADO_SHIFT 5
- #define EP92_AI_HBR_ADO_MASK 0x20
- #define EP92_AI_STD_ADO_SHIFT 3
- #define EP92_AI_STD_ADO_MASK 0x08
- #define EP92_AI_RATE_MASK 0x07
- #define EP92_AI_NPCM_MASK 0x02
- #define EP92_AI_PREEMPH_SHIFT 3
- #define EP92_AI_PREEMPH_MASK 0x38
- #define EP92_AI_CH_COUNT_MASK 0x07
- #define EP92_AI_CH_ALLOC_MASK 0xff
- #define EP92_AI_DSD_ADO_SHIFT 4
- #define EP92_AI_DSD_ADO_MASK 0x10
- #define EP92_AI_DSD_RATE_SHIFT 4
- #define EP92_AI_DSD_RATE_MASK 0x30
- #define EP92_2CHOICE_MASK 1
- #define EP92_GC_CEC_VOLUME_MIN 0
- #define EP92_GC_CEC_VOLUME_MAX 100
- #define EP92_AI_RATE_MIN 0
- #define EP92_AI_RATE_MAX 768000
- #define EP92_AI_CH_COUNT_MIN 0
- #define EP92_AI_CH_COUNT_MAX 8
- #define EP92_AI_CH_ALLOC_MIN 0
- #define EP92_AI_CH_ALLOC_MAX 0xff
- #define EP92_STATUS_NO_SIGNAL 0
- #define EP92_STATUS_AUDIO_ACTIVE 1
- /* kcontrol storage indices */
- enum {
- EP92_KCTL_POWER = 0,
- EP92_KCTL_AUDIO_PATH,
- EP92_KCTL_CEC_MUTE,
- EP92_KCTL_ARC_EN,
- EP92_KCTL_RX_SEL,
- EP92_KCTL_CEC_VOLUME,
- EP92_KCTL_STATE,
- EP92_KCTL_AVMUTE,
- EP92_KCTL_LAYOUT,
- EP92_KCTL_MODE,
- EP92_KCTL_RATE,
- EP92_KCTL_CH_COUNT,
- EP92_KCTL_CH_ALLOC,
- EP92_KCTL_MAX
- };
- int ep92_set_ext_mclk(struct snd_soc_codec *codec, uint32_t mclk_freq);
- #endif /* __EP92_H__ */
|