audio: asoc: Import tfa9874 codec
From branch: redwood-s-oss Change-Id: I4c6692c503bc25f331eb635989a8881c44769007
This commit is contained in:
parent
ff4d116aa8
commit
122c028ba3
38 changed files with 35293 additions and 0 deletions
65
techpack/audio/asoc/codecs/tfa9874/Android.mk
Executable file
65
techpack/audio/asoc/codecs/tfa9874/Android.mk
Executable file
|
|
@ -0,0 +1,65 @@
|
|||
# Android makefile for audio kernel modules
|
||||
|
||||
# Assume no targets will be supported
|
||||
# Check if this driver needs be built for current target
|
||||
ifeq ($(TARGET_PRODUCT), $(filter $(TARGET_PRODUCT),lmi lmiin lmiinpro picasso picassoin monet vangogh taoyao))
|
||||
$(warning TARGET_PRODUCT=$(TARGET_PRODUCT))
|
||||
ifeq ($(call is-board-platform,kona),true)
|
||||
AUDIO_SELECT := CONFIG_SND_SOC_KONA=m
|
||||
endif
|
||||
|
||||
ifeq ($(call is-board-platform,msmnile),true)
|
||||
AUDIO_SELECT := CONFIG_SND_SOC_SM8150=m
|
||||
endif
|
||||
|
||||
ifeq ($(call is-board-platform,$(MSMSTEPPE)),true)
|
||||
AUDIO_SELECT := CONFIG_SND_SOC_SM6150=m
|
||||
endif
|
||||
|
||||
AUDIO_CHIPSET := audio
|
||||
|
||||
# Build/Package only in case of supported target
|
||||
ifeq ($(call is-board-platform-in-list,kona lito),true)
|
||||
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
|
||||
# This makefile is only for DLKM
|
||||
ifneq ($(findstring vendor,$(LOCAL_PATH)),)
|
||||
|
||||
|
||||
ifneq ($(findstring opensource,$(LOCAL_PATH)),)
|
||||
AUDIO_BLD_DIR := $(shell pwd)/vendor/qcom/opensource/audio-kernel
|
||||
endif # opensource
|
||||
|
||||
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
|
||||
|
||||
# Build audio.ko as $(AUDIO_CHIPSET)_audio.ko
|
||||
###########################################################
|
||||
# This is set once per LOCAL_PATH, not per (kernel) module
|
||||
KBUILD_OPTIONS := AUDIO_ROOT=$(AUDIO_BLD_DIR)
|
||||
|
||||
# We are actually building audio.ko here, as per the
|
||||
# requirement we are specifying <chipset>_audio.ko as LOCAL_MODULE.
|
||||
# This means we need to rename the module to <chipset>_audio.ko
|
||||
# after audio.ko is built.
|
||||
KBUILD_OPTIONS += MODNAME=tfa98xx_dlkm
|
||||
KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
|
||||
KBUILD_OPTIONS += $(AUDIO_SELECT)
|
||||
|
||||
###########################################################
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := $(AUDIO_CHIPSET)_tfa98xx.ko
|
||||
LOCAL_MODULE_KBUILD_NAME := tfa98xx_dlkm.ko
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_DEBUG_ENABLE := true
|
||||
LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
|
||||
include $(DLKM_DIR)/AndroidKernelModule.mk
|
||||
###########################################################
|
||||
###########################################################
|
||||
|
||||
endif # DLKM check
|
||||
|
||||
endif # supported target check
|
||||
|
||||
endif #TARGET_PRODUCT check
|
||||
134
techpack/audio/asoc/codecs/tfa9874/Kbuild
Executable file
134
techpack/audio/asoc/codecs/tfa9874/Kbuild
Executable file
|
|
@ -0,0 +1,134 @@
|
|||
# We can build either as part of a standalone Kernel build or as
|
||||
# an external module. Determine which mechanism is being used
|
||||
ifeq ($(MODNAME),)
|
||||
KERNEL_BUILD := 1
|
||||
else
|
||||
KERNEL_BUILD := 0
|
||||
endif
|
||||
|
||||
|
||||
|
||||
ifeq ($(KERNEL_BUILD), 1)
|
||||
# These are configurable via Kconfig for kernel-based builds
|
||||
# Need to explicitly configure for Android-based builds
|
||||
AUDIO_BLD_DIR := $(srctree)
|
||||
AUDIO_ROOT := $(AUDIO_BLD_DIR)/techpack/audio
|
||||
endif
|
||||
|
||||
ifeq ($(KERNEL_BUILD), 0)
|
||||
ifeq ($(CONFIG_ARCH_SM8150), y)
|
||||
include $(AUDIO_ROOT)/config/sm8150auto.conf
|
||||
export
|
||||
INCS += -include $(AUDIO_ROOT)/config/sm8150autoconf.h
|
||||
endif
|
||||
ifeq ($(CONFIG_ARCH_SM6150), y)
|
||||
include $(AUDIO_ROOT)/config/sm8150auto.conf
|
||||
export
|
||||
INCS += -include $(AUDIO_ROOT)/config/sm8150autoconf.h
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_KONA), y)
|
||||
include $(AUDIO_ROOT)/config/konaauto.conf
|
||||
INCS += -include $(AUDIO_ROOT)/config/konaautoconf.h
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_LITO), y)
|
||||
include $(AUDIO_ROOT)/config/litoauto.conf
|
||||
export
|
||||
INCS += -include $(AUDIO_ROOT)/config/litoautoconf.h
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_SDMSHRIKE), y)
|
||||
include $(AUDIO_ROOT)/config/sm8150auto.conf
|
||||
export
|
||||
INCS += -include $(AUDIO_ROOT)/config/sm8150autoconf.h
|
||||
endif
|
||||
endif
|
||||
|
||||
# As per target team, build is done as follows:
|
||||
# Defconfig : build with default flags
|
||||
# Slub : defconfig + CONFIG_SLUB_DEBUG := y +
|
||||
# CONFIG_SLUB_DEBUG_ON := y + CONFIG_PAGE_POISONING := y
|
||||
# Perf : Using appropriate msmXXXX-perf_defconfig
|
||||
#
|
||||
# Shipment builds (user variants) should not have any debug feature
|
||||
# enabled. This is identified using 'TARGET_BUILD_VARIANT'. Slub builds
|
||||
# are identified using the CONFIG_SLUB_DEBUG_ON configuration. Since
|
||||
# there is no other way to identify defconfig builds, QTI internal
|
||||
# representation of perf builds (identified using the string 'perf'),
|
||||
# is used to identify if the build is a slub or defconfig one. This
|
||||
# way no critical debug feature will be enabled for perf and shipment
|
||||
# builds. Other OEMs are also protected using the TARGET_BUILD_VARIANT
|
||||
# config.
|
||||
|
||||
############ UAPI ############
|
||||
UAPI_DIR := uapi
|
||||
UAPI_INC := -I$(AUDIO_ROOT)/include/$(UAPI_DIR)
|
||||
|
||||
############ COMMON ############
|
||||
COMMON_DIR := include
|
||||
COMMON_INC := -I$(AUDIO_ROOT)/$(COMMON_DIR)
|
||||
TFA_INC := -I$(AUDIO_ROOT)/asoc/codecs/tfa9874/inc
|
||||
|
||||
# for TFA9874 Amplifer
|
||||
ifdef CONFIG_SND_SOC_TFA9874
|
||||
TFA9874_OBJS += src/tfa98xx.o
|
||||
TFA9874_OBJS += src/tfa_container.o
|
||||
TFA9874_OBJS += src/tfa_dsp.o
|
||||
TFA9874_OBJS += src/tfa_init.o
|
||||
#TFA9874_OBJS += src/tfa_debug.o
|
||||
endif
|
||||
|
||||
LINUX_INC += -Iinclude/linux
|
||||
|
||||
INCS += $(COMMON_INC) \
|
||||
$(UAPI_INC) \
|
||||
$(TFA_INC)
|
||||
|
||||
EXTRA_CFLAGS += $(INCS)
|
||||
|
||||
CDEFINES += -DANI_LITTLE_BYTE_ENDIAN \
|
||||
-DANI_LITTLE_BIT_ENDIAN \
|
||||
-DDOT11F_LITTLE_ENDIAN_HOST \
|
||||
-DANI_COMPILER_TYPE_GCC \
|
||||
-DANI_OS_TYPE_ANDROID=6 \
|
||||
-DPTT_SOCK_SVC_ENABLE \
|
||||
-Wall\
|
||||
-Werror\
|
||||
-D__linux__\
|
||||
-DDEBUG
|
||||
|
||||
ifeq ($(TARGET_PRODUCT), $(filter $(TARGET_PRODUCT),taoyao))
|
||||
CDEFINES += -DTFA_NON_DSP_SOLUTION
|
||||
CDEFINES += -DCONFIG_TARGET_PRODUCT_TAOYAO
|
||||
endif
|
||||
|
||||
KBUILD_CPPFLAGS += $(CDEFINES)
|
||||
|
||||
# Currently, for versions of gcc which support it, the kernel Makefile
|
||||
# is disabling the maybe-uninitialized warning. Re-enable it for the
|
||||
# AUDIO driver. Note that we must use EXTRA_CFLAGS here so that it
|
||||
# will override the kernel settings.
|
||||
ifeq ($(call cc-option-yn, -Wmaybe-uninitialized),y)
|
||||
EXTRA_CFLAGS += -Wmaybe-uninitialized
|
||||
endif
|
||||
#EXTRA_CFLAGS += -Wmissing-prototypes
|
||||
|
||||
ifeq ($(call cc-option-yn, -Wheader-guard),y)
|
||||
EXTRA_CFLAGS += -Wheader-guard
|
||||
endif
|
||||
|
||||
ifeq ($(KERNEL_BUILD), 0)
|
||||
KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/ipc/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/dsp/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/asoc/codecs/Module.symvers
|
||||
KBUILD_EXTRA_SYMBOLS +=$(OUT)/obj/vendor/qcom/opensource/audio-kernel/soc/Module.symvers
|
||||
endif
|
||||
|
||||
# Module information used by KBuild framework
|
||||
obj-$(CONFIG_SND_SOC_TFA9874) += tfa98xx_dlkm.o
|
||||
tfa98xx_dlkm-y := $(TFA9874_OBJS)
|
||||
|
||||
# inject some build related information
|
||||
DEFINES += -DBUILD_TIMESTAMP=\"$(shell date -u +'%Y-%m-%dT%H:%M:%SZ')\"
|
||||
37
techpack/audio/asoc/codecs/tfa9874/inc/config.h
Executable file
37
techpack/audio/asoc/codecs/tfa9874/inc/config.h
Executable file
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Linux kernel specific definitions used by code shared with
|
||||
Linux/Windows user space.
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_LINUX_KERNEL_INC__
|
||||
#define __CONFIG_LINUX_KERNEL_INC__
|
||||
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/crc32.h>
|
||||
#include <linux/ftrace.h>
|
||||
|
||||
#define _ASSERT(e)
|
||||
#define PRINT_ASSERT(e)if ((e)) printk(KERN_ERR "PrintAssert:%s (%s:%d) error code:%d\n",__FUNCTION__,__FILE__,__LINE__, e)
|
||||
|
||||
#if defined(CONFIG_TRACING) && defined(DEBUG)
|
||||
#define tfa98xx_trace_printk(...) trace_printk(__VA_ARGS__)
|
||||
#else
|
||||
#define tfa98xx_trace_printk(...)
|
||||
#endif
|
||||
|
||||
#endif /* __CONFIG_LINUX_KERNEL_INC__ */
|
||||
|
||||
160
techpack/audio/asoc/codecs/tfa9874/inc/dbgprint.h
Executable file
160
techpack/audio/asoc/codecs/tfa9874/inc/dbgprint.h
Executable file
|
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef _DBGPRINT_H
|
||||
# define _DBGPRINT_H
|
||||
|
||||
/* Debugging macro's. */
|
||||
# ifndef DEBUG
|
||||
# define DEBUG
|
||||
# endif
|
||||
|
||||
# ifndef ASSERT
|
||||
//#define ASSERT
|
||||
# endif
|
||||
//TODO wwwim
|
||||
# ifndef _ASSERT
|
||||
#define _ASSERT(e)
|
||||
# endif
|
||||
|
||||
# ifndef PREFIX
|
||||
# define PREFIX "tfa98xx: "
|
||||
# define DRIVER_NAME "tfa98xx"
|
||||
# endif
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
# ifdef DEBUG
|
||||
# define _DEBUG(level,fmt,va...) do {\
|
||||
if (unlikely(debug >= (level))) \
|
||||
printk(KERN_INFO PREFIX "%s:%d: "fmt,__func__,__LINE__,##va); \
|
||||
} while (0)
|
||||
|
||||
# else
|
||||
# define _DEBUG(level,fmt,va...) do {} while(0)
|
||||
# endif
|
||||
|
||||
# define MSG(fmt,va...) printk(KERN_INFO PREFIX "%s:%d: "fmt,__func__,__LINE__,##va)
|
||||
# define _ERRORMSG(fmt,va...) printk(KERN_ERR PREFIX "ERROR %s:%d: "fmt,__func__,__LINE__, ##va)
|
||||
|
||||
|
||||
# define DEBUG0(x...) MSG(x)
|
||||
# define DEBUG1(x...) _DEBUG(1,x)
|
||||
# define DEBUG2(x...) _DEBUG(2,x)
|
||||
# define DEBUG3(x...) _DEBUG(3,x)
|
||||
# define ERRORMSG(x...) _ERRORMSG(x)
|
||||
# define PRINT(x...) printk(x)
|
||||
# define PRINT_ERROR(x...) printk(KERN_INFO PREFIX " **ERROR** " x)
|
||||
# define PRINT_ASSERT(e)if ((e)) printk(KERN_ERR "PrintAssert:%s (%s:%d) error code:%d\n",__FUNCTION__,__FILE__,__LINE__, e)
|
||||
|
||||
# define PRINT_ENTRY DEBUG2("+[%s]\n", __func__)
|
||||
# define PRINT_EXIT DEBUG2("-[%s]\n", __func__)
|
||||
|
||||
# ifdef ASSERT
|
||||
# define assert(cond,action) do { if (unlikely(!(cond))) { DEBUG0("Assert: %s\n",#cond); action; }} while(0)
|
||||
# else
|
||||
# define assert(cond,action) do { } while (0)
|
||||
# endif
|
||||
|
||||
#else /* __KERNEL__ */
|
||||
#if defined(WIN32) || defined(_X64)
|
||||
#include <stdio.h>
|
||||
/* user mode */
|
||||
# ifdef DEBUG
|
||||
# define _DEBUGMSG(level,fmt,...) printf(PREFIX "%s:%d: "fmt,__FUNCTION__,__LINE__,__VA_ARGS__);
|
||||
# else
|
||||
# define _DEBUGMSG(level,fmt,...) do {} while(0)
|
||||
# endif
|
||||
|
||||
# define _ERRORMSG(fmt,...) printf(PREFIX "%s:%s:%d: "fmt,__FILE__,__FUNCTION__,__LINE__,__VA_ARGS__)
|
||||
|
||||
# define DEBUG0(...) MSG(__VA_ARGS__)
|
||||
# define DEBUG1(...) _DEBUGMSG(1,__VA_ARGS__)
|
||||
# define DEBUG2(...) _DEBUGMSG(2,__VA_ARGS__)
|
||||
# define DEBUG3(...) _DEBUGMSG(3,__VA_ARGS__)
|
||||
# define ERRORMSG(fmt,...) _ERRORMSG(fmt,__VA_ARGS__)
|
||||
# define PRINT(...) printf(__VA_ARGS__)
|
||||
/*
|
||||
# define PRINT(...) { FILE *stream; \
|
||||
if((stream = freopen("tfa_tfa.txt", "ab+", stdout)) == NULL) exit(-1); \
|
||||
printf(__VA_ARGS__); \
|
||||
freopen( "CON", "ab+", stdout ); \
|
||||
}
|
||||
*/
|
||||
# define PRINT_ERROR(...) fprintf(stderr,__VA_ARGS__)
|
||||
# define PRINT_FILE(file,...) fprintf(file,__VA_ARGS__)
|
||||
# define PRINT_ASSERT(e)if ((e)) fprintf(stderr, "PrintAssert:%s (%s:%d) error code:%d\n",__FUNCTION__,__FILE__,__LINE__, e)
|
||||
//# define PRINT_ASSERT(e) if ((e)) fprintf(stderr, "PrintAssert:%s (%s:%d) %s\n",__FUNCTION__,__FILE__,__LINE__, Tfa98xx_GetErrorString(e))
|
||||
|
||||
#elif defined(__CODE_RED)
|
||||
#include "app_global.h"
|
||||
# ifdef DEBUG
|
||||
# define _DEBUG(level,fmt,va...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,va))
|
||||
//printf(PREFIX "%s:%d: "fmt,__func__,__LINE__,##va);
|
||||
# else
|
||||
# define _DEBUG(level,fmt,va...) do {} while(0)
|
||||
# endif
|
||||
|
||||
# define MSG(fmt,...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,__VA_ARGS__))
|
||||
//printf(PREFIX "%s:%s:%d: "fmt,__FILE__,__func__,__LINE__,##va)
|
||||
//TB_TRACE_INF(TbTracePfx2(APP_PFX,TB_FUNC,"path=%s, chan=%u, muted=%s, vol=%d\n",
|
||||
// path->isRecording ? "recording" : "playback",
|
||||
// i,
|
||||
// channelVol.currentMuteValue ? "YES" : "NO",
|
||||
// channelVol.currentVolumeValue
|
||||
// ));
|
||||
//# define _ERRORMSG(fmt,va...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,va))
|
||||
# define ERRORMSG(...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,__VA_ARGS__))
|
||||
//fprintf(stderr, PREFIX "ERROR %s:%s:%d: "fmt,__FILE__,__func__,__LINE__, ##va)
|
||||
|
||||
# define DEBUG0(x...) MSG(x)
|
||||
# define DEBUG1(x...) _DEBUG(1,x)
|
||||
# define DEBUG2(x...) _DEBUG(2,x)
|
||||
# define DEBUG3(x...) _DEBUG(3,x)
|
||||
//# define ERRORMSG(x...) _ERRORMSG(x)
|
||||
# define PRINT(x...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,x))
|
||||
//printf(x)
|
||||
# define PRINT_ERROR(x...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,x))
|
||||
//fprintf(stderr,__VA_ARGS__)
|
||||
# define PRINT_FILE(file,x...) TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,x))
|
||||
//fprintf(file,__VA_ARGS__)
|
||||
# define PRINT_ASSERT(e)
|
||||
//TB_TRACE_INF(TbTracePfx2("tfa",TB_FUNC,Tfa98xx_GetErrorString(e)))
|
||||
//if ((e)) fprintf(stderr, "PrintAssert:%s (%s:%d) %s\n",__FUNCTION__,__FILE__,__LINE__, Tfa98xx_GetErrorString(e))
|
||||
#else
|
||||
#include <stdio.h>
|
||||
/* user mode */
|
||||
# ifdef DEBUG
|
||||
# define _DEBUG(level,fmt,va...) printf(PREFIX "%s:%d: "fmt,__func__,__LINE__,##va);
|
||||
# else
|
||||
# define _DEBUG(level,fmt,va...) do {} while(0)
|
||||
# endif
|
||||
|
||||
# define MSG(fmt,va...) printf(PREFIX "%s:%s:%d: "fmt,__FILE__,__func__,__LINE__,##va)
|
||||
# define _ERRORMSG(fmt,va...) fprintf(stderr, PREFIX "ERROR %s:%s:%d: "fmt,__FILE__,__func__,__LINE__, ##va)
|
||||
|
||||
# define DEBUG0(x...) MSG(x)
|
||||
# define DEBUG1(x...) _DEBUG(1,x)
|
||||
# define DEBUG2(x...) _DEBUG(2,x)
|
||||
# define DEBUG3(x...) _DEBUG(3,x)
|
||||
# define ERRORMSG(x...) _ERRORMSG(x)
|
||||
# define PRINT(x...) printf(x)
|
||||
# define PRINT_ERROR(...) fprintf(stderr,__VA_ARGS__)
|
||||
# define PRINT_FILE(file,...) fprintf(file,__VA_ARGS__)
|
||||
# define PRINT_ASSERT(e)if ((e)) fprintf(stderr, "PrintAssert:%s (%s:%d) error code:%d\n",__FUNCTION__,__FILE__,__LINE__, e)
|
||||
//# define PRINT_ASSERT(e) if ((e)) fprintf(stderr, "PrintAssert:%s (%s:%d) %s\n",__FUNCTION__,__FILE__,__LINE__, Tfa98xx_GetErrorString(e))
|
||||
|
||||
|
||||
#endif /* WIN32 */
|
||||
|
||||
#endif /* user */
|
||||
|
||||
#endif /* _DBGPRINT_H --------------- */
|
||||
32
techpack/audio/asoc/codecs/tfa9874/inc/spk-id.h
Executable file
32
techpack/audio/asoc/codecs/tfa9874/inc/spk-id.h
Executable file
|
|
@ -0,0 +1,32 @@
|
|||
/* Copyright (c) 2016, The Linux Foundation. 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 version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef __SPK_ID_H_
|
||||
#define __SPK_ID_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/of.h>
|
||||
|
||||
#define PIN_PULL_DOWN 0
|
||||
#define PIN_PULL_UP 1
|
||||
#define PIN_FLOAT 2
|
||||
|
||||
#define VENDOR_ID_NONE 0
|
||||
#define VENDOR_ID_AAC 1
|
||||
#define VENDOR_ID_SSI 2
|
||||
#define VENDOR_ID_GOER 3
|
||||
|
||||
#define VENDOR_ID_UNKNOWN 4
|
||||
|
||||
extern int spk_id_get_pin_3state(struct device_node *np);
|
||||
|
||||
#endif
|
||||
45
techpack/audio/asoc/codecs/tfa9874/inc/tfa.h
Executable file
45
techpack/audio/asoc/codecs/tfa9874/inc/tfa.h
Executable file
|
|
@ -0,0 +1,45 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
#ifndef TFA_H_
|
||||
#define TFA_H_
|
||||
|
||||
/* set the limit for the container file length */
|
||||
#define TFA_MAX_CNT_LENGTH (256*1024)
|
||||
|
||||
extern struct tfa_device **devs;
|
||||
|
||||
/**
|
||||
* tfa error return codes
|
||||
*/
|
||||
enum tfa_error {
|
||||
tfa_error_ok, /**< no error */
|
||||
tfa_error_device, /**< no response from device */
|
||||
tfa_error_bad_param,/**< parameter no accepted */
|
||||
tfa_error_noclock, /**< required clock not present */
|
||||
tfa_error_timeout, /**< a timeout occurred */
|
||||
tfa_error_dsp, /**< a DSP error was returned */
|
||||
tfa_error_container,/**< no or wrong container file */
|
||||
tfa_error_max /**< impossible value, max enum */
|
||||
};
|
||||
|
||||
enum Tfa98xx_Error tfa_write_filters(struct tfa_device *tfa, int prof_idx);
|
||||
|
||||
struct tfa_device ** tfa_devs_create(int count);
|
||||
void tfa_devs_destroy(int count);
|
||||
|
||||
struct tfa_device ** tfa_get_device_struct(void);
|
||||
|
||||
int tfa_plop_noise_interrupt(struct tfa_device *tfa, int profile, int vstep);
|
||||
void tfa_lp_mode_interrupt(struct tfa_device *tfa);
|
||||
void tfa_adapt_noisemode(struct tfa_device *tfa);
|
||||
|
||||
#endif /* TFA_H_ */
|
||||
911
techpack/audio/asoc/codecs/tfa9874/inc/tfa1_tfafieldnames.h
Executable file
911
techpack/audio/asoc/codecs/tfa9874/inc/tfa1_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,911 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: Tfa1_TfaFieldnames.h
|
||||
* This file was generated automatically on 03/20/2015 at 01:55:46 PM.
|
||||
* Source file: TFA9897N1B_I2C_list_URT_Source_v34.xls
|
||||
*/
|
||||
#define TFA9897_I2CVERSION 34
|
||||
typedef enum Tfa1BfEnumList {
|
||||
TFA1_BF_VDDS = 0x0000, /*!< Power-on-reset flag */
|
||||
TFA1_BF_PLLS = 0x0010, /*!< PLL lock */
|
||||
TFA1_BF_OTDS = 0x0020, /*!< Over Temperature Protection alarm */
|
||||
TFA1_BF_OVDS = 0x0030, /*!< Over Voltage Protection alarm */
|
||||
TFA1_BF_UVDS = 0x0040, /*!< Under Voltage Protection alarm */
|
||||
TFA1_BF_OCDS = 0x0050, /*!< Over Current Protection alarm */
|
||||
TFA1_BF_CLKS = 0x0060, /*!< Clocks stable flag */
|
||||
TFA1_BF_CLIPS = 0x0070, /*!< Amplifier clipping */
|
||||
TFA1_BF_MTPB = 0x0080, /*!< MTP busy */
|
||||
TFA1_BF_NOCLK = 0x0090, /*!< Flag lost clock from clock generation unit */
|
||||
TFA1_BF_SPKS = 0x00a0, /*!< Speaker error flag */
|
||||
TFA1_BF_ACS = 0x00b0, /*!< Cold Start flag */
|
||||
TFA1_BF_SWS = 0x00c0, /*!< Flag Engage */
|
||||
TFA1_BF_WDS = 0x00d0, /*!< Flag watchdog reset */
|
||||
TFA1_BF_AMPS = 0x00e0, /*!< Amplifier is enabled by manager */
|
||||
TFA1_BF_AREFS = 0x00f0, /*!< References are enabled by manager */
|
||||
TFA1_BF_BATS = 0x0109, /*!< Battery voltage readout; 0 .. 5.5 [V] */
|
||||
TFA1_BF_TEMPS = 0x0208, /*!< Temperature readout from the temperature sensor */
|
||||
TFA1_BF_REV = 0x030b, /*!< Device type number is B97 */
|
||||
TFA1_BF_RCV = 0x0420, /*!< Enable Receiver Mode */
|
||||
TFA1_BF_CHS12 = 0x0431, /*!< Channel Selection TDM input for Coolflux */
|
||||
TFA1_BF_INPLVL= 0x0450, /*!< Input level selection control */
|
||||
TFA1_BF_CHSA = 0x0461, /*!< Input selection for amplifier */
|
||||
TFA1_BF_I2SDOE= 0x04b0, /*!< Enable data output */
|
||||
TFA1_BF_AUDFS = 0x04c3, /*!< Audio sample rate setting */
|
||||
TFA1_BF_BSSCR = 0x0501, /*!< Protection Attack Time */
|
||||
TFA1_BF_BSST = 0x0523, /*!< ProtectionThreshold */
|
||||
TFA1_BF_BSSRL = 0x0561, /*!< Protection Maximum Reduction */
|
||||
TFA1_BF_BSSRR = 0x0582, /*!< Battery Protection Release Time */
|
||||
TFA1_BF_BSSHY = 0x05b1, /*!< Battery Protection Hysteresis */
|
||||
TFA1_BF_BSSR = 0x05e0, /*!< battery voltage for I2C read out only */
|
||||
TFA1_BF_BSSBY = 0x05f0, /*!< bypass clipper battery protection */
|
||||
TFA1_BF_DPSA = 0x0600, /*!< Enable dynamic powerstage activation */
|
||||
TFA1_BF_CFSM = 0x0650, /*!< Soft mute in CoolFlux */
|
||||
TFA1_BF_BSSS = 0x0670, /*!< BatSenseSteepness */
|
||||
TFA1_BF_VOL = 0x0687, /*!< volume control (in CoolFlux) */
|
||||
TFA1_BF_DCVO = 0x0702, /*!< Boost Voltage */
|
||||
TFA1_BF_DCMCC = 0x0733, /*!< Max boost coil current - step of 175 mA */
|
||||
TFA1_BF_DCIE = 0x07a0, /*!< Adaptive boost mode */
|
||||
TFA1_BF_DCSR = 0x07b0, /*!< Soft RampUp/Down mode for DCDC controller */
|
||||
TFA1_BF_DCPAVG= 0x07c0, /*!< ctrl_peak2avg for analog part of DCDC */
|
||||
TFA1_BF_TROS = 0x0800, /*!< Select external temperature also the ext_temp will be put on the temp read out */
|
||||
TFA1_BF_EXTTS = 0x0818, /*!< external temperature setting to be given by host */
|
||||
TFA1_BF_PWDN = 0x0900, /*!< Device Mode */
|
||||
TFA1_BF_I2CR = 0x0910, /*!< I2C Reset */
|
||||
TFA1_BF_CFE = 0x0920, /*!< Enable CoolFlux */
|
||||
TFA1_BF_AMPE = 0x0930, /*!< Enable Amplifier */
|
||||
TFA1_BF_DCA = 0x0940, /*!< EnableBoost */
|
||||
TFA1_BF_SBSL = 0x0950, /*!< Coolflux configured */
|
||||
TFA1_BF_AMPC = 0x0960, /*!< Selection on how Amplifier is enabled */
|
||||
TFA1_BF_DCDIS = 0x0970, /*!< DCDC not connected */
|
||||
TFA1_BF_PSDR = 0x0980, /*!< IDDQ test amplifier */
|
||||
TFA1_BF_DCCV = 0x0991, /*!< Coil Value */
|
||||
TFA1_BF_CCFD = 0x09b0, /*!< Selection CoolFlux Clock */
|
||||
TFA1_BF_INTPAD= 0x09c1, /*!< INT pad configuration control */
|
||||
TFA1_BF_IPLL = 0x09e0, /*!< PLL input reference clock selection */
|
||||
TFA1_BF_MTPK = 0x0b07, /*!< 5Ah, 90d To access KEY1_Protected registers (Default for engineering) */
|
||||
TFA1_BF_CVFDLY= 0x0c25, /*!< Fractional delay adjustment between current and voltage sense */
|
||||
TFA1_BF_TDMPRF= 0x1011, /*!< TDM_usecase */
|
||||
TFA1_BF_TDMEN = 0x1030, /*!< TDM interface control */
|
||||
TFA1_BF_TDMCKINV= 0x1040, /*!< TDM clock inversion */
|
||||
TFA1_BF_TDMFSLN= 0x1053, /*!< TDM FS length */
|
||||
TFA1_BF_TDMFSPOL= 0x1090, /*!< TDM FS polarity */
|
||||
TFA1_BF_TDMSAMSZ= 0x10a4, /*!< TDM Sample Size for all tdm sinks/sources */
|
||||
TFA1_BF_TDMSLOTS= 0x1103, /*!< Number of slots */
|
||||
TFA1_BF_TDMSLLN= 0x1144, /*!< Slot length */
|
||||
TFA1_BF_TDMBRMG= 0x1194, /*!< Bits remaining */
|
||||
TFA1_BF_TDMDDEL= 0x11e0, /*!< Data delay */
|
||||
TFA1_BF_TDMDADJ= 0x11f0, /*!< Data adjustment */
|
||||
TFA1_BF_TDMTXFRM= 0x1201, /*!< TXDATA format */
|
||||
TFA1_BF_TDMUUS0= 0x1221, /*!< TXDATA format unused slot sd0 */
|
||||
TFA1_BF_TDMUUS1= 0x1241, /*!< TXDATA format unused slot sd1 */
|
||||
TFA1_BF_TDMSI0EN= 0x1270, /*!< TDM sink0 enable */
|
||||
TFA1_BF_TDMSI1EN= 0x1280, /*!< TDM sink1 enable */
|
||||
TFA1_BF_TDMSI2EN= 0x1290, /*!< TDM sink2 enable */
|
||||
TFA1_BF_TDMSO0EN= 0x12a0, /*!< TDM source0 enable */
|
||||
TFA1_BF_TDMSO1EN= 0x12b0, /*!< TDM source1 enable */
|
||||
TFA1_BF_TDMSO2EN= 0x12c0, /*!< TDM source2 enable */
|
||||
TFA1_BF_TDMSI0IO= 0x12d0, /*!< tdm_sink0_io */
|
||||
TFA1_BF_TDMSI1IO= 0x12e0, /*!< tdm_sink1_io */
|
||||
TFA1_BF_TDMSI2IO= 0x12f0, /*!< tdm_sink2_io */
|
||||
TFA1_BF_TDMSO0IO= 0x1300, /*!< tdm_source0_io */
|
||||
TFA1_BF_TDMSO1IO= 0x1310, /*!< tdm_source1_io */
|
||||
TFA1_BF_TDMSO2IO= 0x1320, /*!< tdm_source2_io */
|
||||
TFA1_BF_TDMSI0SL= 0x1333, /*!< sink0_slot [GAIN IN] */
|
||||
TFA1_BF_TDMSI1SL= 0x1373, /*!< sink1_slot [CH1 IN] */
|
||||
TFA1_BF_TDMSI2SL= 0x13b3, /*!< sink2_slot [CH2 IN] */
|
||||
TFA1_BF_TDMSO0SL= 0x1403, /*!< source0_slot [GAIN OUT] */
|
||||
TFA1_BF_TDMSO1SL= 0x1443, /*!< source1_slot [Voltage Sense] */
|
||||
TFA1_BF_TDMSO2SL= 0x1483, /*!< source2_slot [Current Sense] */
|
||||
TFA1_BF_NBCK = 0x14c3, /*!< NBCK */
|
||||
TFA1_BF_INTOVDDS= 0x2000, /*!< flag_por_int_out */
|
||||
TFA1_BF_INTOPLLS= 0x2010, /*!< flag_pll_lock_int_out */
|
||||
TFA1_BF_INTOOTDS= 0x2020, /*!< flag_otpok_int_out */
|
||||
TFA1_BF_INTOOVDS= 0x2030, /*!< flag_ovpok_int_out */
|
||||
TFA1_BF_INTOUVDS= 0x2040, /*!< flag_uvpok_int_out */
|
||||
TFA1_BF_INTOOCDS= 0x2050, /*!< flag_ocp_alarm_int_out */
|
||||
TFA1_BF_INTOCLKS= 0x2060, /*!< flag_clocks_stable_int_out */
|
||||
TFA1_BF_INTOCLIPS= 0x2070, /*!< flag_clip_int_out */
|
||||
TFA1_BF_INTOMTPB= 0x2080, /*!< mtp_busy_int_out */
|
||||
TFA1_BF_INTONOCLK= 0x2090, /*!< flag_lost_clk_int_out */
|
||||
TFA1_BF_INTOSPKS= 0x20a0, /*!< flag_cf_speakererror_int_out */
|
||||
TFA1_BF_INTOACS= 0x20b0, /*!< flag_cold_started_int_out */
|
||||
TFA1_BF_INTOSWS= 0x20c0, /*!< flag_engage_int_out */
|
||||
TFA1_BF_INTOWDS= 0x20d0, /*!< flag_watchdog_reset_int_out */
|
||||
TFA1_BF_INTOAMPS= 0x20e0, /*!< flag_enbl_amp_int_out */
|
||||
TFA1_BF_INTOAREFS= 0x20f0, /*!< flag_enbl_ref_int_out */
|
||||
TFA1_BF_INTOACK= 0x2201, /*!< Interrupt status register output - Corresponding flag */
|
||||
TFA1_BF_INTIVDDS= 0x2300, /*!< flag_por_int_in */
|
||||
TFA1_BF_INTIPLLS= 0x2310, /*!< flag_pll_lock_int_in */
|
||||
TFA1_BF_INTIOTDS= 0x2320, /*!< flag_otpok_int_in */
|
||||
TFA1_BF_INTIOVDS= 0x2330, /*!< flag_ovpok_int_in */
|
||||
TFA1_BF_INTIUVDS= 0x2340, /*!< flag_uvpok_int_in */
|
||||
TFA1_BF_INTIOCDS= 0x2350, /*!< flag_ocp_alarm_int_in */
|
||||
TFA1_BF_INTICLKS= 0x2360, /*!< flag_clocks_stable_int_in */
|
||||
TFA1_BF_INTICLIPS= 0x2370, /*!< flag_clip_int_in */
|
||||
TFA1_BF_INTIMTPB= 0x2380, /*!< mtp_busy_int_in */
|
||||
TFA1_BF_INTINOCLK= 0x2390, /*!< flag_lost_clk_int_in */
|
||||
TFA1_BF_INTISPKS= 0x23a0, /*!< flag_cf_speakererror_int_in */
|
||||
TFA1_BF_INTIACS= 0x23b0, /*!< flag_cold_started_int_in */
|
||||
TFA1_BF_INTISWS= 0x23c0, /*!< flag_engage_int_in */
|
||||
TFA1_BF_INTIWDS= 0x23d0, /*!< flag_watchdog_reset_int_in */
|
||||
TFA1_BF_INTIAMPS= 0x23e0, /*!< flag_enbl_amp_int_in */
|
||||
TFA1_BF_INTIAREFS= 0x23f0, /*!< flag_enbl_ref_int_in */
|
||||
TFA1_BF_INTIACK= 0x2501, /*!< Interrupt register input */
|
||||
TFA1_BF_INTENVDDS= 0x2600, /*!< flag_por_int_enable */
|
||||
TFA1_BF_INTENPLLS= 0x2610, /*!< flag_pll_lock_int_enable */
|
||||
TFA1_BF_INTENOTDS= 0x2620, /*!< flag_otpok_int_enable */
|
||||
TFA1_BF_INTENOVDS= 0x2630, /*!< flag_ovpok_int_enable */
|
||||
TFA1_BF_INTENUVDS= 0x2640, /*!< flag_uvpok_int_enable */
|
||||
TFA1_BF_INTENOCDS= 0x2650, /*!< flag_ocp_alarm_int_enable */
|
||||
TFA1_BF_INTENCLKS= 0x2660, /*!< flag_clocks_stable_int_enable */
|
||||
TFA1_BF_INTENCLIPS= 0x2670, /*!< flag_clip_int_enable */
|
||||
TFA1_BF_INTENMTPB= 0x2680, /*!< mtp_busy_int_enable */
|
||||
TFA1_BF_INTENNOCLK= 0x2690, /*!< flag_lost_clk_int_enable */
|
||||
TFA1_BF_INTENSPKS= 0x26a0, /*!< flag_cf_speakererror_int_enable */
|
||||
TFA1_BF_INTENACS= 0x26b0, /*!< flag_cold_started_int_enable */
|
||||
TFA1_BF_INTENSWS= 0x26c0, /*!< flag_engage_int_enable */
|
||||
TFA1_BF_INTENWDS= 0x26d0, /*!< flag_watchdog_reset_int_enable */
|
||||
TFA1_BF_INTENAMPS= 0x26e0, /*!< flag_enbl_amp_int_enable */
|
||||
TFA1_BF_INTENAREFS= 0x26f0, /*!< flag_enbl_ref_int_enable */
|
||||
TFA1_BF_INTENACK= 0x2801, /*!< Interrupt enable register */
|
||||
TFA1_BF_INTPOLVDDS= 0x2900, /*!< flag_por_int_pol */
|
||||
TFA1_BF_INTPOLPLLS= 0x2910, /*!< flag_pll_lock_int_pol */
|
||||
TFA1_BF_INTPOLOTDS= 0x2920, /*!< flag_otpok_int_pol */
|
||||
TFA1_BF_INTPOLOVDS= 0x2930, /*!< flag_ovpok_int_pol */
|
||||
TFA1_BF_INTPOLUVDS= 0x2940, /*!< flag_uvpok_int_pol */
|
||||
TFA1_BF_INTPOLOCDS= 0x2950, /*!< flag_ocp_alarm_int_pol */
|
||||
TFA1_BF_INTPOLCLKS= 0x2960, /*!< flag_clocks_stable_int_pol */
|
||||
TFA1_BF_INTPOLCLIPS= 0x2970, /*!< flag_clip_int_pol */
|
||||
TFA1_BF_INTPOLMTPB= 0x2980, /*!< mtp_busy_int_pol */
|
||||
TFA1_BF_INTPOLNOCLK= 0x2990, /*!< flag_lost_clk_int_pol */
|
||||
TFA1_BF_INTPOLSPKS= 0x29a0, /*!< flag_cf_speakererror_int_pol */
|
||||
TFA1_BF_INTPOLACS= 0x29b0, /*!< flag_cold_started_int_pol */
|
||||
TFA1_BF_INTPOLSWS= 0x29c0, /*!< flag_engage_int_pol */
|
||||
TFA1_BF_INTPOLWDS= 0x29d0, /*!< flag_watchdog_reset_int_pol */
|
||||
TFA1_BF_INTPOLAMPS= 0x29e0, /*!< flag_enbl_amp_int_pol */
|
||||
TFA1_BF_INTPOLAREFS= 0x29f0, /*!< flag_enbl_ref_int_pol */
|
||||
TFA1_BF_INTPOLACK= 0x2b01, /*!< Interrupt status flags polarity register */
|
||||
TFA1_BF_CLIP = 0x4900, /*!< Bypass clip control */
|
||||
TFA1_BF_CIMTP = 0x62b0, /*!< start copying all the data from i2cregs_mtp to mtp [Key 2 protected] */
|
||||
TFA1_BF_RST = 0x7000, /*!< Reset CoolFlux DSP */
|
||||
TFA1_BF_DMEM = 0x7011, /*!< Target memory for access */
|
||||
TFA1_BF_AIF = 0x7030, /*!< Autoincrement-flag for memory-address */
|
||||
TFA1_BF_CFINT = 0x7040, /*!< Interrupt CoolFlux DSP */
|
||||
TFA1_BF_REQ = 0x7087, /*!< request for access (8 channels) */
|
||||
TFA1_BF_REQCMD= 0x7080, /*!< Firmware event request rpc command */
|
||||
TFA1_BF_REQRST= 0x7090, /*!< Firmware event request reset restart */
|
||||
TFA1_BF_REQMIPS= 0x70a0, /*!< Firmware event request short on mips */
|
||||
TFA1_BF_REQMUTED= 0x70b0, /*!< Firmware event request mute sequence ready */
|
||||
TFA1_BF_REQVOL= 0x70c0, /*!< Firmware event request volume ready */
|
||||
TFA1_BF_REQDMG= 0x70d0, /*!< Firmware event request speaker damage detected */
|
||||
TFA1_BF_REQCAL= 0x70e0, /*!< Firmware event request calibration completed */
|
||||
TFA1_BF_REQRSV= 0x70f0, /*!< Firmware event request reserved */
|
||||
TFA1_BF_MADD = 0x710f, /*!< memory-address to be accessed */
|
||||
TFA1_BF_MEMA = 0x720f, /*!< activate memory access (24- or 32-bits data is written/read to/from memory */
|
||||
TFA1_BF_ERR = 0x7307, /*!< Coolflux error flags */
|
||||
TFA1_BF_ACK = 0x7387, /*!< acknowledge of requests (8 channels) */
|
||||
TFA1_BF_MTPOTC= 0x8000, /*!< Calibration schedule (key2 protected) */
|
||||
TFA1_BF_MTPEX = 0x8010, /*!< (key2 protected) */
|
||||
} Tfa1BfEnumList_t;
|
||||
#define TFA1_NAMETABLE static tfaBfName_t Tfa1DatasheetNames[]= {\
|
||||
{ 0x0, "VDDS"}, /* Power-on-reset flag , */\
|
||||
{ 0x10, "PLLS"}, /* PLL lock , */\
|
||||
{ 0x20, "OTDS"}, /* Over Temperature Protection alarm , */\
|
||||
{ 0x30, "OVDS"}, /* Over Voltage Protection alarm , */\
|
||||
{ 0x40, "UVDS"}, /* Under Voltage Protection alarm , */\
|
||||
{ 0x50, "OCDS"}, /* Over Current Protection alarm , */\
|
||||
{ 0x60, "CLKS"}, /* Clocks stable flag , */\
|
||||
{ 0x70, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x80, "MTPB"}, /* MTP busy , */\
|
||||
{ 0x90, "NOCLK"}, /* Flag lost clock from clock generation unit , */\
|
||||
{ 0xa0, "SPKS"}, /* Speaker error flag , */\
|
||||
{ 0xb0, "ACS"}, /* Cold Start flag , */\
|
||||
{ 0xc0, "SWS"}, /* Flag Engage , */\
|
||||
{ 0xd0, "WDS"}, /* Flag watchdog reset , */\
|
||||
{ 0xe0, "AMPS"}, /* Amplifier is enabled by manager , */\
|
||||
{ 0xf0, "AREFS"}, /* References are enabled by manager , */\
|
||||
{ 0x109, "BATS"}, /* Battery voltage readout; 0 .. 5.5 [V] , */\
|
||||
{ 0x208, "TEMPS"}, /* Temperature readout from the temperature sensor , */\
|
||||
{ 0x30b, "REV"}, /* Device type number is B97 , */\
|
||||
{ 0x420, "RCV"}, /* Enable Receiver Mode , */\
|
||||
{ 0x431, "CHS12"}, /* Channel Selection TDM input for Coolflux , */\
|
||||
{ 0x450, "INPLVL"}, /* Input level selection control , */\
|
||||
{ 0x461, "CHSA"}, /* Input selection for amplifier , */\
|
||||
{ 0x4b0, "I2SDOE"}, /* Enable data output , */\
|
||||
{ 0x4c3, "AUDFS"}, /* Audio sample rate setting , */\
|
||||
{ 0x501, "SSCR"}, /* Protection Attack Time , */\
|
||||
{ 0x523, "SST"}, /* ProtectionThreshold , */\
|
||||
{ 0x561, "SSRL"}, /* Protection Maximum Reduction , */\
|
||||
{ 0x582, "SSRR"}, /* Battery Protection Release Time , */\
|
||||
{ 0x5b1, "SSHY"}, /* Battery Protection Hysteresis , */\
|
||||
{ 0x5e0, "SSR"}, /* battery voltage for I2C read out only , */\
|
||||
{ 0x5f0, "SSBY"}, /* bypass clipper battery protection , */\
|
||||
{ 0x600, "DPSA"}, /* Enable dynamic powerstage activation , */\
|
||||
{ 0x650, "CFSM"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x670, "SSS"}, /* BatSenseSteepness , */\
|
||||
{ 0x687, "VOL"}, /* volume control (in CoolFlux) , */\
|
||||
{ 0x702, "DCVO"}, /* Boost Voltage , */\
|
||||
{ 0x733, "DCMCC"}, /* Max boost coil current - step of 175 mA , */\
|
||||
{ 0x7a0, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "DCSR"}, /* Soft RampUp/Down mode for DCDC controller , */\
|
||||
{ 0x7c0, "DCPAVG"}, /* ctrl_peak2avg for analog part of DCDC , */\
|
||||
{ 0x800, "TROS"}, /* Select external temperature also the ext_temp will be put on the temp read out , */\
|
||||
{ 0x818, "EXTTS"}, /* external temperature setting to be given by host , */\
|
||||
{ 0x900, "PWDN"}, /* Device Mode , */\
|
||||
{ 0x910, "I2CR"}, /* I2C Reset , */\
|
||||
{ 0x920, "CFE"}, /* Enable CoolFlux , */\
|
||||
{ 0x930, "AMPE"}, /* Enable Amplifier , */\
|
||||
{ 0x940, "DCA"}, /* EnableBoost , */\
|
||||
{ 0x950, "SBSL"}, /* Coolflux configured , */\
|
||||
{ 0x960, "AMPC"}, /* Selection on how Amplifier is enabled , */\
|
||||
{ 0x970, "DCDIS"}, /* DCDC not connected , */\
|
||||
{ 0x980, "PSDR"}, /* IDDQ test amplifier , */\
|
||||
{ 0x991, "DCCV"}, /* Coil Value , */\
|
||||
{ 0x9b0, "CCFD"}, /* Selection CoolFlux Clock , */\
|
||||
{ 0x9c1, "INTPAD"}, /* INT pad configuration control , */\
|
||||
{ 0x9e0, "IPLL"}, /* PLL input reference clock selection , */\
|
||||
{ 0xb07, "MTPK"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0xc25, "CVFDLY"}, /* Fractional delay adjustment between current and voltage sense, */\
|
||||
{ 0x1011, "TDMPRF"}, /* TDM_usecase , */\
|
||||
{ 0x1030, "TDMEN"}, /* TDM interface control , */\
|
||||
{ 0x1040, "TDMCKINV"}, /* TDM clock inversion , */\
|
||||
{ 0x1053, "TDMFSLN"}, /* TDM FS length , */\
|
||||
{ 0x1090, "TDMFSPOL"}, /* TDM FS polarity , */\
|
||||
{ 0x10a4, "TDMSAMSZ"}, /* TDM Sample Size for all tdm sinks/sources , */\
|
||||
{ 0x1103, "TDMSLOTS"}, /* Number of slots , */\
|
||||
{ 0x1144, "TDMSLLN"}, /* Slot length , */\
|
||||
{ 0x1194, "TDMBRMG"}, /* Bits remaining , */\
|
||||
{ 0x11e0, "TDMDDEL"}, /* Data delay , */\
|
||||
{ 0x11f0, "TDMDADJ"}, /* Data adjustment , */\
|
||||
{ 0x1201, "TDMTXFRM"}, /* TXDATA format , */\
|
||||
{ 0x1221, "TDMUUS0"}, /* TXDATA format unused slot sd0 , */\
|
||||
{ 0x1241, "TDMUUS1"}, /* TXDATA format unused slot sd1 , */\
|
||||
{ 0x1270, "TDMSI0EN"}, /* TDM sink0 enable , */\
|
||||
{ 0x1280, "TDMSI1EN"}, /* TDM sink1 enable , */\
|
||||
{ 0x1290, "TDMSI2EN"}, /* TDM sink2 enable , */\
|
||||
{ 0x12a0, "TDMSO0EN"}, /* TDM source0 enable , */\
|
||||
{ 0x12b0, "TDMSO1EN"}, /* TDM source1 enable , */\
|
||||
{ 0x12c0, "TDMSO2EN"}, /* TDM source2 enable , */\
|
||||
{ 0x12d0, "TDMSI0IO"}, /* tdm_sink0_io , */\
|
||||
{ 0x12e0, "TDMSI1IO"}, /* tdm_sink1_io , */\
|
||||
{ 0x12f0, "TDMSI2IO"}, /* tdm_sink2_io , */\
|
||||
{ 0x1300, "TDMSO0IO"}, /* tdm_source0_io , */\
|
||||
{ 0x1310, "TDMSO1IO"}, /* tdm_source1_io , */\
|
||||
{ 0x1320, "TDMSO2IO"}, /* tdm_source2_io , */\
|
||||
{ 0x1333, "TDMSI0SL"}, /* sink0_slot [GAIN IN] , */\
|
||||
{ 0x1373, "TDMSI1SL"}, /* sink1_slot [CH1 IN] , */\
|
||||
{ 0x13b3, "TDMSI2SL"}, /* sink2_slot [CH2 IN] , */\
|
||||
{ 0x1403, "TDMSO0SL"}, /* source0_slot [GAIN OUT] , */\
|
||||
{ 0x1443, "TDMSO1SL"}, /* source1_slot [Voltage Sense] , */\
|
||||
{ 0x1483, "TDMSO2SL"}, /* source2_slot [Current Sense] , */\
|
||||
{ 0x14c3, "NBCK"}, /* NBCK , */\
|
||||
{ 0x2000, "INTOVDDS"}, /* flag_por_int_out , */\
|
||||
{ 0x2010, "INTOPLLS"}, /* flag_pll_lock_int_out , */\
|
||||
{ 0x2020, "INTOOTDS"}, /* flag_otpok_int_out , */\
|
||||
{ 0x2030, "INTOOVDS"}, /* flag_ovpok_int_out , */\
|
||||
{ 0x2040, "INTOUVDS"}, /* flag_uvpok_int_out , */\
|
||||
{ 0x2050, "INTOOCDS"}, /* flag_ocp_alarm_int_out , */\
|
||||
{ 0x2060, "INTOCLKS"}, /* flag_clocks_stable_int_out , */\
|
||||
{ 0x2070, "INTOCLIPS"}, /* flag_clip_int_out , */\
|
||||
{ 0x2080, "INTOMTPB"}, /* mtp_busy_int_out , */\
|
||||
{ 0x2090, "INTONOCLK"}, /* flag_lost_clk_int_out , */\
|
||||
{ 0x20a0, "INTOSPKS"}, /* flag_cf_speakererror_int_out , */\
|
||||
{ 0x20b0, "INTOACS"}, /* flag_cold_started_int_out , */\
|
||||
{ 0x20c0, "INTOSWS"}, /* flag_engage_int_out , */\
|
||||
{ 0x20d0, "INTOWDS"}, /* flag_watchdog_reset_int_out , */\
|
||||
{ 0x20e0, "INTOAMPS"}, /* flag_enbl_amp_int_out , */\
|
||||
{ 0x20f0, "INTOAREFS"}, /* flag_enbl_ref_int_out , */\
|
||||
{ 0x2201, "INTOACK"}, /* Interrupt status register output - Corresponding flag, */\
|
||||
{ 0x2300, "INTIVDDS"}, /* flag_por_int_in , */\
|
||||
{ 0x2310, "INTIPLLS"}, /* flag_pll_lock_int_in , */\
|
||||
{ 0x2320, "INTIOTDS"}, /* flag_otpok_int_in , */\
|
||||
{ 0x2330, "INTIOVDS"}, /* flag_ovpok_int_in , */\
|
||||
{ 0x2340, "INTIUVDS"}, /* flag_uvpok_int_in , */\
|
||||
{ 0x2350, "INTIOCDS"}, /* flag_ocp_alarm_int_in , */\
|
||||
{ 0x2360, "INTICLKS"}, /* flag_clocks_stable_int_in , */\
|
||||
{ 0x2370, "INTICLIPS"}, /* flag_clip_int_in , */\
|
||||
{ 0x2380, "INTIMTPB"}, /* mtp_busy_int_in , */\
|
||||
{ 0x2390, "INTINOCLK"}, /* flag_lost_clk_int_in , */\
|
||||
{ 0x23a0, "INTISPKS"}, /* flag_cf_speakererror_int_in , */\
|
||||
{ 0x23b0, "INTIACS"}, /* flag_cold_started_int_in , */\
|
||||
{ 0x23c0, "INTISWS"}, /* flag_engage_int_in , */\
|
||||
{ 0x23d0, "INTIWDS"}, /* flag_watchdog_reset_int_in , */\
|
||||
{ 0x23e0, "INTIAMPS"}, /* flag_enbl_amp_int_in , */\
|
||||
{ 0x23f0, "INTIAREFS"}, /* flag_enbl_ref_int_in , */\
|
||||
{ 0x2501, "INTIACK"}, /* Interrupt register input , */\
|
||||
{ 0x2600, "INTENVDDS"}, /* flag_por_int_enable , */\
|
||||
{ 0x2610, "INTENPLLS"}, /* flag_pll_lock_int_enable , */\
|
||||
{ 0x2620, "INTENOTDS"}, /* flag_otpok_int_enable , */\
|
||||
{ 0x2630, "INTENOVDS"}, /* flag_ovpok_int_enable , */\
|
||||
{ 0x2640, "INTENUVDS"}, /* flag_uvpok_int_enable , */\
|
||||
{ 0x2650, "INTENOCDS"}, /* flag_ocp_alarm_int_enable , */\
|
||||
{ 0x2660, "INTENCLKS"}, /* flag_clocks_stable_int_enable , */\
|
||||
{ 0x2670, "INTENCLIPS"}, /* flag_clip_int_enable , */\
|
||||
{ 0x2680, "INTENMTPB"}, /* mtp_busy_int_enable , */\
|
||||
{ 0x2690, "INTENNOCLK"}, /* flag_lost_clk_int_enable , */\
|
||||
{ 0x26a0, "INTENSPKS"}, /* flag_cf_speakererror_int_enable , */\
|
||||
{ 0x26b0, "INTENACS"}, /* flag_cold_started_int_enable , */\
|
||||
{ 0x26c0, "INTENSWS"}, /* flag_engage_int_enable , */\
|
||||
{ 0x26d0, "INTENWDS"}, /* flag_watchdog_reset_int_enable , */\
|
||||
{ 0x26e0, "INTENAMPS"}, /* flag_enbl_amp_int_enable , */\
|
||||
{ 0x26f0, "INTENAREFS"}, /* flag_enbl_ref_int_enable , */\
|
||||
{ 0x2801, "INTENACK"}, /* Interrupt enable register , */\
|
||||
{ 0x2900, "INTPOLVDDS"}, /* flag_por_int_pol , */\
|
||||
{ 0x2910, "INTPOLPLLS"}, /* flag_pll_lock_int_pol , */\
|
||||
{ 0x2920, "INTPOLOTDS"}, /* flag_otpok_int_pol , */\
|
||||
{ 0x2930, "INTPOLOVDS"}, /* flag_ovpok_int_pol , */\
|
||||
{ 0x2940, "INTPOLUVDS"}, /* flag_uvpok_int_pol , */\
|
||||
{ 0x2950, "INTPOLOCDS"}, /* flag_ocp_alarm_int_pol , */\
|
||||
{ 0x2960, "INTPOLCLKS"}, /* flag_clocks_stable_int_pol , */\
|
||||
{ 0x2970, "INTPOLCLIPS"}, /* flag_clip_int_pol , */\
|
||||
{ 0x2980, "INTPOLMTPB"}, /* mtp_busy_int_pol , */\
|
||||
{ 0x2990, "INTPOLNOCLK"}, /* flag_lost_clk_int_pol , */\
|
||||
{ 0x29a0, "INTPOLSPKS"}, /* flag_cf_speakererror_int_pol , */\
|
||||
{ 0x29b0, "INTPOLACS"}, /* flag_cold_started_int_pol , */\
|
||||
{ 0x29c0, "INTPOLSWS"}, /* flag_engage_int_pol , */\
|
||||
{ 0x29d0, "INTPOLWDS"}, /* flag_watchdog_reset_int_pol , */\
|
||||
{ 0x29e0, "INTPOLAMPS"}, /* flag_enbl_amp_int_pol , */\
|
||||
{ 0x29f0, "INTPOLAREFS"}, /* flag_enbl_ref_int_pol , */\
|
||||
{ 0x2b01, "INTPOLACK"}, /* Interrupt status flags polarity register , */\
|
||||
{ 0x4900, "CLIP"}, /* Bypass clip control , */\
|
||||
{ 0x62b0, "CIMTP"}, /* start copying all the data from i2cregs_mtp to mtp [Key 2 protected], */\
|
||||
{ 0x7000, "RST"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "DMEM"}, /* Target memory for access , */\
|
||||
{ 0x7030, "AIF"}, /* Autoincrement-flag for memory-address , */\
|
||||
{ 0x7040, "CFINT"}, /* Interrupt CoolFlux DSP , */\
|
||||
{ 0x7087, "REQ"}, /* request for access (8 channels) , */\
|
||||
{ 0x7080, "REQCMD"}, /* Firmware event request rpc command , */\
|
||||
{ 0x7090, "REQRST"}, /* Firmware event request reset restart , */\
|
||||
{ 0x70a0, "REQMIPS"}, /* Firmware event request short on mips , */\
|
||||
{ 0x70b0, "REQMUTED"}, /* Firmware event request mute sequence ready , */\
|
||||
{ 0x70c0, "REQVOL"}, /* Firmware event request volume ready , */\
|
||||
{ 0x70d0, "REQDMG"}, /* Firmware event request speaker damage detected , */\
|
||||
{ 0x70e0, "REQCAL"}, /* Firmware event request calibration completed , */\
|
||||
{ 0x70f0, "REQRSV"}, /* Firmware event request reserved , */\
|
||||
{ 0x710f, "MADD"}, /* memory-address to be accessed , */\
|
||||
{ 0x720f, "MEMA"}, /* activate memory access (24- or 32-bits data is written/read to/from memory, */\
|
||||
{ 0x7307, "ERR"}, /* Coolflux error flags , */\
|
||||
{ 0x7387, "ACK"}, /* acknowledge of requests (8 channels) , */\
|
||||
{ 0x7380, "ACKCMD"}, /* Firmware event acknowledge rpc command , */\
|
||||
{ 0x7390, "ACKRST"}, /* Firmware event acknowledge reset restart , */\
|
||||
{ 0x73a0, "ACKMIPS"}, /* Firmware event acknowledge short on mips , */\
|
||||
{ 0x73b0, "ACKMUTED"}, /* Firmware event acknowledge mute sequence ready , */\
|
||||
{ 0x73c0, "ACKVOL"}, /* Firmware event acknowledge volume ready , */\
|
||||
{ 0x73d0, "ACKDMG"}, /* Firmware event acknowledge speaker damage detected, */\
|
||||
{ 0x73e0, "ACKCAL"}, /* Firmware event acknowledge calibration completed , */\
|
||||
{ 0x73f0, "ACKRSV"}, /* Firmware event acknowledge reserved , */\
|
||||
{ 0x8000, "MTPOTC"}, /* Calibration schedule (key2 protected) , */\
|
||||
{ 0x8010, "MTPEX"}, /* (key2 protected) , */\
|
||||
{ 0x8045, "SWPROFIL" },\
|
||||
{ 0x80a5, "SWVSTEP" },\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA1_BITNAMETABLE static tfaBfName_t Tfa1BitNames[]= {\
|
||||
{ 0x0, "flag_por"}, /* Power-on-reset flag , */\
|
||||
{ 0x10, "flag_pll_lock"}, /* PLL lock , */\
|
||||
{ 0x20, "flag_otpok"}, /* Over Temperature Protection alarm , */\
|
||||
{ 0x30, "flag_ovpok"}, /* Over Voltage Protection alarm , */\
|
||||
{ 0x40, "flag_uvpok"}, /* Under Voltage Protection alarm , */\
|
||||
{ 0x50, "flag_ocp_alarm"}, /* Over Current Protection alarm , */\
|
||||
{ 0x60, "flag_clocks_stable"}, /* Clocks stable flag , */\
|
||||
{ 0x70, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x80, "mtp_busy"}, /* MTP busy , */\
|
||||
{ 0x90, "flag_lost_clk"}, /* Flag lost clock from clock generation unit , */\
|
||||
{ 0xa0, "flag_cf_speakererror"}, /* Speaker error flag , */\
|
||||
{ 0xb0, "flag_cold_started"}, /* Cold Start flag , */\
|
||||
{ 0xc0, "flag_engage"}, /* Flag Engage , */\
|
||||
{ 0xd0, "flag_watchdog_reset"}, /* Flag watchdog reset , */\
|
||||
{ 0xe0, "flag_enbl_amp"}, /* Amplifier is enabled by manager , */\
|
||||
{ 0xf0, "flag_enbl_ref"}, /* References are enabled by manager , */\
|
||||
{ 0x109, "bat_adc"}, /* Battery voltage readout; 0 .. 5.5 [V] , */\
|
||||
{ 0x208, "temp_adc"}, /* Temperature readout from the temperature sensor , */\
|
||||
{ 0x30b, "rev_reg"}, /* Device type number is B97 , */\
|
||||
{ 0x420, "ctrl_rcv"}, /* Enable Receiver Mode , */\
|
||||
{ 0x431, "chan_sel"}, /* Channel Selection TDM input for Coolflux , */\
|
||||
{ 0x450, "input_level"}, /* Input level selection control , */\
|
||||
{ 0x461, "vamp_sel"}, /* Input selection for amplifier , */\
|
||||
{ 0x4c3, "audio_fs"}, /* Audio sample rate setting , */\
|
||||
{ 0x501, "vbat_prot_attacktime"}, /* Protection Attack Time , */\
|
||||
{ 0x523, "vbat_prot_thlevel"}, /* ProtectionThreshold , */\
|
||||
{ 0x561, "vbat_prot_max_reduct"}, /* Protection Maximum Reduction , */\
|
||||
{ 0x582, "vbat_prot_release_t"}, /* Battery Protection Release Time , */\
|
||||
{ 0x5b1, "vbat_prot_hysterese"}, /* Battery Protection Hysteresis , */\
|
||||
{ 0x5d0, "reset_min_vbat"}, /* reset clipper , */\
|
||||
{ 0x5e0, "sel_vbat"}, /* battery voltage for I2C read out only , */\
|
||||
{ 0x5f0, "bypass_clipper"}, /* bypass clipper battery protection , */\
|
||||
{ 0x600, "dpsa"}, /* Enable dynamic powerstage activation , */\
|
||||
{ 0x650, "cf_mute"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x670, "batsense_steepness"}, /* BatSenseSteepness , */\
|
||||
{ 0x687, "vol"}, /* volume control (in CoolFlux) , */\
|
||||
{ 0x702, "boost_volt"}, /* Boost Voltage , */\
|
||||
{ 0x733, "boost_cur"}, /* Max boost coil current - step of 175 mA , */\
|
||||
{ 0x7a0, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "boost_speed"}, /* Soft RampUp/Down mode for DCDC controller , */\
|
||||
{ 0x7c0, "boost_peak2avg"}, /* ctrl_peak2avg for analog part of DCDC , */\
|
||||
{ 0x800, "ext_temp_sel"}, /* Select external temperature also the ext_temp will be put on the temp read out , */\
|
||||
{ 0x818, "ext_temp"}, /* external temperature setting to be given by host , */\
|
||||
{ 0x8b2, "dcdc_synchronisation"}, /* DCDC synchronisation off + 7 positions , */\
|
||||
{ 0x900, "powerdown"}, /* Device Mode , */\
|
||||
{ 0x910, "reset"}, /* I2C Reset , */\
|
||||
{ 0x920, "enbl_coolflux"}, /* Enable CoolFlux , */\
|
||||
{ 0x930, "enbl_amplifier"}, /* Enable Amplifier , */\
|
||||
{ 0x940, "enbl_boost"}, /* EnableBoost , */\
|
||||
{ 0x950, "coolflux_configured"}, /* Coolflux configured , */\
|
||||
{ 0x960, "sel_enbl_amplifier"}, /* Selection on how Amplifier is enabled , */\
|
||||
{ 0x970, "dcdcoff_mode"}, /* DCDC not connected , */\
|
||||
{ 0x980, "iddqtest"}, /* IDDQ test amplifier , */\
|
||||
{ 0x991, "coil_value"}, /* Coil Value , */\
|
||||
{ 0x9b0, "sel_cf_clock"}, /* Selection CoolFlux Clock , */\
|
||||
{ 0x9c1, "int_pad_io"}, /* INT pad configuration control , */\
|
||||
{ 0x9e0, "sel_fs_bck"}, /* PLL input reference clock selection , */\
|
||||
{ 0x9f0, "sel_scl_cf_clock"}, /* Coolflux sub-system clock , */\
|
||||
{ 0xb07, "mtpkey2"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0xc00, "enbl_volt_sense"}, /* Voltage sense enabling control bit , */\
|
||||
{ 0xc10, "vsense_pwm_sel"}, /* Voltage sense PWM source selection control , */\
|
||||
{ 0xc25, "vi_frac_delay"}, /* Fractional delay adjustment between current and voltage sense, */\
|
||||
{ 0xc80, "sel_voltsense_out"}, /* TDM output data selection control , */\
|
||||
{ 0xc90, "vsense_bypass_avg"}, /* Voltage Sense Average Block Bypass , */\
|
||||
{ 0xd05, "cf_frac_delay"}, /* Fractional delay adjustment between current and voltage sense by firmware, */\
|
||||
{ 0xe00, "bypass_dcdc_curr_prot"}, /* Control to switch off dcdc current reduction with bat protection, */\
|
||||
{ 0xe80, "disable_clock_sh_prot"}, /* disable clock_sh protection , */\
|
||||
{ 0xe96, "reserve_reg_1_15_9"}, /* , */\
|
||||
{ 0x1011, "tdm_usecase"}, /* TDM_usecase , */\
|
||||
{ 0x1030, "tdm_enable"}, /* TDM interface control , */\
|
||||
{ 0x1040, "tdm_clk_inversion"}, /* TDM clock inversion , */\
|
||||
{ 0x1053, "tdm_fs_ws_length"}, /* TDM FS length , */\
|
||||
{ 0x1090, "tdm_fs_ws_polarity"}, /* TDM FS polarity , */\
|
||||
{ 0x10a4, "tdm_sample_size"}, /* TDM Sample Size for all tdm sinks/sources , */\
|
||||
{ 0x1103, "tdm_nb_of_slots"}, /* Number of slots , */\
|
||||
{ 0x1144, "tdm_slot_length"}, /* Slot length , */\
|
||||
{ 0x1194, "tdm_bits_remaining"}, /* Bits remaining , */\
|
||||
{ 0x11e0, "tdm_data_delay"}, /* Data delay , */\
|
||||
{ 0x11f0, "tdm_data_adjustment"}, /* Data adjustment , */\
|
||||
{ 0x1201, "tdm_txdata_format"}, /* TXDATA format , */\
|
||||
{ 0x1221, "tdm_txdata_format_unused_slot_sd0"}, /* TXDATA format unused slot sd0 , */\
|
||||
{ 0x1241, "tdm_txdata_format_unused_slot_sd1"}, /* TXDATA format unused slot sd1 , */\
|
||||
{ 0x1270, "tdm_sink0_enable"}, /* TDM sink0 enable , */\
|
||||
{ 0x1280, "tdm_sink1_enable"}, /* TDM sink1 enable , */\
|
||||
{ 0x1290, "tdm_sink2_enable"}, /* TDM sink2 enable , */\
|
||||
{ 0x12a0, "tdm_source0_enable"}, /* TDM source0 enable , */\
|
||||
{ 0x12b0, "tdm_source1_enable"}, /* TDM source1 enable , */\
|
||||
{ 0x12c0, "tdm_source2_enable"}, /* TDM source2 enable , */\
|
||||
{ 0x12d0, "tdm_sink0_io"}, /* tdm_sink0_io , */\
|
||||
{ 0x12e0, "tdm_sink1_io"}, /* tdm_sink1_io , */\
|
||||
{ 0x12f0, "tdm_sink2_io"}, /* tdm_sink2_io , */\
|
||||
{ 0x1300, "tdm_source0_io"}, /* tdm_source0_io , */\
|
||||
{ 0x1310, "tdm_source1_io"}, /* tdm_source1_io , */\
|
||||
{ 0x1320, "tdm_source2_io"}, /* tdm_source2_io , */\
|
||||
{ 0x1333, "tdm_sink0_slot"}, /* sink0_slot [GAIN IN] , */\
|
||||
{ 0x1373, "tdm_sink1_slot"}, /* sink1_slot [CH1 IN] , */\
|
||||
{ 0x13b3, "tdm_sink2_slot"}, /* sink2_slot [CH2 IN] , */\
|
||||
{ 0x1403, "tdm_source0_slot"}, /* source0_slot [GAIN OUT] , */\
|
||||
{ 0x1443, "tdm_source1_slot"}, /* source1_slot [Voltage Sense] , */\
|
||||
{ 0x1483, "tdm_source2_slot"}, /* source2_slot [Current Sense] , */\
|
||||
{ 0x14c3, "tdm_nbck"}, /* NBCK , */\
|
||||
{ 0x1500, "flag_tdm_lut_error"}, /* TDM LUT error flag , */\
|
||||
{ 0x1512, "flag_tdm_status"}, /* TDM interface status bits , */\
|
||||
{ 0x1540, "flag_tdm_error"}, /* TDM interface error indicator , */\
|
||||
{ 0x2000, "flag_por_int_out"}, /* flag_por_int_out , */\
|
||||
{ 0x2010, "flag_pll_lock_int_out"}, /* flag_pll_lock_int_out , */\
|
||||
{ 0x2020, "flag_otpok_int_out"}, /* flag_otpok_int_out , */\
|
||||
{ 0x2030, "flag_ovpok_int_out"}, /* flag_ovpok_int_out , */\
|
||||
{ 0x2040, "flag_uvpok_int_out"}, /* flag_uvpok_int_out , */\
|
||||
{ 0x2050, "flag_ocp_alarm_int_out"}, /* flag_ocp_alarm_int_out , */\
|
||||
{ 0x2060, "flag_clocks_stable_int_out"}, /* flag_clocks_stable_int_out , */\
|
||||
{ 0x2070, "flag_clip_int_out"}, /* flag_clip_int_out , */\
|
||||
{ 0x2080, "mtp_busy_int_out"}, /* mtp_busy_int_out , */\
|
||||
{ 0x2090, "flag_lost_clk_int_out"}, /* flag_lost_clk_int_out , */\
|
||||
{ 0x20a0, "flag_cf_speakererror_int_out"}, /* flag_cf_speakererror_int_out , */\
|
||||
{ 0x20b0, "flag_cold_started_int_out"}, /* flag_cold_started_int_out , */\
|
||||
{ 0x20c0, "flag_engage_int_out"}, /* flag_engage_int_out , */\
|
||||
{ 0x20d0, "flag_watchdog_reset_int_out"}, /* flag_watchdog_reset_int_out , */\
|
||||
{ 0x20e0, "flag_enbl_amp_int_out"}, /* flag_enbl_amp_int_out , */\
|
||||
{ 0x20f0, "flag_enbl_ref_int_out"}, /* flag_enbl_ref_int_out , */\
|
||||
{ 0x2100, "flag_voutcomp_int_out"}, /* flag_voutcomp_int_out , */\
|
||||
{ 0x2110, "flag_voutcomp93_int_out"}, /* flag_voutcomp93_int_out , */\
|
||||
{ 0x2120, "flag_voutcomp86_int_out"}, /* flag_voutcomp86_int_out , */\
|
||||
{ 0x2130, "flag_hiz_int_out"}, /* flag_hiz_int_out , */\
|
||||
{ 0x2140, "flag_ocpokbst_int_out"}, /* flag_ocpokbst_int_out , */\
|
||||
{ 0x2150, "flag_peakcur_int_out"}, /* flag_peakcur_int_out , */\
|
||||
{ 0x2160, "flag_ocpokap_int_out"}, /* flag_ocpokap_int_out , */\
|
||||
{ 0x2170, "flag_ocpokan_int_out"}, /* flag_ocpokan_int_out , */\
|
||||
{ 0x2180, "flag_ocpokbp_int_out"}, /* flag_ocpokbp_int_out , */\
|
||||
{ 0x2190, "flag_ocpokbn_int_out"}, /* flag_ocpokbn_int_out , */\
|
||||
{ 0x21a0, "flag_adc10_ready_int_out"}, /* flag_adc10_ready_int_out , */\
|
||||
{ 0x21b0, "flag_clipa_high_int_out"}, /* flag_clipa_high_int_out , */\
|
||||
{ 0x21c0, "flag_clipa_low_int_out"}, /* flag_clipa_low_int_out , */\
|
||||
{ 0x21d0, "flag_clipb_high_int_out"}, /* flag_clipb_high_int_out , */\
|
||||
{ 0x21e0, "flag_clipb_low_int_out"}, /* flag_clipb_low_int_out , */\
|
||||
{ 0x21f0, "flag_tdm_error_int_out"}, /* flag_tdm_error_int_out , */\
|
||||
{ 0x2201, "interrupt_out3"}, /* Interrupt status register output - Corresponding flag, */\
|
||||
{ 0x2300, "flag_por_int_in"}, /* flag_por_int_in , */\
|
||||
{ 0x2310, "flag_pll_lock_int_in"}, /* flag_pll_lock_int_in , */\
|
||||
{ 0x2320, "flag_otpok_int_in"}, /* flag_otpok_int_in , */\
|
||||
{ 0x2330, "flag_ovpok_int_in"}, /* flag_ovpok_int_in , */\
|
||||
{ 0x2340, "flag_uvpok_int_in"}, /* flag_uvpok_int_in , */\
|
||||
{ 0x2350, "flag_ocp_alarm_int_in"}, /* flag_ocp_alarm_int_in , */\
|
||||
{ 0x2360, "flag_clocks_stable_int_in"}, /* flag_clocks_stable_int_in , */\
|
||||
{ 0x2370, "flag_clip_int_in"}, /* flag_clip_int_in , */\
|
||||
{ 0x2380, "mtp_busy_int_in"}, /* mtp_busy_int_in , */\
|
||||
{ 0x2390, "flag_lost_clk_int_in"}, /* flag_lost_clk_int_in , */\
|
||||
{ 0x23a0, "flag_cf_speakererror_int_in"}, /* flag_cf_speakererror_int_in , */\
|
||||
{ 0x23b0, "flag_cold_started_int_in"}, /* flag_cold_started_int_in , */\
|
||||
{ 0x23c0, "flag_engage_int_in"}, /* flag_engage_int_in , */\
|
||||
{ 0x23d0, "flag_watchdog_reset_int_in"}, /* flag_watchdog_reset_int_in , */\
|
||||
{ 0x23e0, "flag_enbl_amp_int_in"}, /* flag_enbl_amp_int_in , */\
|
||||
{ 0x23f0, "flag_enbl_ref_int_in"}, /* flag_enbl_ref_int_in , */\
|
||||
{ 0x2400, "flag_voutcomp_int_in"}, /* flag_voutcomp_int_in , */\
|
||||
{ 0x2410, "flag_voutcomp93_int_in"}, /* flag_voutcomp93_int_in , */\
|
||||
{ 0x2420, "flag_voutcomp86_int_in"}, /* flag_voutcomp86_int_in , */\
|
||||
{ 0x2430, "flag_hiz_int_in"}, /* flag_hiz_int_in , */\
|
||||
{ 0x2440, "flag_ocpokbst_int_in"}, /* flag_ocpokbst_int_in , */\
|
||||
{ 0x2450, "flag_peakcur_int_in"}, /* flag_peakcur_int_in , */\
|
||||
{ 0x2460, "flag_ocpokap_int_in"}, /* flag_ocpokap_int_in , */\
|
||||
{ 0x2470, "flag_ocpokan_int_in"}, /* flag_ocpokan_int_in , */\
|
||||
{ 0x2480, "flag_ocpokbp_int_in"}, /* flag_ocpokbp_int_in , */\
|
||||
{ 0x2490, "flag_ocpokbn_int_in"}, /* flag_ocpokbn_int_in , */\
|
||||
{ 0x24a0, "flag_adc10_ready_int_in"}, /* flag_adc10_ready_int_in , */\
|
||||
{ 0x24b0, "flag_clipa_high_int_in"}, /* flag_clipa_high_int_in , */\
|
||||
{ 0x24c0, "flag_clipa_low_int_in"}, /* flag_clipa_low_int_in , */\
|
||||
{ 0x24d0, "flag_clipb_high_int_in"}, /* flag_clipb_high_int_in , */\
|
||||
{ 0x24e0, "flag_clipb_low_int_in"}, /* flag_clipb_low_int_in , */\
|
||||
{ 0x24f0, "flag_tdm_error_int_in"}, /* flag_tdm_error_int_in , */\
|
||||
{ 0x2501, "interrupt_in3"}, /* Interrupt register input , */\
|
||||
{ 0x2600, "flag_por_int_enable"}, /* flag_por_int_enable , */\
|
||||
{ 0x2610, "flag_pll_lock_int_enable"}, /* flag_pll_lock_int_enable , */\
|
||||
{ 0x2620, "flag_otpok_int_enable"}, /* flag_otpok_int_enable , */\
|
||||
{ 0x2630, "flag_ovpok_int_enable"}, /* flag_ovpok_int_enable , */\
|
||||
{ 0x2640, "flag_uvpok_int_enable"}, /* flag_uvpok_int_enable , */\
|
||||
{ 0x2650, "flag_ocp_alarm_int_enable"}, /* flag_ocp_alarm_int_enable , */\
|
||||
{ 0x2660, "flag_clocks_stable_int_enable"}, /* flag_clocks_stable_int_enable , */\
|
||||
{ 0x2670, "flag_clip_int_enable"}, /* flag_clip_int_enable , */\
|
||||
{ 0x2680, "mtp_busy_int_enable"}, /* mtp_busy_int_enable , */\
|
||||
{ 0x2690, "flag_lost_clk_int_enable"}, /* flag_lost_clk_int_enable , */\
|
||||
{ 0x26a0, "flag_cf_speakererror_int_enable"}, /* flag_cf_speakererror_int_enable , */\
|
||||
{ 0x26b0, "flag_cold_started_int_enable"}, /* flag_cold_started_int_enable , */\
|
||||
{ 0x26c0, "flag_engage_int_enable"}, /* flag_engage_int_enable , */\
|
||||
{ 0x26d0, "flag_watchdog_reset_int_enable"}, /* flag_watchdog_reset_int_enable , */\
|
||||
{ 0x26e0, "flag_enbl_amp_int_enable"}, /* flag_enbl_amp_int_enable , */\
|
||||
{ 0x26f0, "flag_enbl_ref_int_enable"}, /* flag_enbl_ref_int_enable , */\
|
||||
{ 0x2700, "flag_voutcomp_int_enable"}, /* flag_voutcomp_int_enable , */\
|
||||
{ 0x2710, "flag_voutcomp93_int_enable"}, /* flag_voutcomp93_int_enable , */\
|
||||
{ 0x2720, "flag_voutcomp86_int_enable"}, /* flag_voutcomp86_int_enable , */\
|
||||
{ 0x2730, "flag_hiz_int_enable"}, /* flag_hiz_int_enable , */\
|
||||
{ 0x2740, "flag_ocpokbst_int_enable"}, /* flag_ocpokbst_int_enable , */\
|
||||
{ 0x2750, "flag_peakcur_int_enable"}, /* flag_peakcur_int_enable , */\
|
||||
{ 0x2760, "flag_ocpokap_int_enable"}, /* flag_ocpokap_int_enable , */\
|
||||
{ 0x2770, "flag_ocpokan_int_enable"}, /* flag_ocpokan_int_enable , */\
|
||||
{ 0x2780, "flag_ocpokbp_int_enable"}, /* flag_ocpokbp_int_enable , */\
|
||||
{ 0x2790, "flag_ocpokbn_int_enable"}, /* flag_ocpokbn_int_enable , */\
|
||||
{ 0x27a0, "flag_adc10_ready_int_enable"}, /* flag_adc10_ready_int_enable , */\
|
||||
{ 0x27b0, "flag_clipa_high_int_enable"}, /* flag_clipa_high_int_enable , */\
|
||||
{ 0x27c0, "flag_clipa_low_int_enable"}, /* flag_clipa_low_int_enable , */\
|
||||
{ 0x27d0, "flag_clipb_high_int_enable"}, /* flag_clipb_high_int_enable , */\
|
||||
{ 0x27e0, "flag_clipb_low_int_enable"}, /* flag_clipb_low_int_enable , */\
|
||||
{ 0x27f0, "flag_tdm_error_int_enable"}, /* flag_tdm_error_int_enable , */\
|
||||
{ 0x2801, "interrupt_enable3"}, /* Interrupt enable register , */\
|
||||
{ 0x2900, "flag_por_int_pol"}, /* flag_por_int_pol , */\
|
||||
{ 0x2910, "flag_pll_lock_int_pol"}, /* flag_pll_lock_int_pol , */\
|
||||
{ 0x2920, "flag_otpok_int_pol"}, /* flag_otpok_int_pol , */\
|
||||
{ 0x2930, "flag_ovpok_int_pol"}, /* flag_ovpok_int_pol , */\
|
||||
{ 0x2940, "flag_uvpok_int_pol"}, /* flag_uvpok_int_pol , */\
|
||||
{ 0x2950, "flag_ocp_alarm_int_pol"}, /* flag_ocp_alarm_int_pol , */\
|
||||
{ 0x2960, "flag_clocks_stable_int_pol"}, /* flag_clocks_stable_int_pol , */\
|
||||
{ 0x2970, "flag_clip_int_pol"}, /* flag_clip_int_pol , */\
|
||||
{ 0x2980, "mtp_busy_int_pol"}, /* mtp_busy_int_pol , */\
|
||||
{ 0x2990, "flag_lost_clk_int_pol"}, /* flag_lost_clk_int_pol , */\
|
||||
{ 0x29a0, "flag_cf_speakererror_int_pol"}, /* flag_cf_speakererror_int_pol , */\
|
||||
{ 0x29b0, "flag_cold_started_int_pol"}, /* flag_cold_started_int_pol , */\
|
||||
{ 0x29c0, "flag_engage_int_pol"}, /* flag_engage_int_pol , */\
|
||||
{ 0x29d0, "flag_watchdog_reset_int_pol"}, /* flag_watchdog_reset_int_pol , */\
|
||||
{ 0x29e0, "flag_enbl_amp_int_pol"}, /* flag_enbl_amp_int_pol , */\
|
||||
{ 0x29f0, "flag_enbl_ref_int_pol"}, /* flag_enbl_ref_int_pol , */\
|
||||
{ 0x2a00, "flag_voutcomp_int_pol"}, /* flag_voutcomp_int_pol , */\
|
||||
{ 0x2a10, "flag_voutcomp93_int_pol"}, /* flag_voutcomp93_int_pol , */\
|
||||
{ 0x2a20, "flag_voutcomp86_int_pol"}, /* flag_voutcomp86_int_pol , */\
|
||||
{ 0x2a30, "flag_hiz_int_pol"}, /* flag_hiz_int_pol , */\
|
||||
{ 0x2a40, "flag_ocpokbst_int_pol"}, /* flag_ocpokbst_int_pol , */\
|
||||
{ 0x2a50, "flag_peakcur_int_pol"}, /* flag_peakcur_int_pol , */\
|
||||
{ 0x2a60, "flag_ocpokap_int_pol"}, /* flag_ocpokap_int_pol , */\
|
||||
{ 0x2a70, "flag_ocpokan_int_pol"}, /* flag_ocpokan_int_pol , */\
|
||||
{ 0x2a80, "flag_ocpokbp_int_pol"}, /* flag_ocpokbp_int_pol , */\
|
||||
{ 0x2a90, "flag_ocpokbn_int_pol"}, /* flag_ocpokbn_int_pol , */\
|
||||
{ 0x2aa0, "flag_adc10_ready_int_pol"}, /* flag_adc10_ready_int_pol , */\
|
||||
{ 0x2ab0, "flag_clipa_high_int_pol"}, /* flag_clipa_high_int_pol , */\
|
||||
{ 0x2ac0, "flag_clipa_low_int_pol"}, /* flag_clipa_low_int_pol , */\
|
||||
{ 0x2ad0, "flag_clipb_high_int_pol"}, /* flag_clipb_high_int_pol , */\
|
||||
{ 0x2ae0, "flag_clipb_low_int_pol"}, /* flag_clipb_low_int_pol , */\
|
||||
{ 0x2af0, "flag_tdm_error_int_pol"}, /* flag_tdm_error_int_pol , */\
|
||||
{ 0x2b01, "status_polarity3"}, /* Interrupt status flags polarity register , */\
|
||||
{ 0x3000, "flag_voutcomp"}, /* flag_voutcomp, indication Vset is larger than Vbat, */\
|
||||
{ 0x3010, "flag_voutcomp93"}, /* flag_voutcomp93, indication Vset is larger than 1.07* Vbat, */\
|
||||
{ 0x3020, "flag_voutcomp86"}, /* flag_voutcomp86, indication Vset is larger than 1.14* Vbat, */\
|
||||
{ 0x3030, "flag_hiz"}, /* flag_hiz, indication Vbst is larger than Vbat , */\
|
||||
{ 0x3040, "flag_ocpokbst"}, /* flag_ocpokbst, indication no over current in boost converter pmos switch, */\
|
||||
{ 0x3050, "flag_peakcur"}, /* flag_peakcur, indication current is max in dcdc converter, */\
|
||||
{ 0x3060, "flag_ocpokap"}, /* flag_ocpokap, indication no over current in amplifier "a" pmos output stage, */\
|
||||
{ 0x3070, "flag_ocpokan"}, /* flag_ocpokan, indication no over current in amplifier "a" nmos output stage, */\
|
||||
{ 0x3080, "flag_ocpokbp"}, /* flag_ocpokbp, indication no over current in amplifier "b" pmos output stage, */\
|
||||
{ 0x3090, "flag_ocpokbn"}, /* flag_ocpokbn, indication no over current in amplifier"b" nmos output stage, */\
|
||||
{ 0x30a0, "flag_adc10_ready"}, /* flag_adc10_ready, indication adc10 is ready , */\
|
||||
{ 0x30b0, "flag_clipa_high"}, /* flag_clipa_high, indication pmos amplifier "a" is clipping, */\
|
||||
{ 0x30c0, "flag_clipa_low"}, /* flag_clipa_low, indication nmos amplifier "a" is clipping, */\
|
||||
{ 0x30d0, "flag_clipb_high"}, /* flag_clipb_high, indication pmos amplifier "b" is clipping, */\
|
||||
{ 0x30e0, "flag_clipb_low"}, /* flag_clipb_low, indication nmos amplifier "b" is clipping, */\
|
||||
{ 0x310f, "mtp_man_data_out"}, /* single word read from MTP (manual copy) , */\
|
||||
{ 0x3200, "key01_locked"}, /* key01_locked, indication key 1 is locked , */\
|
||||
{ 0x3210, "key02_locked"}, /* key02_locked, indication key 2 is locked , */\
|
||||
{ 0x3225, "mtp_ecc_tcout"}, /* mtp_ecc_tcout , */\
|
||||
{ 0x3280, "mtpctrl_valid_test_rd"}, /* mtp test readout for read , */\
|
||||
{ 0x3290, "mtpctrl_valid_test_wr"}, /* mtp test readout for write , */\
|
||||
{ 0x32a0, "flag_in_alarm_state"}, /* Alarm state , */\
|
||||
{ 0x32b0, "mtp_ecc_err2"}, /* two or more bit errors detected in MTP, can not reconstruct value, */\
|
||||
{ 0x32c0, "mtp_ecc_err1"}, /* one bit error detected in MTP, reconstructed value, */\
|
||||
{ 0x32d0, "mtp_mtp_hvf"}, /* high voltage ready flag for MTP , */\
|
||||
{ 0x32f0, "mtp_zero_check_fail"}, /* zero check failed (tbd) for MTP , */\
|
||||
{ 0x3309, "data_adc10_tempbat"}, /* data_adc10_tempbat[9;0], adc 10 data output for testing, */\
|
||||
{ 0x400f, "hid_code"}, /* 5A6Bh, 23147d to access registers (Default for engineering), */\
|
||||
{ 0x4100, "bypass_hp"}, /* Bypass_High Pass Filter , */\
|
||||
{ 0x4110, "hard_mute"}, /* Hard Mute , */\
|
||||
{ 0x4120, "soft_mute"}, /* Soft Mute , */\
|
||||
{ 0x4134, "pwm_delay"}, /* PWM DelayBits to set the delay , */\
|
||||
{ 0x4180, "pwm_shape"}, /* PWM Shape , */\
|
||||
{ 0x4190, "pwm_bitlength"}, /* PWM Bitlength in noise shaper , */\
|
||||
{ 0x4203, "drive"}, /* Drive bits to select amount of power stage amplifier, */\
|
||||
{ 0x4240, "reclock_pwm"}, /* , */\
|
||||
{ 0x4250, "reclock_voltsense"}, /* , */\
|
||||
{ 0x4281, "dpsalevel"}, /* DPSA Threshold level , */\
|
||||
{ 0x42a1, "dpsa_release"}, /* DPSA Release time , */\
|
||||
{ 0x42c0, "coincidence"}, /* Prevent simultaneously switching of output stage , */\
|
||||
{ 0x42d0, "kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x4306, "drivebst"}, /* Drive bits to select the powertransistor sections boost converter, */\
|
||||
{ 0x43a0, "ocptestbst"}, /* Boost OCP. For old ocp (ctrl_reversebst is 0);For new ocp (ctrl_reversebst is 1);, */\
|
||||
{ 0x43d0, "test_abistfft_enbl"}, /* FFT coolflux , */\
|
||||
{ 0x43f0, "test_bcontrol"}, /* test _bcontrol , */\
|
||||
{ 0x4400, "reversebst"}, /* OverCurrent Protection selection of power stage boost converter, */\
|
||||
{ 0x4410, "sensetest"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0x4420, "enbl_engagebst"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x4470, "enbl_slopecur"}, /* Enable bit of max-current dac , */\
|
||||
{ 0x4480, "enbl_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x4490, "enbl_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x44a0, "enbl_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x44b0, "enbl_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x44c0, "enbl_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x44d0, "bypass_ovpglitch"}, /* Bypass OVP Glitch Filter , */\
|
||||
{ 0x44e0, "enbl_windac"}, /* Enable window dac , */\
|
||||
{ 0x44f0, "enbl_powerbst"}, /* Enable line of the powerstage , */\
|
||||
{ 0x4507, "ocp_thr"}, /* ocp_thr threshold level for OCP , */\
|
||||
{ 0x4580, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0x4590, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0x45a0, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0x45b0, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0x45c0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0x45d0, "bypass_ocpcounter"}, /* BypassOCPCounter , */\
|
||||
{ 0x45e0, "bypass_lost_clk"}, /* Bypasslost_clk detector , */\
|
||||
{ 0x45f0, "vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0x4600, "bypass_gc"}, /* bypass_gc, bypasses the CS gain correction , */\
|
||||
{ 0x4610, "cs_gain_control"}, /* gain control by means of MTP or i2c; 0 is MTP , */\
|
||||
{ 0x4627, "cs_gain"}, /* + / - 128 steps in steps of 1/4 percent 2's compliment, */\
|
||||
{ 0x46a0, "bypass_lp"}, /* bypass Low-Pass filter in temperature sensor , */\
|
||||
{ 0x46b0, "bypass_pwmcounter"}, /* bypass_pwmcounter , */\
|
||||
{ 0x46c0, "cs_negfixed"}, /* does not switch to neg , */\
|
||||
{ 0x46d2, "cs_neghyst"}, /* switches to neg depending on level , */\
|
||||
{ 0x4700, "switch_fb"}, /* switch_fb , */\
|
||||
{ 0x4713, "se_hyst"}, /* se_hyst , */\
|
||||
{ 0x4754, "se_level"}, /* se_level , */\
|
||||
{ 0x47a5, "ktemp"}, /* temperature compensation trimming , */\
|
||||
{ 0x4800, "cs_negin"}, /* negin , */\
|
||||
{ 0x4810, "cs_sein"}, /* cs_sein , */\
|
||||
{ 0x4820, "cs_coincidence"}, /* Coincidence current sense , */\
|
||||
{ 0x4830, "iddqtestbst"}, /* for iddq testing in powerstage of boost convertor , */\
|
||||
{ 0x4840, "coincidencebst"}, /* Switch protection on to prevent simultaneously switching power stages bst and amp, */\
|
||||
{ 0x4876, "delay_se_neg"}, /* delay of se and neg , */\
|
||||
{ 0x48e1, "cs_ttrack"}, /* sample & hold track time , */\
|
||||
{ 0x4900, "bypass_clip"}, /* Bypass clip control , */\
|
||||
{ 0x4920, "cf_cgate_off"}, /* to disable clock gating in the coolflux , */\
|
||||
{ 0x4940, "clipfast"}, /* clock switch for battery protection clipper, it switches back to old frequency, */\
|
||||
{ 0x4950, "cs_8ohm"}, /* 8 ohm mode for current sense (gain mode) , */\
|
||||
{ 0x4974, "delay_clock_sh"}, /* delay_sh, tunes S7H delay , */\
|
||||
{ 0x49c0, "inv_clksh"}, /* Invert the sample/hold clock for current sense ADC, */\
|
||||
{ 0x49d0, "inv_neg"}, /* Invert neg signal , */\
|
||||
{ 0x49e0, "inv_se"}, /* Invert se signal , */\
|
||||
{ 0x49f0, "setse"}, /* switches between Single Ende and differential mode; 1 is single ended, */\
|
||||
{ 0x4a12, "adc10_sel"}, /* select the input to convert the 10b ADC , */\
|
||||
{ 0x4a60, "adc10_reset"}, /* Global asynchronous reset (active HIGH) 10 bit ADC, */\
|
||||
{ 0x4a81, "adc10_test"}, /* Test mode selection signal 10 bit ADC , */\
|
||||
{ 0x4aa0, "bypass_lp_vbat"}, /* lp filter in batt sensor , */\
|
||||
{ 0x4ae0, "dc_offset"}, /* switch offset control on/off, is decimator offset control, */\
|
||||
{ 0x4af0, "tsense_hibias"}, /* bit to set the biasing in temp sensor to high , */\
|
||||
{ 0x4b00, "adc13_iset"}, /* Micadc Setting of current consumption. Debug use only, */\
|
||||
{ 0x4b14, "adc13_gain"}, /* Micadc gain setting (2-compl) , */\
|
||||
{ 0x4b61, "adc13_slowdel"}, /* Micadc Delay setting for internal clock. Debug use only, */\
|
||||
{ 0x4b83, "adc13_offset"}, /* Micadc ADC offset setting , */\
|
||||
{ 0x4bc0, "adc13_bsoinv"}, /* Micadc bit stream output invert mode for test , */\
|
||||
{ 0x4bd0, "adc13_resonator_enable"}, /* Micadc Give extra SNR with less stability. Debug use only, */\
|
||||
{ 0x4be0, "testmicadc"}, /* Mux at input of MICADC for test purpose , */\
|
||||
{ 0x4c0f, "abist_offset"}, /* offset control for ABIST testing , */\
|
||||
{ 0x4d05, "windac"}, /* for testing direct control windac , */\
|
||||
{ 0x4dc3, "pwm_dcc_cnt"}, /* control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0x4e04, "slopecur"}, /* for testing direct control slopecur , */\
|
||||
{ 0x4e50, "ctrl_dem"}, /* dyn element matching control, rest of codes are optional, */\
|
||||
{ 0x4ed0, "enbl_pwm_dcc"}, /* to enable direct control of pwm duty cycle , */\
|
||||
{ 0x5007, "gain"}, /* Gain setting of the gain multiplier , */\
|
||||
{ 0x5081, "sourceb"}, /* Set OUTB to , */\
|
||||
{ 0x50a1, "sourcea"}, /* Set OUTA to , */\
|
||||
{ 0x50c1, "sourcebst"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0x50e0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0x5104, "pulselengthbst"}, /* pulse length setting test input for boost converter, */\
|
||||
{ 0x5150, "bypasslatchbst"}, /* bypass_latch in boost converter , */\
|
||||
{ 0x5160, "invertbst"}, /* invert pwmbst test signal , */\
|
||||
{ 0x5174, "pulselength"}, /* pulse length setting test input for amplifier , */\
|
||||
{ 0x51c0, "bypasslatch"}, /* bypass_latch in PWM source selection module , */\
|
||||
{ 0x51d0, "invertb"}, /* invert pwmb test signal , */\
|
||||
{ 0x51e0, "inverta"}, /* invert pwma test signal , */\
|
||||
{ 0x51f0, "bypass_ctrlloop"}, /* bypass_ctrlloop bypasses the control loop of the amplifier, */\
|
||||
{ 0x5210, "test_rdsona"}, /* tbd for rdson testing , */\
|
||||
{ 0x5220, "test_rdsonb"}, /* tbd for rdson testing , */\
|
||||
{ 0x5230, "test_rdsonbst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5240, "test_cvia"}, /* tbd for rdson testing , */\
|
||||
{ 0x5250, "test_cvib"}, /* tbd for rdson testing , */\
|
||||
{ 0x5260, "test_cvibst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5306, "digimuxa_sel"}, /* DigimuxA input selection control (see Digimux list for details), */\
|
||||
{ 0x5376, "digimuxb_sel"}, /* DigimuxB input selection control (see Digimux list for details), */\
|
||||
{ 0x5400, "hs_mode"}, /* hs_mode, high speed mode I2C bus , */\
|
||||
{ 0x5412, "test_parametric_io"}, /* test_parametric_io for testing pads , */\
|
||||
{ 0x5440, "enbl_ringo"}, /* enbl_ringo, for test purpose to check with ringo , */\
|
||||
{ 0x5456, "digimuxc_sel"}, /* DigimuxC input selection control (see Digimux list for details), */\
|
||||
{ 0x54c0, "dio_ehs"}, /* Slew control for DIO in output mode , */\
|
||||
{ 0x54d0, "gainio_ehs"}, /* Slew control for GAINIO in output mode , */\
|
||||
{ 0x550d, "enbl_amp"}, /* enbl_amp for testing to enable all analoge blocks in amplifier, */\
|
||||
{ 0x5600, "use_direct_ctrls"}, /* use_direct_ctrls, to overrule several functions direct for testing, */\
|
||||
{ 0x5610, "rst_datapath"}, /* rst_datapath, datapath reset , */\
|
||||
{ 0x5620, "rst_cgu"}, /* rst_cgu, cgu reset , */\
|
||||
{ 0x5637, "enbl_ref"}, /* for testing to enable all analoge blocks in references, */\
|
||||
{ 0x56b0, "enbl_engage"}, /* Enable output stage amplifier , */\
|
||||
{ 0x56c0, "use_direct_clk_ctrl"}, /* use_direct_clk_ctrl, to overrule several functions direct for testing, */\
|
||||
{ 0x56d0, "use_direct_pll_ctrl"}, /* use_direct_pll_ctrl, to overrule several functions direct for testing, */\
|
||||
{ 0x56e0, "use_direct_ctrls_2"}, /* use_direct_sourseamp_ctrls, to overrule several functions direct for testing, */\
|
||||
{ 0x5707, "anamux"}, /* Anamux control , */\
|
||||
{ 0x57c0, "ocptest"}, /* ctrl_ocptest, deactivates the over current protection in the power stages of the amplifier. The ocp flag signals stay active., */\
|
||||
{ 0x57e0, "otptest"}, /* otptest, test mode otp amplifier , */\
|
||||
{ 0x57f0, "reverse"}, /* 1: Normal mode, slope is controlled , */\
|
||||
{ 0x5813, "pll_selr"}, /* pll_selr , */\
|
||||
{ 0x5854, "pll_selp"}, /* pll_selp , */\
|
||||
{ 0x58a5, "pll_seli"}, /* pll_seli , */\
|
||||
{ 0x5950, "pll_mdec_msb"}, /* most significant bits of pll_mdec[16] , */\
|
||||
{ 0x5960, "pll_ndec_msb"}, /* most significant bits of pll_ndec[9] , */\
|
||||
{ 0x5970, "pll_frm"}, /* pll_frm , */\
|
||||
{ 0x5980, "pll_directi"}, /* pll_directi , */\
|
||||
{ 0x5990, "pll_directo"}, /* pll_directo , */\
|
||||
{ 0x59a0, "enbl_pll"}, /* enbl_pll , */\
|
||||
{ 0x59f0, "pll_bypass"}, /* pll_bypass , */\
|
||||
{ 0x5a0f, "tsig_freq"}, /* tsig_freq, internal sinus test generator, frequency control, */\
|
||||
{ 0x5b02, "tsig_freq_msb"}, /* select internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0x5b30, "inject_tsig"}, /* inject_tsig, control bit to switch to internal sinus test generator, */\
|
||||
{ 0x5b44, "adc10_prog_sample"}, /* control ADC10 , */\
|
||||
{ 0x5c0f, "pll_mdec"}, /* bits 15..0 of pll_mdec[16;0] , */\
|
||||
{ 0x5d06, "pll_pdec"}, /* pll_pdec , */\
|
||||
{ 0x5d78, "pll_ndec"}, /* bits 8..0 of pll_ndec[9;0] , */\
|
||||
{ 0x6007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0x6185, "mtp_ecc_tcin"}, /* Mtp_ecc_tcin , */\
|
||||
{ 0x6203, "mtp_man_address_in"}, /* address from I2C regs for writing one word single mtp, */\
|
||||
{ 0x6260, "mtp_ecc_eeb"}, /* enable code bit generation (active low!) , */\
|
||||
{ 0x6270, "mtp_ecc_ecb"}, /* enable correction signal (active low!) , */\
|
||||
{ 0x6280, "man_copy_mtp_to_iic"}, /* start copying single word from mtp to i2cregs_mtp , */\
|
||||
{ 0x6290, "man_copy_iic_to_mtp"}, /* start copying single word from i2cregs_mtp to mtp [Key 1 protected], */\
|
||||
{ 0x62a0, "auto_copy_mtp_to_iic"}, /* start copying all the data from mtp to i2cregs_mtp, */\
|
||||
{ 0x62b0, "auto_copy_iic_to_mtp"}, /* start copying all the data from i2cregs_mtp to mtp [Key 2 protected], */\
|
||||
{ 0x62d2, "mtp_speed_mode"}, /* Speed mode , */\
|
||||
{ 0x6340, "mtp_direct_enable"}, /* mtp_direct_enable (key1 protected) , */\
|
||||
{ 0x6350, "mtp_direct_wr"}, /* mtp_direct_wr (key1 protected) , */\
|
||||
{ 0x6360, "mtp_direct_rd"}, /* mtp_direct_rd (key1 protected) , */\
|
||||
{ 0x6370, "mtp_direct_rst"}, /* mtp_direct_rst (key1 protected) , */\
|
||||
{ 0x6380, "mtp_direct_ers"}, /* mtp_direct_ers (key1 protected) , */\
|
||||
{ 0x6390, "mtp_direct_prg"}, /* mtp_direct_prg (key1 protected) , */\
|
||||
{ 0x63a0, "mtp_direct_epp"}, /* mtp_direct_epp (key1 protected) , */\
|
||||
{ 0x63b4, "mtp_direct_test"}, /* mtp_direct_test (key1 protected) , */\
|
||||
{ 0x640f, "mtp_man_data_in"}, /* single word to be written to MTP (manual copy) , */\
|
||||
{ 0x7000, "cf_rst_dsp"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "cf_dmem"}, /* Target memory for access , */\
|
||||
{ 0x7030, "cf_aif"}, /* Autoincrement-flag for memory-address , */\
|
||||
{ 0x7040, "cf_int"}, /* Interrupt CoolFlux DSP , */\
|
||||
{ 0x7087, "cf_req"}, /* request for access (8 channels) , */\
|
||||
{ 0x710f, "cf_madd"}, /* memory-address to be accessed , */\
|
||||
{ 0x720f, "cf_mema"}, /* activate memory access (24- or 32-bits data is written/read to/from memory, */\
|
||||
{ 0x7307, "cf_err"}, /* Coolflux error flags , */\
|
||||
{ 0x7387, "cf_ack"}, /* acknowledge of requests (8 channels) , */\
|
||||
{ 0x8000, "calibration_onetime"}, /* Calibration schedule (key2 protected) , */\
|
||||
{ 0x8010, "calibr_ron_done"}, /* (key2 protected) , */\
|
||||
{ 0x8105, "calibr_vout_offset"}, /* calibr_vout_offset (DCDCoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8163, "calibr_delta_gain"}, /* delta gain for vamp (alpha) 2's compliment (key1 protected), */\
|
||||
{ 0x81a5, "calibr_offs_amp"}, /* offset for vamp (Ampoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8207, "calibr_gain_cs"}, /* gain current sense (Imeasalpha) 2's compliment (key1 protected), */\
|
||||
{ 0x8284, "calibr_temp_offset"}, /* temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0x82d2, "calibr_temp_gain"}, /* temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0x830f, "calibr_ron"}, /* Ron resistance of coil (key1 protected) , */\
|
||||
{ 0x8505, "type_bits_HW"}, /* Key1_Protected_MTP5 , */\
|
||||
{ 0x8601, "type_bits_1_0_SW"}, /* MTP-control SW , */\
|
||||
{ 0x8681, "type_bits_8_9_SW"}, /* MTP-control SW , */\
|
||||
{ 0x870f, "type_bits2_SW"}, /* MTP-control SW2 , */\
|
||||
{ 0x8806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0x8870, "htol_iic_addr_en"}, /* HTOL_I2C_Address_Enable , */\
|
||||
{ 0x8881, "ctrl_ovp_response"}, /* OVP response control , */\
|
||||
{ 0x88a0, "disable_ovp_alarm_state"}, /* OVP alarm state control , */\
|
||||
{ 0x88b0, "enbl_stretch_ovp"}, /* OVP alram strech control , */\
|
||||
{ 0x88c0, "cf_debug_mode"}, /* Coolflux debug mode , */\
|
||||
{ 0x8a0f, "production_data1"}, /* (key1 protected) , */\
|
||||
{ 0x8b0f, "production_data2"}, /* (key1 protected) , */\
|
||||
{ 0x8c0f, "production_data3"}, /* (key1 protected) , */\
|
||||
{ 0x8d0f, "production_data4"}, /* (key1 protected) , */\
|
||||
{ 0x8e0f, "production_data5"}, /* (key1 protected) , */\
|
||||
{ 0x8f0f, "production_data6"}, /* (key1 protected) , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
enum tfa1_irq {
|
||||
tfa1_irq_vdds = 0,
|
||||
tfa1_irq_plls = 1,
|
||||
tfa1_irq_ds = 2,
|
||||
tfa1_irq_vds = 3,
|
||||
tfa1_irq_uvds = 4,
|
||||
tfa1_irq_cds = 5,
|
||||
tfa1_irq_clks = 6,
|
||||
tfa1_irq_clips = 7,
|
||||
tfa1_irq_mtpb = 8,
|
||||
tfa1_irq_clk = 9,
|
||||
tfa1_irq_spks = 10,
|
||||
tfa1_irq_acs = 11,
|
||||
tfa1_irq_sws = 12,
|
||||
tfa1_irq_wds = 13,
|
||||
tfa1_irq_amps = 14,
|
||||
tfa1_irq_arefs = 15,
|
||||
tfa1_irq_ack = 32,
|
||||
tfa1_irq_max = 33,
|
||||
tfa1_irq_all = -1 /* all irqs */};
|
||||
|
||||
#define TFA1_IRQ_NAMETABLE static tfaIrqName_t Tfa1IrqNames[]= {\
|
||||
{ 0, "VDDS"},\
|
||||
{ 1, "PLLS"},\
|
||||
{ 2, "DS"},\
|
||||
{ 3, "VDS"},\
|
||||
{ 4, "UVDS"},\
|
||||
{ 5, "CDS"},\
|
||||
{ 6, "CLKS"},\
|
||||
{ 7, "CLIPS"},\
|
||||
{ 8, "MTPB"},\
|
||||
{ 9, "CLK"},\
|
||||
{ 10, "SPKS"},\
|
||||
{ 11, "ACS"},\
|
||||
{ 12, "SWS"},\
|
||||
{ 13, "WDS"},\
|
||||
{ 14, "AMPS"},\
|
||||
{ 15, "AREFS"},\
|
||||
{ 16, "16"},\
|
||||
{ 17, "17"},\
|
||||
{ 18, "18"},\
|
||||
{ 19, "19"},\
|
||||
{ 20, "20"},\
|
||||
{ 21, "21"},\
|
||||
{ 22, "22"},\
|
||||
{ 23, "23"},\
|
||||
{ 24, "24"},\
|
||||
{ 25, "25"},\
|
||||
{ 26, "26"},\
|
||||
{ 27, "27"},\
|
||||
{ 28, "28"},\
|
||||
{ 29, "29"},\
|
||||
{ 30, "30"},\
|
||||
{ 31, "31"},\
|
||||
{ 32, "ACK"},\
|
||||
{ 33, "33"},\
|
||||
};
|
||||
1533
techpack/audio/asoc/codecs/tfa9874/inc/tfa2_tfafieldnames_N1C.h
Executable file
1533
techpack/audio/asoc/codecs/tfa9874/inc/tfa2_tfafieldnames_N1C.h
Executable file
File diff suppressed because it is too large
Load diff
1228
techpack/audio/asoc/codecs/tfa9874/inc/tfa9872_tfafieldnames.h
Executable file
1228
techpack/audio/asoc/codecs/tfa9874/inc/tfa9872_tfafieldnames.h
Executable file
File diff suppressed because it is too large
Load diff
934
techpack/audio/asoc/codecs/tfa9874/inc/tfa9873_tfafieldnames.h
Executable file
934
techpack/audio/asoc/codecs/tfa9874/inc/tfa9873_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,934 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: tfa9873_tfaFieldnames.h
|
||||
* This file was generated automatically on 10/21/19 at 17:03:34.
|
||||
* Source file: TFA9873_PRB4_N1A0_I2C_RegisterMap.xlsx
|
||||
*/
|
||||
|
||||
#ifndef _TFA9873_TFAFIELDNAMES_H
|
||||
#define _TFA9873_TFAFIELDNAMES_H
|
||||
|
||||
|
||||
#define TFA9873_I2CVERSION 28
|
||||
|
||||
typedef enum Tfa9873BfEnumList {
|
||||
TFA9873_BF_PWDN = 0x0000, /*!< Powerdown selection */
|
||||
TFA9873_BF_I2CR = 0x0010, /*!< I2C reset - auto clear */
|
||||
TFA9873_BF_AMPE = 0x0030, /*!< Activate amplifier */
|
||||
TFA9873_BF_DCA = 0x0040, /*!< Activate DC-to-DC converter */
|
||||
TFA9873_BF_INTP = 0x0071, /*!< Interrupt config */
|
||||
TFA9873_BF_FSSSEL= 0x0090, /*!< Audio sample reference */
|
||||
TFA9873_BF_BYPOCP= 0x00b0, /*!< Bypass OCP */
|
||||
TFA9873_BF_TSTOCP= 0x00c0, /*!< OCP testing control */
|
||||
TFA9873_BF_ENPLLSYNC= 0x00e0, /*!< Manager control for enabling synchronisation with PLL FS */
|
||||
TFA9873_BF_AMPINSEL= 0x0101, /*!< Amplifier input selection */
|
||||
TFA9873_BF_MANSCONF= 0x0120, /*!< I2C configured */
|
||||
TFA9873_BF_MUTETO= 0x0160, /*!< Time out SB mute sequence */
|
||||
TFA9873_BF_OPENMTP= 0x01e0, /*!< Control for FAIM protection */
|
||||
TFA9873_BF_DISFCRBST= 0x01f0, /*!< Disable boost control with FRCBST */
|
||||
TFA9873_BF_AUDFS = 0x0203, /*!< Sample rate (fs) */
|
||||
TFA9873_BF_INPLEV= 0x0240, /*!< TDM output attenuation */
|
||||
TFA9873_BF_FRACTDEL= 0x0255, /*!< V/I Fractional delay */
|
||||
TFA9873_BF_REV = 0x030f, /*!< Device revision information */
|
||||
TFA9873_BF_REFCKEXT= 0x0401, /*!< PLL external ref clock */
|
||||
TFA9873_BF_REFCKSEL= 0x0420, /*!< PLL internal ref clock */
|
||||
TFA9873_BF_MANAOOSC= 0x0460, /*!< Internal osc off in power down mode */
|
||||
TFA9873_BF_FSSYNCEN= 0x0480, /*!< Enable FS synchronisation for clock divider */
|
||||
TFA9873_BF_CLKREFSYNCEN= 0x0490, /*!< Enable PLL reference clock synchronisation for clock divider */
|
||||
TFA9873_BF_AUTOFROSEL= 0x04a0, /*!< Override automatic OSC selection mechanism */
|
||||
TFA9873_BF_CGUSYNCDCG= 0x0500, /*!< Clock gating control for CGU synchronisation module */
|
||||
TFA9873_BF_FRCCLKSPKR= 0x0510, /*!< Force active the speaker sub-system clock when in idle power */
|
||||
TFA9873_BF_BSTCLKLP= 0x0520, /*!< Boost clock control in low power mode1 */
|
||||
TFA9873_BF_SSFAIME= 0x05c0, /*!< Sub-system FAIM */
|
||||
TFA9873_BF_CLKCHKLO= 0x0707, /*!< Clock check low threshold */
|
||||
TFA9873_BF_CLKCHKHI= 0x0787, /*!< Clock check higher threshold */
|
||||
TFA9873_BF_AMPOCRT= 0x0802, /*!< Amplifier on-off criteria for shutdown */
|
||||
TFA9873_BF_VDDS = 0x1000, /*!< POR */
|
||||
TFA9873_BF_DCOCPOK= 0x1010, /*!< DCDC OCP nmos (sticky register, clear on read) */
|
||||
TFA9873_BF_OTDS = 0x1020, /*!< OTP alarm (sticky register, clear on read) */
|
||||
TFA9873_BF_OCDS = 0x1030, /*!< OCP amplifier (sticky register, clear on read) */
|
||||
TFA9873_BF_UVDS = 0x1040, /*!< UVP alarm (sticky register, clear on read) */
|
||||
TFA9873_BF_MANALARM= 0x1050, /*!< Alarm state */
|
||||
TFA9873_BF_CLKS = 0x1060, /*!< Clocks stable */
|
||||
TFA9873_BF_MTPB = 0x1070, /*!< MTP busy */
|
||||
TFA9873_BF_NOCLK = 0x1080, /*!< Lost clock (sticky register, clear on read) */
|
||||
TFA9873_BF_TDMERR= 0x10a0, /*!< TDM error */
|
||||
TFA9873_BF_DCIL = 0x1100, /*!< DCDC current limiting */
|
||||
TFA9873_BF_DCDCA = 0x1110, /*!< DCDC active (sticky register, clear on read) */
|
||||
TFA9873_BF_DCDCPC= 0x1120, /*!< Indicates current is max in DC-to-DC converter */
|
||||
TFA9873_BF_DCHVBAT= 0x1130, /*!< DCDC level 1x */
|
||||
TFA9873_BF_DCH114= 0x1140, /*!< DCDC level 1.14x */
|
||||
TFA9873_BF_DCH107= 0x1150, /*!< DCDC level 1.07x */
|
||||
TFA9873_BF_PLLS = 0x1160, /*!< PLL lock */
|
||||
TFA9873_BF_TDMLUTER= 0x1180, /*!< TDM LUT error */
|
||||
TFA9873_BF_CLKOOR= 0x11c0, /*!< External clock status */
|
||||
TFA9873_BF_SWS = 0x11d0, /*!< Amplifier engage */
|
||||
TFA9873_BF_AMPS = 0x11e0, /*!< Amplifier enable */
|
||||
TFA9873_BF_AREFS = 0x11f0, /*!< References enable */
|
||||
TFA9873_BF_OCPOAP= 0x1300, /*!< OCPOK pmos A */
|
||||
TFA9873_BF_OCPOAN= 0x1310, /*!< OCPOK nmos A */
|
||||
TFA9873_BF_OCPOBP= 0x1320, /*!< OCPOK pmos B */
|
||||
TFA9873_BF_OCPOBN= 0x1330, /*!< OCPOK nmos B */
|
||||
TFA9873_BF_OVDS = 0x1380, /*!< OVP alarm */
|
||||
TFA9873_BF_CLIPS = 0x1390, /*!< Amplifier clipping */
|
||||
TFA9873_BF_ADCCR = 0x13a0, /*!< Control ADC */
|
||||
TFA9873_BF_MANWAIT1= 0x13c0, /*!< Wait HW I2C settings */
|
||||
TFA9873_BF_MANMUTE= 0x13e0, /*!< Audio mute sequence */
|
||||
TFA9873_BF_MANOPER= 0x13f0, /*!< Operating state */
|
||||
TFA9873_BF_TDMSTAT= 0x1402, /*!< TDM status bits */
|
||||
TFA9873_BF_MANSTATE= 0x1433, /*!< Device manager status */
|
||||
TFA9873_BF_AMPSTE= 0x1473, /*!< Amplifier control status */
|
||||
TFA9873_BF_DCMODE= 0x14b1, /*!< DCDC mode status bits */
|
||||
TFA9873_BF_WAITSYNC= 0x14d0, /*!< CGU and PLL synchronisation status flag from CGU */
|
||||
TFA9873_BF_BATS = 0x1509, /*!< Battery voltage (V) */
|
||||
TFA9873_BF_TEMPS = 0x1608, /*!< IC Temperature (C) */
|
||||
TFA9873_BF_VDDPS = 0x1709, /*!< IC VDDP voltage ( 1023*VDDP/13 V) */
|
||||
TFA9873_BF_TDME = 0x2000, /*!< Enable interface */
|
||||
TFA9873_BF_TDMSLOTS= 0x2013, /*!< N-slots in Frame */
|
||||
TFA9873_BF_TDMCLINV= 0x2060, /*!< Reception data to BCK clock */
|
||||
TFA9873_BF_TDMFSLN= 0x2073, /*!< FS length */
|
||||
TFA9873_BF_TDMFSPOL= 0x20b0, /*!< FS polarity */
|
||||
TFA9873_BF_TDMNBCK= 0x20c3, /*!< N-BCK's in FS */
|
||||
TFA9873_BF_TDMSLLN= 0x2144, /*!< N-bits in slot */
|
||||
TFA9873_BF_TDMBRMG= 0x2194, /*!< N-bits remaining */
|
||||
TFA9873_BF_TDMDEL= 0x21e0, /*!< Data delay to FS */
|
||||
TFA9873_BF_TDMADJ= 0x21f0, /*!< Data adjustment */
|
||||
TFA9873_BF_TDMOOMP= 0x2201, /*!< Received audio compression */
|
||||
TFA9873_BF_TDMSSIZE= 0x2224, /*!< Sample size per slot */
|
||||
TFA9873_BF_TDMTXDFO= 0x2271, /*!< Format unused bits */
|
||||
TFA9873_BF_TDMTXUS0= 0x2291, /*!< Format unused slots DATAO */
|
||||
TFA9873_BF_TDMSPKE= 0x2300, /*!< Control audio TDM channel in 0 */
|
||||
TFA9873_BF_TDMDCE= 0x2310, /*!< Control audio TDM channel in 1 */
|
||||
TFA9873_BF_TDMCSE= 0x2330, /*!< current sense vbat temperature and vddp feedback */
|
||||
TFA9873_BF_TDMVSE= 0x2340, /*!< Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9873_BF_TDMSPKS= 0x2603, /*!< TDM slot for sink 0 */
|
||||
TFA9873_BF_TDMDCS= 0x2643, /*!< TDM slot for sink 1 */
|
||||
TFA9873_BF_TDMCSS= 0x26c3, /*!< Slot Position of current sense vbat temperature and vddp feedback */
|
||||
TFA9873_BF_TDMVSS= 0x2703, /*!< Slot Position of Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9873_BF_ISTVDDS= 0x4000, /*!< Status POR */
|
||||
TFA9873_BF_ISTBSTOC= 0x4010, /*!< Status DCDC OCP */
|
||||
TFA9873_BF_ISTOTDS= 0x4020, /*!< Status OTP alarm */
|
||||
TFA9873_BF_ISTOCPR= 0x4030, /*!< Status OCP alarm */
|
||||
TFA9873_BF_ISTUVDS= 0x4040, /*!< Status UVP alarm */
|
||||
TFA9873_BF_ISTMANALARM= 0x4050, /*!< Status manager alarm state */
|
||||
TFA9873_BF_ISTTDMER= 0x4060, /*!< Status TDM error */
|
||||
TFA9873_BF_ISTNOCLK= 0x4070, /*!< Status lost clock */
|
||||
TFA9873_BF_ICLVDDS= 0x4400, /*!< Clear POR */
|
||||
TFA9873_BF_ICLBSTOC= 0x4410, /*!< Clear DCDC OCP */
|
||||
TFA9873_BF_ICLOTDS= 0x4420, /*!< Clear OTP alarm */
|
||||
TFA9873_BF_ICLOCPR= 0x4430, /*!< Clear OCP alarm */
|
||||
TFA9873_BF_ICLUVDS= 0x4440, /*!< Clear UVP alarm */
|
||||
TFA9873_BF_ICLMANALARM= 0x4450, /*!< Clear manager alarm state */
|
||||
TFA9873_BF_ICLTDMER= 0x4460, /*!< Clear TDM error */
|
||||
TFA9873_BF_ICLNOCLK= 0x4470, /*!< Clear lost clk */
|
||||
TFA9873_BF_IEVDDS= 0x4800, /*!< Enable POR */
|
||||
TFA9873_BF_IEBSTOC= 0x4810, /*!< Enable DCDC OCP */
|
||||
TFA9873_BF_IEOTDS= 0x4820, /*!< Enable OTP alarm */
|
||||
TFA9873_BF_IEOCPR= 0x4830, /*!< Enable OCP alarm */
|
||||
TFA9873_BF_IEUVDS= 0x4840, /*!< Enable UVP alarm */
|
||||
TFA9873_BF_IEMANALARM= 0x4850, /*!< Enable manager alarm state */
|
||||
TFA9873_BF_IETDMER= 0x4860, /*!< Enable TDM error */
|
||||
TFA9873_BF_IENOCLK= 0x4870, /*!< Enable lost clk */
|
||||
TFA9873_BF_IPOVDDS= 0x4c00, /*!< Polarity POR */
|
||||
TFA9873_BF_IPOBSTOC= 0x4c10, /*!< Polarity DCDC OCP */
|
||||
TFA9873_BF_IPOOTDS= 0x4c20, /*!< Polarity OTP alarm */
|
||||
TFA9873_BF_IPOOCPR= 0x4c30, /*!< Polarity OCP alarm */
|
||||
TFA9873_BF_IPOUVDS= 0x4c40, /*!< Polarity UVP alarm */
|
||||
TFA9873_BF_IPOMANALARM= 0x4c50, /*!< Polarity manager alarm state */
|
||||
TFA9873_BF_IPOTDMER= 0x4c60, /*!< Polarity TDM error */
|
||||
TFA9873_BF_IPONOCLK= 0x4c70, /*!< Polarity lost clk */
|
||||
TFA9873_BF_BSSCR = 0x5001, /*!< Battery safeguard attack time */
|
||||
TFA9873_BF_BSST = 0x5023, /*!< Battery safeguard threshold voltage level */
|
||||
TFA9873_BF_BSSRL = 0x5061, /*!< Battery safeguard maximum reduction */
|
||||
TFA9873_BF_BSSR = 0x50e0, /*!< Battery voltage read out */
|
||||
TFA9873_BF_BSSBY = 0x50f0, /*!< Bypass battery safeguard */
|
||||
TFA9873_BF_BSSS = 0x5100, /*!< Vbat prot steepness */
|
||||
TFA9873_BF_HPFBYP= 0x5150, /*!< Bypass HPF */
|
||||
TFA9873_BF_DPSA = 0x5170, /*!< Enable DPSA */
|
||||
TFA9873_BF_BYHWCLIP= 0x5240, /*!< Bypass hardware clipper */
|
||||
TFA9873_BF_AMPGAIN= 0x5257, /*!< Amplifier gain */
|
||||
TFA9873_BF_SLOPEE= 0x52d0, /*!< Enables slope control */
|
||||
TFA9873_BF_SLOPESET= 0x52e0, /*!< Slope speed setting (bin. coded) */
|
||||
TFA9873_BF_BYPDLYLINE= 0x52f0, /*!< Bypass the interpolator delay line */
|
||||
TFA9873_BF_TDMSPKG= 0x5f63, /*!< Total gain depending on INPLEV setting (channel 0) */
|
||||
TFA9873_BF_IPM = 0x60e1, /*!< Idle power mode control */
|
||||
TFA9873_BF_LNMODE= 0x62e1, /*!< Ctrl select mode */
|
||||
TFA9873_BF_LPM1MODE= 0x64e1, /*!< Low power mode control */
|
||||
TFA9873_BF_TDMSRCMAP= 0x6802, /*!< TDM source mapping */
|
||||
TFA9873_BF_TDMSRCAS= 0x6831, /*!< Sensed value A */
|
||||
TFA9873_BF_TDMSRCBS= 0x6851, /*!< Sensed value B */
|
||||
TFA9873_BF_TDMSRCACLIP= 0x6871, /*!< Clip information (analog /digital) for source0 */
|
||||
TFA9873_BF_TDMSRCBCLIP= 0x6891, /*!< Clip information (analog /digital) for source1 */
|
||||
TFA9873_BF_LP0 = 0x6e00, /*!< Idle power mode */
|
||||
TFA9873_BF_LP1 = 0x6e10, /*!< Low power mode 1 detection */
|
||||
TFA9873_BF_LA = 0x6e20, /*!< Low amplitude detection */
|
||||
TFA9873_BF_VDDPH = 0x6e30, /*!< Vddp greater than Vbat */
|
||||
TFA9873_BF_DELCURCOMP= 0x6f02, /*!< Delay to allign compensation signal with current sense signal */
|
||||
TFA9873_BF_SIGCURCOMP= 0x6f40, /*!< Polarity of compensation for current sense */
|
||||
TFA9873_BF_ENCURCOMP= 0x6f50, /*!< Enable current sense compensation */
|
||||
TFA9873_BF_LVLCLPPWM= 0x6f72, /*!< Set the amount of pwm pulse that may be skipped before clip-flag is triggered */
|
||||
TFA9873_BF_DCMCC = 0x7003, /*!< Max coil current */
|
||||
TFA9873_BF_DCCV = 0x7041, /*!< Slope compensation current, represents LxF (inductance x frequency) */
|
||||
TFA9873_BF_DCIE = 0x7060, /*!< Adaptive boost mode */
|
||||
TFA9873_BF_DCSR = 0x7070, /*!< Soft ramp up/down */
|
||||
TFA9873_BF_DCOVL = 0x7085, /*!< Threshold level to activate active overshoot control */
|
||||
TFA9873_BF_DCDIS = 0x70e0, /*!< DCDC on/off */
|
||||
TFA9873_BF_DCPWM = 0x70f0, /*!< DCDC PWM only mode */
|
||||
TFA9873_BF_DCDYFSW= 0x7420, /*!< Disables the dynamic frequency switching due to flag_voutcomp86/93 */
|
||||
TFA9873_BF_DCTRACK= 0x7430, /*!< Boost algorithm selection, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873_BF_DCTRIP= 0x7444, /*!< 1st Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9873_BF_DCHOLD= 0x7494, /*!< Hold time for DCDC booster, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873_BF_DCINT = 0x74e0, /*!< Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873_BF_DCTRIP2= 0x7534, /*!< 2nd Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9873_BF_DCTRIPT= 0x7584, /*!< Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873_BF_DCTRIPHYSTE= 0x75f0, /*!< Enable hysteresis on booster trip levels */
|
||||
TFA9873_BF_ENBSTFLT= 0x7620, /*!< Enable the boost filter */
|
||||
TFA9873_BF_DCVOF = 0x7635, /*!< First boost voltage level */
|
||||
TFA9873_BF_DCVOS = 0x7695, /*!< Second boost voltage level */
|
||||
TFA9873_BF_MTPK = 0xa107, /*!< MTP KEY2 register */
|
||||
TFA9873_BF_KEY1LOCKED= 0xa200, /*!< Indicates KEY1 is locked */
|
||||
TFA9873_BF_KEY2LOCKED= 0xa210, /*!< Indicates KEY2 is locked */
|
||||
TFA9873_BF_MTPADDR= 0xa302, /*!< MTP address from I2C register for read/writing mtp in manual single word mode */
|
||||
TFA9873_BF_MTPRDMSB= 0xa50f, /*!< MSB word of MTP manual read data */
|
||||
TFA9873_BF_MTPRDLSB= 0xa60f, /*!< LSB word of MTP manual read data */
|
||||
TFA9873_BF_MTPWRMSB= 0xa70f, /*!< MSB word of write data for MTP manual write */
|
||||
TFA9873_BF_MTPWRLSB= 0xa80f, /*!< LSB word of write data for MTP manual write */
|
||||
TFA9873_BF_EXTTS = 0xb108, /*!< External temperature (C) */
|
||||
TFA9873_BF_TROS = 0xb190, /*!< Select temp Speaker calibration */
|
||||
TFA9873_BF_PLLINSI= 0xcd05, /*!< PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1 */
|
||||
TFA9873_BF_PLLINSP= 0xcd64, /*!< PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9873_BF_PLLINSR= 0xcdb3, /*!< PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9873_BF_PLLBDSEL= 0xcdf0, /*!< PLL bandwidth selection control, USE WITH CAUTION */
|
||||
TFA9873_BF_PLLNDEC= 0xce09, /*!< PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLMDECM= 0xcea0, /*!< MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLBP = 0xceb0, /*!< PLL bypass control during functional mode */
|
||||
TFA9873_BF_PLLDI = 0xcec0, /*!< PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLDO = 0xced0, /*!< PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLCLKSTB= 0xcee0, /*!< PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLFRM= 0xcef0, /*!< PLL free running mode control in functional mode */
|
||||
TFA9873_BF_PLLMDECL= 0xcf0f, /*!< Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLPDEC= 0xd006, /*!< PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873_BF_PLLDCTRL= 0xd070, /*!< Enabled PLL direct control mode, overrules the PLL LUT with I2C register values */
|
||||
TFA9873_BF_PLLLIMOFF= 0xd090, /*!< PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1 */
|
||||
TFA9873_BF_PLLSTRTM= 0xd0a2, /*!< PLL startup time selection control */
|
||||
TFA9873_BF_SWPROFIL= 0xe00f, /*!< Software profile data */
|
||||
TFA9873_BF_SWVSTEP= 0xe10f, /*!< Software vstep information */
|
||||
TFA9873_BF_MTPOTC= 0xf000, /*!< Calibration schedule */
|
||||
TFA9873_BF_MTPEX = 0xf010, /*!< Calibration Ron executed */
|
||||
TFA9873_BF_DCMCCAPI= 0xf020, /*!< Calibration current limit DCDC */
|
||||
TFA9873_BF_DCMCCSB= 0xf030, /*!< Sign bit for delta calibration current limit DCDC */
|
||||
TFA9873_BF_USERDEF= 0xf042, /*!< Calibration delta current limit DCDC */
|
||||
TFA9873_BF_CUSTINFO= 0xf078, /*!< Reserved space for allowing customer to store speaker information */
|
||||
TFA9873_BF_R25C = 0xf50f, /*!< Ron resistance of speaker coil */
|
||||
} Tfa9873BfEnumList_t;
|
||||
#define TFA9873_NAMETABLE static tfaBfName_t Tfa9873DatasheetNames[]= {\
|
||||
{ 0x0, "PWDN"}, /* Powerdown selection , */\
|
||||
{ 0x10, "I2CR"}, /* I2C reset - auto clear , */\
|
||||
{ 0x30, "AMPE"}, /* Activate amplifier , */\
|
||||
{ 0x40, "DCA"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "INTP"}, /* Interrupt config , */\
|
||||
{ 0x90, "FSSSEL"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "BYPOCP"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "TSTOCP"}, /* OCP testing control , */\
|
||||
{ 0xe0, "ENPLLSYNC"}, /* Manager control for enabling synchronisation with PLL FS, */\
|
||||
{ 0x101, "AMPINSEL"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "MANSCONF"}, /* I2C configured , */\
|
||||
{ 0x160, "MUTETO"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "OPENMTP"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "DISFCRBST"}, /* Disable boost control with FRCBST , */\
|
||||
{ 0x203, "AUDFS"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "INPLEV"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "FRACTDEL"}, /* V/I Fractional delay , */\
|
||||
{ 0x30f, "REV"}, /* Device revision information , */\
|
||||
{ 0x401, "REFCKEXT"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "REFCKSEL"}, /* PLL internal ref clock , */\
|
||||
{ 0x460, "MANAOOSC"}, /* Internal osc off in power down mode , */\
|
||||
{ 0x480, "FSSYNCEN"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "CLKREFSYNCEN"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "AUTOFROSEL"}, /* Override automatic OSC selection mechanism , */\
|
||||
{ 0x500, "CGUSYNCDCG"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "FRCCLKSPKR"}, /* Force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x520, "BSTCLKLP"}, /* Boost clock control in low power mode1 , */\
|
||||
{ 0x5c0, "SSFAIME"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "CLKCHKLO"}, /* Clock check low threshold , */\
|
||||
{ 0x787, "CLKCHKHI"}, /* Clock check higher threshold , */\
|
||||
{ 0x802, "AMPOCRT"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0x1000, "VDDS"}, /* POR , */\
|
||||
{ 0x1010, "DCOCPOK"}, /* DCDC OCP nmos (sticky register, clear on read) , */\
|
||||
{ 0x1020, "OTDS"}, /* OTP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1030, "OCDS"}, /* OCP amplifier (sticky register, clear on read) , */\
|
||||
{ 0x1040, "UVDS"}, /* UVP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1050, "MANALARM"}, /* Alarm state , */\
|
||||
{ 0x1060, "CLKS"}, /* Clocks stable , */\
|
||||
{ 0x1070, "MTPB"}, /* MTP busy , */\
|
||||
{ 0x1080, "NOCLK"}, /* Lost clock (sticky register, clear on read) , */\
|
||||
{ 0x10a0, "TDMERR"}, /* TDM error , */\
|
||||
{ 0x1100, "DCIL"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "DCDCA"}, /* DCDC active (sticky register, clear on read) , */\
|
||||
{ 0x1120, "DCDCPC"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "DCHVBAT"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "DCH114"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "DCH107"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "PLLS"}, /* PLL lock , */\
|
||||
{ 0x1180, "TDMLUTER"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "CLKOOR"}, /* External clock status , */\
|
||||
{ 0x11d0, "SWS"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "AMPS"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "AREFS"}, /* References enable , */\
|
||||
{ 0x1300, "OCPOAP"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "OCPOAN"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "OCPOBP"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "OCPOBN"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "OVDS"}, /* OVP alarm , */\
|
||||
{ 0x1390, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "ADCCR"}, /* Control ADC , */\
|
||||
{ 0x13c0, "MANWAIT1"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "MANMUTE"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "MANOPER"}, /* Operating state , */\
|
||||
{ 0x1402, "TDMSTAT"}, /* TDM status bits , */\
|
||||
{ 0x1433, "MANSTATE"}, /* Device manager status , */\
|
||||
{ 0x1473, "AMPSTE"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "DCMODE"}, /* DCDC mode status bits , */\
|
||||
{ 0x14d0, "WAITSYNC"}, /* CGU and PLL synchronisation status flag from CGU , */\
|
||||
{ 0x1509, "BATS"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "TEMPS"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "VDDPS"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "TDME"}, /* Enable interface , */\
|
||||
{ 0x2013, "TDMSLOTS"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "TDMCLINV"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "TDMFSLN"}, /* FS length , */\
|
||||
{ 0x20b0, "TDMFSPOL"}, /* FS polarity , */\
|
||||
{ 0x20c3, "TDMNBCK"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "TDMSLLN"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "TDMBRMG"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "TDMDEL"}, /* Data delay to FS , */\
|
||||
{ 0x21f0, "TDMADJ"}, /* Data adjustment , */\
|
||||
{ 0x2201, "TDMOOMP"}, /* Received audio compression , */\
|
||||
{ 0x2224, "TDMSSIZE"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "TDMTXDFO"}, /* Format unused bits , */\
|
||||
{ 0x2291, "TDMTXUS0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "TDMSPKE"}, /* Control audio TDM channel in 0 , */\
|
||||
{ 0x2310, "TDMDCE"}, /* Control audio TDM channel in 1 , */\
|
||||
{ 0x2330, "TDMCSE"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "TDMVSE"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "TDMSPKS"}, /* TDM slot for sink 0 , */\
|
||||
{ 0x2643, "TDMDCS"}, /* TDM slot for sink 1 , */\
|
||||
{ 0x26c3, "TDMCSS"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "TDMVSS"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "ISTVDDS"}, /* Status POR , */\
|
||||
{ 0x4010, "ISTBSTOC"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "ISTOTDS"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "ISTOCPR"}, /* Status OCP alarm , */\
|
||||
{ 0x4040, "ISTUVDS"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "ISTMANALARM"}, /* Status manager alarm state , */\
|
||||
{ 0x4060, "ISTTDMER"}, /* Status TDM error , */\
|
||||
{ 0x4070, "ISTNOCLK"}, /* Status lost clock , */\
|
||||
{ 0x4400, "ICLVDDS"}, /* Clear POR , */\
|
||||
{ 0x4410, "ICLBSTOC"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "ICLOTDS"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "ICLOCPR"}, /* Clear OCP alarm , */\
|
||||
{ 0x4440, "ICLUVDS"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "ICLMANALARM"}, /* Clear manager alarm state , */\
|
||||
{ 0x4460, "ICLTDMER"}, /* Clear TDM error , */\
|
||||
{ 0x4470, "ICLNOCLK"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "IEVDDS"}, /* Enable POR , */\
|
||||
{ 0x4810, "IEBSTOC"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "IEOTDS"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "IEOCPR"}, /* Enable OCP alarm , */\
|
||||
{ 0x4840, "IEUVDS"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "IEMANALARM"}, /* Enable manager alarm state , */\
|
||||
{ 0x4860, "IETDMER"}, /* Enable TDM error , */\
|
||||
{ 0x4870, "IENOCLK"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "IPOVDDS"}, /* Polarity POR , */\
|
||||
{ 0x4c10, "IPOBSTOC"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "IPOOTDS"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "IPOOCPR"}, /* Polarity OCP alarm , */\
|
||||
{ 0x4c40, "IPOUVDS"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "IPOMANALARM"}, /* Polarity manager alarm state , */\
|
||||
{ 0x4c60, "IPOTDMER"}, /* Polarity TDM error , */\
|
||||
{ 0x4c70, "IPONOCLK"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "BSSCR"}, /* Battery safeguard attack time , */\
|
||||
{ 0x5023, "BSST"}, /* Battery safeguard threshold voltage level , */\
|
||||
{ 0x5061, "BSSRL"}, /* Battery safeguard maximum reduction , */\
|
||||
{ 0x50e0, "BSSR"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "BSSBY"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "BSSS"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "HPFBYP"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "DPSA"}, /* Enable DPSA , */\
|
||||
{ 0x5240, "BYHWCLIP"}, /* Bypass hardware clipper , */\
|
||||
{ 0x5257, "AMPGAIN"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "SLOPEE"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "SLOPESET"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x52f0, "BYPDLYLINE"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x5f63, "TDMSPKG"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x60e1, "IPM"}, /* Idle power mode control , */\
|
||||
{ 0x62e1, "LNMODE"}, /* Ctrl select mode , */\
|
||||
{ 0x64e1, "LPM1MODE"}, /* Low power mode control , */\
|
||||
{ 0x6802, "TDMSRCMAP"}, /* TDM source mapping , */\
|
||||
{ 0x6831, "TDMSRCAS"}, /* Sensed value A , */\
|
||||
{ 0x6851, "TDMSRCBS"}, /* Sensed value B , */\
|
||||
{ 0x6871, "TDMSRCACLIP"}, /* Clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "TDMSRCBCLIP"}, /* Clip information (analog /digital) for source1 , */\
|
||||
{ 0x6e00, "LP0"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "LP1"}, /* Low power mode 1 detection , */\
|
||||
{ 0x6e20, "LA"}, /* Low amplitude detection , */\
|
||||
{ 0x6e30, "VDDPH"}, /* Vddp greater than Vbat , */\
|
||||
{ 0x6f02, "DELCURCOMP"}, /* Delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "SIGCURCOMP"}, /* Polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "ENCURCOMP"}, /* Enable current sense compensation , */\
|
||||
{ 0x6f72, "LVLCLPPWM"}, /* Set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "DCMCC"}, /* Max coil current , */\
|
||||
{ 0x7041, "DCCV"}, /* Slope compensation current, represents LxF (inductance x frequency) , */\
|
||||
{ 0x7060, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "DCSR"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "DCOVL"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "DCDIS"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "DCPWM"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7420, "DCDYFSW"}, /* Disables the dynamic frequency switching due to flag_voutcomp86/93, */\
|
||||
{ 0x7430, "DCTRACK"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "DCTRIP"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "DCHOLD"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "DCINT"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7534, "DCTRIP2"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "DCTRIPT"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "DCTRIPHYSTE"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7620, "ENBSTFLT"}, /* Enable the boost filter , */\
|
||||
{ 0x7635, "DCVOF"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "DCVOS"}, /* Second boost voltage level , */\
|
||||
{ 0xa107, "MTPK"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "KEY1LOCKED"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "KEY2LOCKED"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "MTPADDR"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa50f, "MTPRDMSB"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "MTPRDLSB"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "MTPWRMSB"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "MTPWRLSB"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb108, "EXTTS"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "TROS"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xcd05, "PLLINSI"}, /* PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "PLLINSP"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "PLLINSR"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "PLLBDSEL"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "PLLNDEC"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "PLLMDECM"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "PLLBP"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "PLLDI"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "PLLDO"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "PLLCLKSTB"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "PLLFRM"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "PLLMDECL"}, /* Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "PLLPDEC"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "PLLDCTRL"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "PLLLIMOFF"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "PLLSTRTM"}, /* PLL startup time selection control , */\
|
||||
{ 0xe00f, "SWPROFIL"}, /* Software profile data , */\
|
||||
{ 0xe10f, "SWVSTEP"}, /* Software vstep information , */\
|
||||
{ 0xf000, "MTPOTC"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "MTPEX"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "DCMCCAPI"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "DCMCCSB"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "USERDEF"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "CUSTINFO"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf50f, "R25C"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9873_BITNAMETABLE static tfaBfName_t Tfa9873BitNames[]= {\
|
||||
{ 0x0, "powerdown"}, /* Powerdown selection , */\
|
||||
{ 0x10, "reset"}, /* I2C reset - auto clear , */\
|
||||
{ 0x30, "enbl_amplifier"}, /* Activate amplifier , */\
|
||||
{ 0x40, "enbl_boost"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "int_pad_io"}, /* Interrupt config , */\
|
||||
{ 0x90, "fs_pulse_sel"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "test_ocp"}, /* OCP testing control , */\
|
||||
{ 0xd0, "sel_man_wait_time"}, /* Manager wait time selection control , */\
|
||||
{ 0xe0, "enbl_pll_synchronisation"}, /* Manager control for enabling synchronisation with PLL FS, */\
|
||||
{ 0x101, "vamp_sel1"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "src_set_configured"}, /* I2C configured , */\
|
||||
{ 0x160, "disable_mute_time_out"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "unprotect_faim"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "disable_frcbst"}, /* Disable boost control with FRCBST , */\
|
||||
{ 0x203, "audio_fs"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "input_level"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "cs_frac_delay"}, /* V/I Fractional delay , */\
|
||||
{ 0x30f, "device_rev"}, /* Device revision information , */\
|
||||
{ 0x401, "pll_clkin_sel"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "pll_clkin_sel_osc"}, /* PLL internal ref clock , */\
|
||||
{ 0x460, "enbl_osc_auto_off"}, /* Internal osc off in power down mode , */\
|
||||
{ 0x480, "enbl_fs_sync"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "enbl_clkref_sync"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "override_auto_sel_osc"}, /* Override automatic OSC selection mechanism , */\
|
||||
{ 0x500, "disable_cgu_sync_cgate"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "force_spkr_clk"}, /* Force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x520, "ctrl_bst_clk_lp1"}, /* Boost clock control in low power mode1 , */\
|
||||
{ 0x5c0, "enbl_faim_ss"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "clkchk_th_lo"}, /* Clock check low threshold , */\
|
||||
{ 0x787, "clkchk_th_hi"}, /* Clock check higher threshold , */\
|
||||
{ 0x802, "ctrl_on2off_criterion"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0xe07, "ctrl_digtoana"}, /* Spare control from digital to analog , */\
|
||||
{ 0xf0f, "hidden_code"}, /* 5A6Bh, 23147d to access registers (default for engineering), */\
|
||||
{ 0x1000, "flag_por"}, /* POR , */\
|
||||
{ 0x1010, "flag_bst_ocpok"}, /* DCDC OCP nmos (sticky register, clear on read) , */\
|
||||
{ 0x1020, "flag_otpok"}, /* OTP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1030, "flag_ocp_alarm"}, /* OCP amplifier (sticky register, clear on read) , */\
|
||||
{ 0x1040, "flag_uvpok"}, /* UVP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1050, "flag_man_alarm_state"}, /* Alarm state , */\
|
||||
{ 0x1060, "flag_clocks_stable"}, /* Clocks stable , */\
|
||||
{ 0x1070, "flag_mtp_busy"}, /* MTP busy , */\
|
||||
{ 0x1080, "flag_lost_clk"}, /* Lost clock (sticky register, clear on read) , */\
|
||||
{ 0x10a0, "flag_tdm_error"}, /* TDM error , */\
|
||||
{ 0x1100, "flag_bst_bstcur"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "flag_bst_hiz"}, /* DCDC active (sticky register, clear on read) , */\
|
||||
{ 0x1120, "flag_bst_peakcur"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "flag_bst_voutcomp"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "flag_bst_voutcomp86"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "flag_bst_voutcomp93"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "flag_pll_lock"}, /* PLL lock , */\
|
||||
{ 0x1180, "flag_tdm_lut_error"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "flag_clk_out_of_range"}, /* External clock status , */\
|
||||
{ 0x11d0, "flag_engage"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "flag_enbl_amp"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "flag_enbl_ref"}, /* References enable , */\
|
||||
{ 0x1300, "flag_ocpokap"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "flag_ocpokan"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "flag_ocpokbp"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "flag_ocpokbn"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "flag_ovpok"}, /* OVP alarm , */\
|
||||
{ 0x1390, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "flag_adc10_ready"}, /* Control ADC , */\
|
||||
{ 0x13c0, "flag_man_wait_src_settings"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "flag_man_start_mute_audio"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "flag_man_operating_state"}, /* Operating state , */\
|
||||
{ 0x1402, "flag_tdm_status"}, /* TDM status bits , */\
|
||||
{ 0x1433, "man_state"}, /* Device manager status , */\
|
||||
{ 0x1473, "amp_ctrl_state"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "status_bst_mode"}, /* DCDC mode status bits , */\
|
||||
{ 0x14d0, "flag_waiting_for_sync"}, /* CGU and PLL synchronisation status flag from CGU , */\
|
||||
{ 0x1509, "bat_adc"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "temp_adc"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "vddp_adc"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "tdm_enable"}, /* Enable interface , */\
|
||||
{ 0x2013, "tdm_nb_of_slots"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "tdm_clk_inversion"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "tdm_fs_ws_length"}, /* FS length , */\
|
||||
{ 0x20b0, "tdm_fs_ws_polarity"}, /* FS polarity , */\
|
||||
{ 0x20c3, "tdm_nbck"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "tdm_slot_length"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "tdm_bits_remaining"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "tdm_data_delay"}, /* Data delay to FS , */\
|
||||
{ 0x21f0, "tdm_data_adjustment"}, /* Data adjustment , */\
|
||||
{ 0x2201, "tdm_audio_sample_compression"}, /* Received audio compression , */\
|
||||
{ 0x2224, "tdm_sample_size"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "tdm_txdata_format"}, /* Format unused bits , */\
|
||||
{ 0x2291, "tdm_txdata_format_unused_slot_sd0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "tdm_sink0_enable"}, /* Control audio TDM channel in 0 , */\
|
||||
{ 0x2310, "tdm_sink1_enable"}, /* Control audio TDM channel in 1 , */\
|
||||
{ 0x2330, "tdm_source0_enable"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "tdm_source1_enable"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "tdm_sink0_slot"}, /* TDM slot for sink 0 , */\
|
||||
{ 0x2643, "tdm_sink1_slot"}, /* TDM slot for sink 1 , */\
|
||||
{ 0x26c3, "tdm_source0_slot"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "tdm_source1_slot"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "int_out_flag_por"}, /* Status POR , */\
|
||||
{ 0x4010, "int_out_flag_bst_ocpok"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "int_out_flag_otpok"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "int_out_flag_ocp_alarm"}, /* Status OCP alarm , */\
|
||||
{ 0x4040, "int_out_flag_uvpok"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "int_out_flag_man_alarm_state"}, /* Status manager alarm state , */\
|
||||
{ 0x4060, "int_out_flag_tdm_error"}, /* Status TDM error , */\
|
||||
{ 0x4070, "int_out_flag_lost_clk"}, /* Status lost clock , */\
|
||||
{ 0x4400, "int_in_flag_por"}, /* Clear POR , */\
|
||||
{ 0x4410, "int_in_flag_bst_ocpok"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "int_in_flag_otpok"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "int_in_flag_ocp_alarm"}, /* Clear OCP alarm , */\
|
||||
{ 0x4440, "int_in_flag_uvpok"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "int_in_flag_man_alarm_state"}, /* Clear manager alarm state , */\
|
||||
{ 0x4460, "int_in_flag_tdm_error"}, /* Clear TDM error , */\
|
||||
{ 0x4470, "int_in_flag_lost_clk"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "int_enable_flag_por"}, /* Enable POR , */\
|
||||
{ 0x4810, "int_enable_flag_bst_ocpok"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "int_enable_flag_otpok"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "int_enable_flag_ocp_alarm"}, /* Enable OCP alarm , */\
|
||||
{ 0x4840, "int_enable_flag_uvpok"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "int_enable_flag_man_alarm_state"}, /* Enable manager alarm state , */\
|
||||
{ 0x4860, "int_enable_flag_tdm_error"}, /* Enable TDM error , */\
|
||||
{ 0x4870, "int_enable_flag_lost_clk"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "int_polarity_flag_por"}, /* Polarity POR , */\
|
||||
{ 0x4c10, "int_polarity_flag_bst_ocpok"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "int_polarity_flag_otpok"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "int_polarity_flag_ocp_alarm"}, /* Polarity OCP alarm , */\
|
||||
{ 0x4c40, "int_polarity_flag_uvpok"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "int_polarity_flag_man_alarm_state"}, /* Polarity manager alarm state , */\
|
||||
{ 0x4c60, "int_polarity_flag_tdm_error"}, /* Polarity TDM error , */\
|
||||
{ 0x4c70, "int_polarity_flag_lost_clk"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "vbat_prot_attack_time"}, /* Battery safeguard attack time , */\
|
||||
{ 0x5023, "vbat_prot_thlevel"}, /* Battery safeguard threshold voltage level , */\
|
||||
{ 0x5061, "vbat_prot_max_reduct"}, /* Battery safeguard maximum reduction , */\
|
||||
{ 0x50d0, "rst_min_vbat"}, /* Reset clipper - auto clear , */\
|
||||
{ 0x50e0, "sel_vbat"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "bypass_clipper"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "batsense_steepness"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "bypass_hp"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "enbl_dpsa"}, /* Enable DPSA , */\
|
||||
{ 0x5240, "bypasshwclip"}, /* Bypass hardware clipper , */\
|
||||
{ 0x5257, "gain"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "ctrl_slopectrl"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "ctrl_slope"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x52f0, "bypass_dly_line"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x5301, "dpsa_level"}, /* DPSA threshold levels , */\
|
||||
{ 0x5321, "dpsa_release"}, /* DPSA release time , */\
|
||||
{ 0x5350, "bypass_lp"}, /* Bypass the low pass filter inside temperature sensor, */\
|
||||
{ 0x5430, "icomp_engage"}, /* Engage of icomp , */\
|
||||
{ 0x5440, "ctrl_kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x5450, "icomp_engage_overrule"}, /* To overrule the functional icomp_engage signal during validation, */\
|
||||
{ 0x5463, "ctrl_dem"}, /* Enable DEM icomp and DEM one bit DAC , */\
|
||||
{ 0x5500, "bypass_ctrlloop"}, /* Switch amplifier into open loop configuration , */\
|
||||
{ 0x5513, "ctrl_dem_mismatch"}, /* Enable DEM icomp mismatch for testing , */\
|
||||
{ 0x5552, "dpsa_drive"}, /* Drive setting (binary coded) , */\
|
||||
{ 0x5581, "ctrlloop_vstress_select"}, /* GO2 capacitor stress selector for control loop , */\
|
||||
{ 0x5600, "ref_iref_enbl"}, /* Enable of reference current for OCP , */\
|
||||
{ 0x5631, "ref_irefdist_set_ctrl"}, /* Scaling of reference current for OCP , */\
|
||||
{ 0x5652, "ref_irefdist_test_enbl"}, /* Enable of test-function of distribution of reference current, used for OCP. When enabled, the current will to to anamux iso powerstages. Using e.g. 011 it will add the current of powerstage P and N., */\
|
||||
{ 0x570a, "enbl_amp"}, /* Switch on the class-D power sections, each part of the analog sections can be switched on/off individually, */\
|
||||
{ 0x57b0, "enbl_engage"}, /* Enables/engage the control stage , */\
|
||||
{ 0x57c0, "enbl_engage_pst"}, /* Enables/engage the power stage , */\
|
||||
{ 0x5810, "hard_mute"}, /* Hard mute - PWM , */\
|
||||
{ 0x5844, "pwm_delay"}, /* PWM delay bits to set the delay, clock PWM is 1/(K*2048*fs), */\
|
||||
{ 0x5890, "reclock_pwm"}, /* Reclock the PWM signal inside analog , */\
|
||||
{ 0x58c0, "enbl_pwm_phase_shift"}, /* Control for PWM phase shift , */\
|
||||
{ 0x5900, "sel_pwm_freq"}, /* Control for selection for PWM switching frequency , */\
|
||||
{ 0x5910, "sel_pwm_delay_src"}, /* Control for selection for PWM delay line source , */\
|
||||
{ 0x5f63, "ctrl_attr"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x6005, "idle_power_cal_offset"}, /* Idle power mode detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6065, "idle_power_zero_lvl"}, /* IIdle power mode zero crossing detection level , */\
|
||||
{ 0x60e1, "idle_power_mode"}, /* Idle power mode control , */\
|
||||
{ 0x6105, "idle_power_threshold_lvl"}, /* Idle power mode amplitude trigger level , */\
|
||||
{ 0x6165, "idle_power_hold_time"}, /* Idle power mode detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x61c0, "disable_idle_power_mode"}, /* Idle power mode detector control , */\
|
||||
{ 0x6265, "zero_lvl"}, /* Low noise gain switch zero trigger level , */\
|
||||
{ 0x62c1, "ctrl_fb_resistor"}, /* Select amplifier feedback resistor connection , */\
|
||||
{ 0x62e1, "lownoisegain_mode"}, /* Ctrl select mode , */\
|
||||
{ 0x6305, "threshold_lvl"}, /* Low noise gain switch trigger level , */\
|
||||
{ 0x6365, "hold_time"}, /* Low noise gain switch ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x6405, "lpm1_cal_offset"}, /* Low power mode1 detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6465, "lpm1_zero_lvl"}, /* Low power mode1 zero crossing detection level , */\
|
||||
{ 0x64e1, "lpm1_mode"}, /* Low power mode control , */\
|
||||
{ 0x6505, "lpm1_threshold_lvl"}, /* Low power mode1 amplitude trigger level , */\
|
||||
{ 0x6565, "lpm1_hold_time"}, /* Low power mode1 detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x65c0, "disable_low_power_mode"}, /* Low power mode1 detector control , */\
|
||||
{ 0x6611, "dcdc_ctrl_maxzercnt"}, /* DCDC Number of zero current flags to count before going to PFM mode, */\
|
||||
{ 0x6631, "pfm2pwm_cnt_max"}, /* Number of pulses in PFM mode before going to PWM mode, */\
|
||||
{ 0x6656, "dcdc_vbat_delta_detect"}, /* Threshold before booster is reacting on a delta Vbat (in PFM mode) by temporarily switching to PWM mode, */\
|
||||
{ 0x66c0, "dcdc_ignore_vbat"}, /* Ignore an increase on Vbat , */\
|
||||
{ 0x66d2, "pfmfreq_limit"}, /* Lowest PFM frequency limit , */\
|
||||
{ 0x6700, "enbl_minion"}, /* Enables minion (small) power stage , */\
|
||||
{ 0x6713, "vth_vddpvbat"}, /* Select vddp-vbat threshold signal , */\
|
||||
{ 0x6750, "lpen_vddpvbat"}, /* Select vddp-vbat filtred vs unfiltered compare , */\
|
||||
{ 0x6761, "ctrl_rfb"}, /* Feedback resistor selection - I2C direct mode , */\
|
||||
{ 0x6802, "tdm_source_mapping"}, /* TDM source mapping , */\
|
||||
{ 0x6831, "tdm_sourcea_frame_sel"}, /* Sensed value A , */\
|
||||
{ 0x6851, "tdm_sourceb_frame_sel"}, /* Sensed value B , */\
|
||||
{ 0x6871, "tdm_source0_clip_sel"}, /* Clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "tdm_source1_clip_sel"}, /* Clip information (analog /digital) for source1 , */\
|
||||
{ 0x6a02, "rst_min_vbat_delay"}, /* rst_min_vbat delay (nb fs) , */\
|
||||
{ 0x6b00, "disable_auto_engage"}, /* Disable auto engange , */\
|
||||
{ 0x6b10, "disable_engage"}, /* Disable engange , */\
|
||||
{ 0x6c02, "ns_hp2ln_criterion"}, /* 0..7 zeroes at ns as threshold to swap from high_power to low_noise, */\
|
||||
{ 0x6c32, "ns_ln2hp_criterion"}, /* 0..7 zeroes at ns as threshold to swap from low_noise to high_power, */\
|
||||
{ 0x6c69, "spare_out"}, /* spare_out , */\
|
||||
{ 0x6d0f, "spare_in"}, /* spare_in , */\
|
||||
{ 0x6e00, "flag_idle_power_mode"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "flag_lp_detect_mode1"}, /* Low power mode 1 detection , */\
|
||||
{ 0x6e20, "flag_low_amplitude"}, /* Low amplitude detection , */\
|
||||
{ 0x6e30, "flag_vddp_gt_vbat"}, /* Vddp greater than Vbat , */\
|
||||
{ 0x6f02, "cursense_comp_delay"}, /* Delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "cursense_comp_sign"}, /* Polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "enbl_cursense_comp"}, /* Enable current sense compensation , */\
|
||||
{ 0x6f72, "pwms_clip_lvl"}, /* Set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "boost_cur"}, /* Max coil current , */\
|
||||
{ 0x7041, "bst_slpcmplvl"}, /* Slope compensation current, represents LxF (inductance x frequency) , */\
|
||||
{ 0x7060, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "boost_speed"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "overshoot_correction_lvl"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "dcdcoff_mode"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "dcdc_pwmonly"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7104, "bst_drive"}, /* Binary coded drive setting for boost converter power stage, */\
|
||||
{ 0x7151, "bst_scalecur"}, /* For testing direct control scale current , */\
|
||||
{ 0x7174, "bst_slopecur"}, /* For testing direct control slope current , */\
|
||||
{ 0x71c1, "bst_slope"}, /* Boost slope speed , */\
|
||||
{ 0x71e0, "bst_bypass_bstcur"}, /* Bypass control for boost current settings , */\
|
||||
{ 0x71f0, "bst_bypass_bstfoldback"}, /* Bypass control for boost foldback , */\
|
||||
{ 0x7200, "enbl_bst_engage"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x7210, "enbl_bst_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x7220, "enbl_bst_peak2avg"}, /* Enable boost peak2avg functionality , */\
|
||||
{ 0x7230, "enbl_bst_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x7240, "enbl_bst_power"}, /* Enable line of the powerstage , */\
|
||||
{ 0x7250, "enbl_bst_slopecur"}, /* Enable bit of max-current DAC , */\
|
||||
{ 0x7260, "enbl_bst_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x7270, "enbl_bst_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x7280, "enbl_bst_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x7290, "enbl_bst_windac"}, /* Enable window DAC , */\
|
||||
{ 0x72a5, "bst_windac"}, /* For testing direct control windac , */\
|
||||
{ 0x7300, "boost_alg"}, /* Control for boost adaptive loop gain , */\
|
||||
{ 0x7311, "boost_loopgain"}, /* DCDC boost loopgain setting , */\
|
||||
{ 0x7331, "bst_freq"}, /* DCDC boost frequency control , */\
|
||||
{ 0x7350, "disable_artf654484_fix"}, /* Disables the fix for artf654484 (loss of efficiency when Vbst is close to Vbat), */\
|
||||
{ 0x7420, "disable_dynamic_freq"}, /* Disables the dynamic frequency switching due to flag_voutcomp86/93, */\
|
||||
{ 0x7430, "boost_track"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "boost_trip_lvl_1st"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "boost_hold_time"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "sel_dcdc_envelope_8fs"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74f0, "ignore_flag_voutcomp86"}, /* Determines the maximum PWM frequency be the most efficient in relation to the Booster inductor value, */\
|
||||
{ 0x7534, "boost_trip_lvl_2nd"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "boost_trip_lvl_track"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "enbl_trip_hyst"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7620, "enbl_bst_filter"}, /* Enable the boost filter , */\
|
||||
{ 0x7635, "frst_boost_voltage"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "scnd_boost_voltage"}, /* Second boost voltage level , */\
|
||||
{ 0x8050, "cs_gain_control"}, /* Current sense gain control , */\
|
||||
{ 0x8060, "cs_bypass_gc"}, /* Bypasses the CS gain correction , */\
|
||||
{ 0x8087, "cs_gain"}, /* Current sense gain , */\
|
||||
{ 0x8210, "invertpwm"}, /* Current sense common mode feedback pwm invert control, */\
|
||||
{ 0x8305, "cs_ktemp"}, /* Current sense temperature compensation trimming (1 - VALUE*TEMP)*signal, */\
|
||||
{ 0x8364, "cs_ktemp2"}, /* Second order temperature compensation coefficient , */\
|
||||
{ 0x8400, "cs_adc_bsoinv"}, /* Bitstream inversion for current sense ADC , */\
|
||||
{ 0x8440, "cs_adc_nortz"}, /* Return to zero for current sense ADC , */\
|
||||
{ 0x8490, "cs_adc_slowdel"}, /* Select delay for current sense ADC (internal decision circuitry), */\
|
||||
{ 0x8510, "cs_classd_tran_skip"}, /* Skip current sense connection during a classD amplifier transition, */\
|
||||
{ 0x8530, "cs_inn_short"}, /* Short current sense negative to common mode , */\
|
||||
{ 0x8540, "cs_inp_short"}, /* Short current sense positive to common mode , */\
|
||||
{ 0x8550, "cs_ldo_bypass"}, /* Bypass current sense LDO , */\
|
||||
{ 0x8560, "cs_ldo_pulldown"}, /* Pull down current sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8574, "cs_ldo_voset"}, /* Current sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8700, "enbl_cs_adc"}, /* Enable current sense ADC , */\
|
||||
{ 0x8710, "enbl_cs_inn1"}, /* Enable connection of current sense negative1 , */\
|
||||
{ 0x8720, "enbl_cs_inn2"}, /* Enable connection of current sense negative2 , */\
|
||||
{ 0x8730, "enbl_cs_inp1"}, /* Enable connection of current sense positive1 , */\
|
||||
{ 0x8740, "enbl_cs_inp2"}, /* Enable connection of current sense positive2 , */\
|
||||
{ 0x8750, "enbl_cs_ldo"}, /* Enable current sense LDO , */\
|
||||
{ 0x8780, "enbl_cs_vbatldo"}, /* Enable of current sense LDO , */\
|
||||
{ 0x8790, "enbl_dc_filter"}, /* Control for enabling the DC blocking filter for voltage and current sense, */\
|
||||
{ 0x8850, "vs_gain_control"}, /* Voltage sense gain control , */\
|
||||
{ 0x8860, "vs_bypass_gc"}, /* Bypasses the VS gain correction , */\
|
||||
{ 0x8887, "vs_gain"}, /* Voltage sense gain , */\
|
||||
{ 0x8c00, "vs_adc_bsoinv"}, /* Bitstream inversion for voltage sense ADC , */\
|
||||
{ 0x8c40, "vs_adc_nortz"}, /* Return to zero for voltage sense ADC , */\
|
||||
{ 0x8c90, "vs_adc_slowdel"}, /* Select delay for voltage sense ADC (internal decision circuitry), */\
|
||||
{ 0x8d30, "vs_inn_short"}, /* Short voltage sense negative to common mode , */\
|
||||
{ 0x8d40, "vs_inp_short"}, /* Short voltage sense positive to common mode , */\
|
||||
{ 0x8d50, "vs_ldo_bypass"}, /* Bypass voltage sense LDO , */\
|
||||
{ 0x8d60, "vs_ldo_pulldown"}, /* Pull down voltage sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8d74, "vs_ldo_voset"}, /* Voltage sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8f00, "enbl_vs_adc"}, /* Enable voltage sense ADC (Direct Control only only others done by manager), */\
|
||||
{ 0x8f10, "enbl_vs_inn1"}, /* Enable connection of voltage sense negative1 , */\
|
||||
{ 0x8f20, "enbl_vs_inn2"}, /* Enable connection of voltage sense negative2 , */\
|
||||
{ 0x8f30, "enbl_vs_inp1"}, /* Enable connection of voltage sense positive1 , */\
|
||||
{ 0x8f40, "enbl_vs_inp2"}, /* Enable connection of voltage sense positive2 , */\
|
||||
{ 0x8f50, "enbl_vs_ldo"}, /* Enable voltage sense LDO (Direct Control only only others done by manager), */\
|
||||
{ 0x8f80, "enbl_vs_vbatldo"}, /* Enable of voltage sense LDO (Direct Control only others done by manager), */\
|
||||
{ 0xa007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_protected registers (default for engineering), */\
|
||||
{ 0xa107, "mtpkey2"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "key01_locked"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "key02_locked"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "mtp_man_address_in"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa330, "man_copy_mtp_to_iic"}, /* Start copying single word from mtp to I2C mtp register, */\
|
||||
{ 0xa340, "man_copy_iic_to_mtp"}, /* Start copying single word from I2C mtp register to mtp, */\
|
||||
{ 0xa350, "auto_copy_mtp_to_iic"}, /* Start copying all the data from mtp to I2C mtp registers, */\
|
||||
{ 0xa360, "auto_copy_iic_to_mtp"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0xa400, "faim_set_clkws"}, /* Sets the faim controller clock wait state register, */\
|
||||
{ 0xa410, "faim_sel_evenrows"}, /* All even rows of the faim are selected, active high, */\
|
||||
{ 0xa420, "faim_sel_oddrows"}, /* All odd rows of the faim are selected, all rows in combination with sel_evenrows, */\
|
||||
{ 0xa430, "faim_program_only"}, /* Skip the erase access at wr_faim command (write-program-marginread), */\
|
||||
{ 0xa440, "faim_erase_only"}, /* Skip the program access at wr_faim command (write-erase-marginread), */\
|
||||
{ 0xa50f, "mtp_man_data_out_msb"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "mtp_man_data_out_lsb"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "mtp_man_data_in_msb"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "mtp_man_data_in_lsb"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb010, "bypass_ocpcounter"}, /* Bypass OCP Counter , */\
|
||||
{ 0xb020, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0xb030, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0xb040, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0xb050, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0xb060, "bypass_lost_clk"}, /* Bypass lost clock detector , */\
|
||||
{ 0xb070, "ctrl_vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0xb087, "ocp_threshold"}, /* OCP threshold level , */\
|
||||
{ 0xb108, "ext_temp"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "ext_temp_sel"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xb200, "bypass_ovpglitchfilter"}, /* Bypass glitch filter on over voltage protection signal from analog, */\
|
||||
{ 0xb210, "enbl_ovp_alarm_state"}, /* Allow manager to go into alarm state when OVP (only when ctrl_vpalarm is 0), */\
|
||||
{ 0xb220, "amp_in_tristate_when_ovp"}, /* Brings amplifier in tristate when OVP (only when ctrl_enbl_ovp_alarm_state is 0) , */\
|
||||
{ 0xc000, "use_direct_ctrls"}, /* Direct control to overrule several functions for testing, */\
|
||||
{ 0xc010, "rst_datapath"}, /* Direct control for datapath reset , */\
|
||||
{ 0xc020, "rst_cgu"}, /* Direct control for cgu reset , */\
|
||||
{ 0xc038, "enbl_ref"}, /* Switch on the analog references, each part of the references can be switched on/off individually, */\
|
||||
{ 0xc0c0, "use_direct_vs_ctrls"}, /* Voltage sense direct control to overrule several functions for testing, */\
|
||||
{ 0xc0d0, "enbl_ringo"}, /* Enable the ring oscillator for test purpose , */\
|
||||
{ 0xc0e0, "enbl_pll"}, /* Enables PLL in I2C direct control mode only , */\
|
||||
{ 0xc0f0, "enbl_fro"}, /* Enables FRO8M in I2C direct control mode only , */\
|
||||
{ 0xc100, "enbl_tsense"}, /* Temperature sensor enable control - I2C direct mode, */\
|
||||
{ 0xc110, "tsense_hibias"}, /* Bit to set the biasing in temp sensor to high , */\
|
||||
{ 0xc120, "enbl_flag_vbg"}, /* Enable flagging of bandgap out of control , */\
|
||||
{ 0xc20f, "abist_offset"}, /* Offset control for ABIST testing (two's complement), */\
|
||||
{ 0xc300, "bypasslatch"}, /* Bypass latch , */\
|
||||
{ 0xc311, "sourcea"}, /* Set OUTA to , */\
|
||||
{ 0xc331, "sourceb"}, /* Set OUTB to , */\
|
||||
{ 0xc350, "inverta"}, /* Invert pwma test signal , */\
|
||||
{ 0xc360, "invertb"}, /* Invert pwmb test signal , */\
|
||||
{ 0xc376, "pulselength"}, /* Pulse length setting test input for amplifier (PWM clock 2048/4096 Fs), */\
|
||||
{ 0xc3e0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0xc400, "bst_bypasslatch"}, /* Bypass latch in boost converter , */\
|
||||
{ 0xc411, "bst_source"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0xc430, "bst_invertb"}, /* Invert PWMbst test signal , */\
|
||||
{ 0xc444, "bst_pulselength"}, /* Pulse length setting test input for boost converter , */\
|
||||
{ 0xc490, "test_bst_ctrlsthv"}, /* Test mode for boost control stage , */\
|
||||
{ 0xc4a0, "test_bst_iddq"}, /* IDDQ testing in power stage of boost converter , */\
|
||||
{ 0xc4b0, "test_bst_rdson"}, /* RDSON testing - boost power stage , */\
|
||||
{ 0xc4c0, "test_bst_cvi"}, /* CVI testing - boost power stage , */\
|
||||
{ 0xc4d0, "test_bst_ocp"}, /* Boost OCP. For old OCP (ctrl_reversebst is 0), For new OCP (ctrl_reversebst is 1), */\
|
||||
{ 0xc4e0, "test_bst_sense"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0xc500, "test_cvi"}, /* Analog BIST, switch choose which transistor will be used as current source (also cross coupled sources possible), */\
|
||||
{ 0xc510, "test_discrete"}, /* Test function noise measurement , */\
|
||||
{ 0xc520, "test_iddq"}, /* Set the power stages in iddq mode for gate stress., */\
|
||||
{ 0xc540, "test_rdson"}, /* Analog BIST, switch to enable Rdson measurement , */\
|
||||
{ 0xc550, "test_sdelta"}, /* Analog BIST, noise test , */\
|
||||
{ 0xc570, "test_enbl_cs"}, /* Enable for digimux mode of current sense , */\
|
||||
{ 0xc580, "test_enbl_vs"}, /* Enable for digimux mode of voltage sense , */\
|
||||
{ 0xc600, "enbl_pwm_dcc"}, /* Enables direct control of pwm duty cycle for DCDC power stage, */\
|
||||
{ 0xc613, "pwm_dcc_cnt"}, /* Control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0xc650, "enbl_ldo_stress"}, /* Enable stress of internal supply voltages powerstages, */\
|
||||
{ 0xc707, "digimuxa_sel"}, /* DigimuxA input selection control routed to DATAO (see Digimux list for details), */\
|
||||
{ 0xc787, "digimuxb_sel"}, /* DigimuxB input selection control routed to INT (see Digimux list for details), */\
|
||||
{ 0xc807, "digimuxc_sel"}, /* DigimuxC input selection control routed to ADS1 (see Digimux list for details), */\
|
||||
{ 0xc981, "int_ehs"}, /* Speed/load setting for INT IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xc9c0, "hs_mode"}, /* I2C high speed mode control , */\
|
||||
{ 0xca00, "enbl_anamux1"}, /* Enable anamux1 , */\
|
||||
{ 0xca10, "enbl_anamux2"}, /* Enable anamux2 , */\
|
||||
{ 0xca20, "enbl_anamux3"}, /* Enable anamux3 , */\
|
||||
{ 0xca30, "enbl_anamux4"}, /* Enable anamux4 , */\
|
||||
{ 0xca74, "anamux1"}, /* Anamux selection control - anamux on TEST1 , */\
|
||||
{ 0xcb04, "anamux2"}, /* Anamux selection control - anamux on TEST2 , */\
|
||||
{ 0xcb53, "anamux3"}, /* Anamux selection control - anamux on VSN/TEST3 , */\
|
||||
{ 0xcba3, "anamux4"}, /* Anamux selection control - anamux on VSP/TEST4 , */\
|
||||
{ 0xcd05, "pll_inseli"}, /* PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "pll_inselp"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "pll_inselr"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "pll_bandsel"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "pll_ndec"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "pll_mdec_msb"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "pll_bypass"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "pll_directi"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "pll_directo"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "pll_frm_clockstable"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "pll_frm"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "pll_mdec_lsb"}, /* Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "pll_pdec"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "use_direct_pll_ctrl"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "pll_limup_off"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "sel_pll_startup_time"}, /* PLL startup time selection control , */\
|
||||
{ 0xd10f, "tsig_freq_lsb"}, /* Internal sinus test generator frequency control , */\
|
||||
{ 0xd202, "tsig_freq_msb"}, /* Internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0xd230, "inject_tsig"}, /* Control bit to switch to internal sinus test generator, */\
|
||||
{ 0xd283, "tsig_gain"}, /* Test signal gain , */\
|
||||
{ 0xd300, "adc10_reset"}, /* Reset for ADC10 - I2C direct control mode , */\
|
||||
{ 0xd311, "adc10_test"}, /* Test mode selection signal for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd332, "adc10_sel"}, /* Select the input to convert for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd364, "adc10_prog_sample"}, /* ADC10 program sample setting - I2C direct control mode, */\
|
||||
{ 0xd3b0, "adc10_enbl"}, /* Enable ADC10 - I2C direct control mode , */\
|
||||
{ 0xd3c0, "bypass_lp_vbat"}, /* Bypass control for Low pass filter in batt sensor , */\
|
||||
{ 0xd409, "data_adc10_tempbat"}, /* ADC 10 data output data for testing , */\
|
||||
{ 0xd507, "ctrl_digtoana_hidden"}, /* Spare digital to analog control bits - Hidden , */\
|
||||
{ 0xd580, "enbl_clk_out_of_range"}, /* Clock out of range , */\
|
||||
{ 0xd721, "datao_ehs"}, /* Speed/load setting for DATAO IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xd740, "bck_ehs"}, /* High-speed and standard/fast mode selection for BCK IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd750, "datai_ehs"}, /* High-speed and standard/fast mode selection for DATAI IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd800, "source_in_testmode"}, /* TDM source in test mode (return only current and voltage sense), */\
|
||||
{ 0xd810, "gainatt_tdm_feedback"}, /* GainAtt feedback to TDM , */\
|
||||
{ 0xd822, "test_parametric_io"}, /* Test io parametric , */\
|
||||
{ 0xd861, "test_spare_out1"}, /* Test spare out 1 , */\
|
||||
{ 0xd880, "bst_dcmbst"}, /* DCM boost , */\
|
||||
{ 0xd890, "railclamp_disable"}, /* ESD rail clamp control, controls amp and boost rail clamp for ESD, */\
|
||||
{ 0xd8c3, "test_spare_out2"}, /* Test spare out 1 , */\
|
||||
{ 0xd900, "enbl_frocal"}, /* Enable FRO calibration , */\
|
||||
{ 0xd910, "start_fro_calibration"}, /* Start FRO8 Calibration , */\
|
||||
{ 0xd920, "enbl_irefcal"}, /* Enable IREF calibration , */\
|
||||
{ 0xd930, "start_iref_calibration"}, /* Start IREF Calibration , */\
|
||||
{ 0xda00, "fro_calibration_done"}, /* FRO8 Calibration done - Read Only , */\
|
||||
{ 0xda15, "fro_auto_trim_val"}, /* Calibration value from auto calibration, to be written into MTP - Read Only, */\
|
||||
{ 0xda80, "iref_calibration_done"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xda94, "iref_auto_trim_val"}, /* Calibration value from auto calibration, to be written into MTP - Read Only, */\
|
||||
{ 0xdae0, "iref_calibration_error"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xe00f, "sw_profile"}, /* Software profile data , */\
|
||||
{ 0xe10f, "sw_vstep"}, /* Software vstep information , */\
|
||||
{ 0xf000, "calibration_onetime"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "calibr_ron_done"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "calibr_dcdc_api_calibrate"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "calibr_dcdc_delta_sign"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "calibr_dcdc_delta"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "calibr_speaker_info"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf105, "calibr_vout_offset"}, /* DCDC offset calibration 2's complement (key1 protected), */\
|
||||
{ 0xf203, "calibr_gain"}, /* HW gain module (2's complement) , */\
|
||||
{ 0xf245, "calibr_offset"}, /* Offset for amplifier, HW gain module (2's complement), */\
|
||||
{ 0xf307, "calibr_gain_vs1"}, /* Voltage sense gain when external voltage sensing input is selected, */\
|
||||
{ 0xf387, "calibr_gain_vs2"}, /* Voltage sense gain when internal voltage sensing input is selected, */\
|
||||
{ 0xf407, "vs_trim1"}, /* VS Trimming when external voltage sensing input is selected, */\
|
||||
{ 0xf487, "vs_trim2"}, /* VS Trimming when internal voltage sensing input is selected, */\
|
||||
{ 0xf50f, "calibr_R25C_R"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xf607, "calibr_gain_cs"}, /* Current sense gain (signed two's complement format), */\
|
||||
{ 0xf706, "ctrl_offset_a"}, /* Offset of level shifter A , */\
|
||||
{ 0xf786, "ctrl_offset_b"}, /* Offset of amplifier level shifter B , */\
|
||||
{ 0xf806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0xf870, "htol_iic_addr_en"}, /* HTOL I2C address enable control , */\
|
||||
{ 0xf884, "calibr_temp_offset"}, /* Temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0xf8d2, "calibr_temp_gain"}, /* Temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0xf900, "mtp_lock_dcdcoff_mode"}, /* Disable function dcdcoff_mode , */\
|
||||
{ 0xf920, "mtp_lock_bypass_clipper"}, /* Disable function bypass_clipper , */\
|
||||
{ 0xf930, "mtp_lock_max_dcdc_voltage"}, /* Force Boost in follower mode , */\
|
||||
{ 0xf943, "calibr_vbg_trim"}, /* Bandgap trimming control , */\
|
||||
{ 0xf990, "mtp_enbl_pwm_delay_clock_gating"}, /* PWM delay clock auto gating , */\
|
||||
{ 0xf9a0, "mtp_enbl_ocp_clock_gating"}, /* OCP clock auto gating , */\
|
||||
{ 0xfa0f, "mtpdataA"}, /* MTPdataA (key1 protected) , */\
|
||||
{ 0xfb0f, "mtpdataB"}, /* MTPdataB (key1 protected) , */\
|
||||
{ 0xfc0f, "mtpdataC"}, /* MTPdataC (key1 protected) , */\
|
||||
{ 0xfd0f, "mtpdataD"}, /* MTPdataD (key1 protected) , */\
|
||||
{ 0xfe0f, "mtpdataE"}, /* MTPdataE (key1 protected) , */\
|
||||
{ 0xff05, "fro_trim"}, /* 8 MHz oscillator trim code , */\
|
||||
{ 0xff61, "fro_shortnwell"}, /* Short 4 or 6 n-well resistors , */\
|
||||
{ 0xff81, "fro_boost"}, /* Self bias current selection , */\
|
||||
{ 0xffa4, "calibr_iref_trim"}, /* Trimming control of reference current for OCP , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
enum tfa9873_irq {
|
||||
tfa9873_irq_stvdds = 0,
|
||||
tfa9873_irq_stbstoc = 1,
|
||||
tfa9873_irq_stotds = 2,
|
||||
tfa9873_irq_stocpr = 3,
|
||||
tfa9873_irq_stuvds = 4,
|
||||
tfa9873_irq_stmanalarm = 5,
|
||||
tfa9873_irq_sttdmer = 6,
|
||||
tfa9873_irq_stnoclk = 7,
|
||||
tfa9873_irq_max = 8,
|
||||
tfa9873_irq_all = -1 /* all irqs */};
|
||||
|
||||
#define TFA9873_IRQ_NAMETABLE static tfaIrqName_t Tfa9873IrqNames[]= {\
|
||||
{ 0, "STVDDS"},\
|
||||
{ 1, "STBSTOC"},\
|
||||
{ 2, "STOTDS"},\
|
||||
{ 3, "STOCPR"},\
|
||||
{ 4, "STUVDS"},\
|
||||
{ 5, "STMANALARM"},\
|
||||
{ 6, "STTDMER"},\
|
||||
{ 7, "STNOCLK"},\
|
||||
{ 8, "8"},\
|
||||
};
|
||||
#endif /* _TFA9873_TFAFIELDNAMES_H */
|
||||
933
techpack/audio/asoc/codecs/tfa9874/inc/tfa9873_tfafieldnames_B0.h
Executable file
933
techpack/audio/asoc/codecs/tfa9874/inc/tfa9873_tfafieldnames_B0.h
Executable file
|
|
@ -0,0 +1,933 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef _TFA9873_TFAFIELDNAMES_B0_H
|
||||
#define _TFA9873_TFAFIELDNAMES_B0_H
|
||||
|
||||
|
||||
#define TFA9873B0_I2CVERSION 13
|
||||
|
||||
typedef enum Tfa9873B0BfEnumList {
|
||||
TFA9873B0_BF_PWDN = 0x0000, /*!< Powerdown selection */
|
||||
TFA9873B0_BF_I2CR = 0x0010, /*!< I2C reset - auto clear */
|
||||
TFA9873B0_BF_AMPE = 0x0030, /*!< Activate amplifier */
|
||||
TFA9873B0_BF_DCA = 0x0040, /*!< Activate DC-to-DC converter */
|
||||
TFA9873B0_BF_INTP = 0x0071, /*!< Interrupt config */
|
||||
TFA9873B0_BF_FSSSEL= 0x0090, /*!< Audio sample reference */
|
||||
TFA9873B0_BF_BYPOCP= 0x00b0, /*!< Bypass OCP */
|
||||
TFA9873B0_BF_TSTOCP= 0x00c0, /*!< OCP testing control */
|
||||
TFA9873B0_BF_ENPLLSYNC= 0x00e0, /*!< Manager control for enabling synchronisation with PLL FS */
|
||||
TFA9873B0_BF_AMPINSEL= 0x0101, /*!< Amplifier input selection */
|
||||
TFA9873B0_BF_MANSCONF= 0x0120, /*!< I2C configured */
|
||||
TFA9873B0_BF_MUTETO= 0x0160, /*!< Time out SB mute sequence */
|
||||
TFA9873B0_BF_OPENMTP= 0x01e0, /*!< Control for FAIM protection */
|
||||
TFA9873B0_BF_DISFCRBST= 0x01f0, /*!< Disable boost control with FRCBST */
|
||||
TFA9873B0_BF_AUDFS = 0x0203, /*!< Sample rate (fs) */
|
||||
TFA9873B0_BF_INPLEV= 0x0240, /*!< TDM output attenuation */
|
||||
TFA9873B0_BF_FRACTDEL= 0x0255, /*!< V/I Fractional delay */
|
||||
TFA9873B0_BF_REV = 0x030f, /*!< Device revision information */
|
||||
TFA9873B0_BF_REFCKEXT= 0x0401, /*!< PLL external ref clock */
|
||||
TFA9873B0_BF_REFCKSEL= 0x0420, /*!< PLL internal ref clock */
|
||||
TFA9873B0_BF_MANAOOSC= 0x0460, /*!< Internal osc off in power down mode */
|
||||
TFA9873B0_BF_FSSYNCEN= 0x0480, /*!< Enable FS synchronisation for clock divider */
|
||||
TFA9873B0_BF_CLKREFSYNCEN= 0x0490, /*!< Enable PLL reference clock synchronisation for clock divider */
|
||||
TFA9873B0_BF_AUTOFROSEL= 0x04a0, /*!< Override automatic OSC selection mechanism */
|
||||
TFA9873B0_BF_CGUSYNCDCG= 0x0500, /*!< Clock gating control for CGU synchronisation module */
|
||||
TFA9873B0_BF_FRCCLKSPKR= 0x0510, /*!< Force active the speaker sub-system clock when in idle power */
|
||||
TFA9873B0_BF_BSTCLKLP= 0x0520, /*!< Boost clock control in low power mode1 */
|
||||
TFA9873B0_BF_SSFAIME= 0x05c0, /*!< Sub-system FAIM */
|
||||
TFA9873B0_BF_CLKCHKLO= 0x0707, /*!< Clock check low threshold */
|
||||
TFA9873B0_BF_CLKCHKHI= 0x0787, /*!< Clock check higher threshold */
|
||||
TFA9873B0_BF_AMPOCRT= 0x0802, /*!< Amplifier on-off criteria for shutdown */
|
||||
TFA9873B0_BF_VDDS = 0x1000, /*!< POR */
|
||||
TFA9873B0_BF_DCOCPOK= 0x1010, /*!< DCDC OCP nmos (sticky register, clear on read) */
|
||||
TFA9873B0_BF_OTDS = 0x1020, /*!< OTP alarm (sticky register, clear on read) */
|
||||
TFA9873B0_BF_OCDS = 0x1030, /*!< OCP amplifier (sticky register, clear on read) */
|
||||
TFA9873B0_BF_UVDS = 0x1040, /*!< UVP alarm (sticky register, clear on read) */
|
||||
TFA9873B0_BF_MANALARM= 0x1050, /*!< Alarm state */
|
||||
TFA9873B0_BF_CLKS = 0x1060, /*!< Clocks stable */
|
||||
TFA9873B0_BF_MTPB = 0x1070, /*!< MTP busy */
|
||||
TFA9873B0_BF_NOCLK = 0x1080, /*!< Lost clock (sticky register, clear on read) */
|
||||
TFA9873B0_BF_TDMERR= 0x10a0, /*!< TDM error */
|
||||
TFA9873B0_BF_DCIL = 0x1100, /*!< DCDC current limiting */
|
||||
TFA9873B0_BF_DCDCA = 0x1110, /*!< DCDC active (sticky register, clear on read) */
|
||||
TFA9873B0_BF_DCDCPC= 0x1120, /*!< Indicates current is max in DC-to-DC converter */
|
||||
TFA9873B0_BF_DCHVBAT= 0x1130, /*!< DCDC level 1x */
|
||||
TFA9873B0_BF_DCH114= 0x1140, /*!< DCDC level 1.14x */
|
||||
TFA9873B0_BF_DCH107= 0x1150, /*!< DCDC level 1.07x */
|
||||
TFA9873B0_BF_PLLS = 0x1160, /*!< PLL lock */
|
||||
TFA9873B0_BF_TDMLUTER= 0x1180, /*!< TDM LUT error */
|
||||
TFA9873B0_BF_CLKOOR= 0x11c0, /*!< External clock status */
|
||||
TFA9873B0_BF_SWS = 0x11d0, /*!< Amplifier engage */
|
||||
TFA9873B0_BF_AMPS = 0x11e0, /*!< Amplifier enable */
|
||||
TFA9873B0_BF_AREFS = 0x11f0, /*!< References enable */
|
||||
TFA9873B0_BF_OCPOAP= 0x1300, /*!< OCPOK pmos A */
|
||||
TFA9873B0_BF_OCPOAN= 0x1310, /*!< OCPOK nmos A */
|
||||
TFA9873B0_BF_OCPOBP= 0x1320, /*!< OCPOK pmos B */
|
||||
TFA9873B0_BF_OCPOBN= 0x1330, /*!< OCPOK nmos B */
|
||||
TFA9873B0_BF_OVDS = 0x1380, /*!< OVP alarm */
|
||||
TFA9873B0_BF_CLIPS = 0x1390, /*!< Amplifier clipping */
|
||||
TFA9873B0_BF_ADCCR = 0x13a0, /*!< Control ADC */
|
||||
TFA9873B0_BF_MANWAIT1= 0x13c0, /*!< Wait HW I2C settings */
|
||||
TFA9873B0_BF_MANMUTE= 0x13e0, /*!< Audio mute sequence */
|
||||
TFA9873B0_BF_MANOPER= 0x13f0, /*!< Operating state */
|
||||
TFA9873B0_BF_TDMSTAT= 0x1402, /*!< TDM status bits */
|
||||
TFA9873B0_BF_MANSTATE= 0x1433, /*!< Device manager status */
|
||||
TFA9873B0_BF_AMPSTE= 0x1473, /*!< Amplifier control status */
|
||||
TFA9873B0_BF_DCMODE= 0x14b1, /*!< DCDC mode status bits */
|
||||
TFA9873B0_BF_WAITSYNC= 0x14d0, /*!< CGU and PLL synchronisation status flag from CGU */
|
||||
TFA9873B0_BF_BATS = 0x1509, /*!< Battery voltage (V) */
|
||||
TFA9873B0_BF_TEMPS = 0x1608, /*!< IC Temperature (C) */
|
||||
TFA9873B0_BF_VDDPS = 0x1709, /*!< IC VDDP voltage ( 1023*VDDP/13 V) */
|
||||
TFA9873B0_BF_TDME = 0x2000, /*!< Enable interface */
|
||||
TFA9873B0_BF_TDMSLOTS= 0x2013, /*!< N-slots in Frame */
|
||||
TFA9873B0_BF_TDMCLINV= 0x2060, /*!< Reception data to BCK clock */
|
||||
TFA9873B0_BF_TDMFSLN= 0x2073, /*!< FS length */
|
||||
TFA9873B0_BF_TDMFSPOL= 0x20b0, /*!< FS polarity */
|
||||
TFA9873B0_BF_TDMNBCK= 0x20c3, /*!< N-BCK's in FS */
|
||||
TFA9873B0_BF_TDMSLLN= 0x2144, /*!< N-bits in slot */
|
||||
TFA9873B0_BF_TDMBRMG= 0x2194, /*!< N-bits remaining */
|
||||
TFA9873B0_BF_TDMDEL= 0x21e0, /*!< Data delay to FS */
|
||||
TFA9873B0_BF_TDMADJ= 0x21f0, /*!< Data adjustment */
|
||||
TFA9873B0_BF_TDMOOMP= 0x2201, /*!< Received audio compression */
|
||||
TFA9873B0_BF_TDMSSIZE= 0x2224, /*!< Sample size per slot */
|
||||
TFA9873B0_BF_TDMTXDFO= 0x2271, /*!< Format unused bits */
|
||||
TFA9873B0_BF_TDMTXUS0= 0x2291, /*!< Format unused slots DATAO */
|
||||
TFA9873B0_BF_TDMSPKE= 0x2300, /*!< Control audio TDM channel in 0 */
|
||||
TFA9873B0_BF_TDMDCE= 0x2310, /*!< Control audio TDM channel in 1 */
|
||||
TFA9873B0_BF_TDMCSE= 0x2330, /*!< current sense vbat temperature and vddp feedback */
|
||||
TFA9873B0_BF_TDMVSE= 0x2340, /*!< Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9873B0_BF_TDMSPKS= 0x2603, /*!< TDM slot for sink 0 */
|
||||
TFA9873B0_BF_TDMDCS= 0x2643, /*!< TDM slot for sink 1 */
|
||||
TFA9873B0_BF_TDMCSS= 0x26c3, /*!< Slot Position of current sense vbat temperature and vddp feedback */
|
||||
TFA9873B0_BF_TDMVSS= 0x2703, /*!< Slot Position of Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9873B0_BF_ISTVDDS= 0x4000, /*!< Status POR */
|
||||
TFA9873B0_BF_ISTBSTOC= 0x4010, /*!< Status DCDC OCP */
|
||||
TFA9873B0_BF_ISTOTDS= 0x4020, /*!< Status OTP alarm */
|
||||
TFA9873B0_BF_ISTOCPR= 0x4030, /*!< Status OCP alarm */
|
||||
TFA9873B0_BF_ISTUVDS= 0x4040, /*!< Status UVP alarm */
|
||||
TFA9873B0_BF_ISTMANALARM= 0x4050, /*!< Status manager alarm state */
|
||||
TFA9873B0_BF_ISTTDMER= 0x4060, /*!< Status TDM error */
|
||||
TFA9873B0_BF_ISTNOCLK= 0x4070, /*!< Status lost clock */
|
||||
TFA9873B0_BF_ICLVDDS= 0x4400, /*!< Clear POR */
|
||||
TFA9873B0_BF_ICLBSTOC= 0x4410, /*!< Clear DCDC OCP */
|
||||
TFA9873B0_BF_ICLOTDS= 0x4420, /*!< Clear OTP alarm */
|
||||
TFA9873B0_BF_ICLOCPR= 0x4430, /*!< Clear OCP alarm */
|
||||
TFA9873B0_BF_ICLUVDS= 0x4440, /*!< Clear UVP alarm */
|
||||
TFA9873B0_BF_ICLMANALARM= 0x4450, /*!< Clear manager alarm state */
|
||||
TFA9873B0_BF_ICLTDMER= 0x4460, /*!< Clear TDM error */
|
||||
TFA9873B0_BF_ICLNOCLK= 0x4470, /*!< Clear lost clk */
|
||||
TFA9873B0_BF_IEVDDS= 0x4800, /*!< Enable POR */
|
||||
TFA9873B0_BF_IEBSTOC= 0x4810, /*!< Enable DCDC OCP */
|
||||
TFA9873B0_BF_IEOTDS= 0x4820, /*!< Enable OTP alarm */
|
||||
TFA9873B0_BF_IEOCPR= 0x4830, /*!< Enable OCP alarm */
|
||||
TFA9873B0_BF_IEUVDS= 0x4840, /*!< Enable UVP alarm */
|
||||
TFA9873B0_BF_IEMANALARM= 0x4850, /*!< Enable manager alarm state */
|
||||
TFA9873B0_BF_IETDMER= 0x4860, /*!< Enable TDM error */
|
||||
TFA9873B0_BF_IENOCLK= 0x4870, /*!< Enable lost clk */
|
||||
TFA9873B0_BF_IPOVDDS= 0x4c00, /*!< Polarity POR */
|
||||
TFA9873B0_BF_IPOBSTOC= 0x4c10, /*!< Polarity DCDC OCP */
|
||||
TFA9873B0_BF_IPOOTDS= 0x4c20, /*!< Polarity OTP alarm */
|
||||
TFA9873B0_BF_IPOOCPR= 0x4c30, /*!< Polarity OCP alarm */
|
||||
TFA9873B0_BF_IPOUVDS= 0x4c40, /*!< Polarity UVP alarm */
|
||||
TFA9873B0_BF_IPOMANALARM= 0x4c50, /*!< Polarity manager alarm state */
|
||||
TFA9873B0_BF_IPOTDMER= 0x4c60, /*!< Polarity TDM error */
|
||||
TFA9873B0_BF_IPONOCLK= 0x4c70, /*!< Polarity lost clk */
|
||||
TFA9873B0_BF_BSSCR = 0x5001, /*!< Battery safeguard attack time */
|
||||
TFA9873B0_BF_BSST = 0x5023, /*!< Battery safeguard threshold voltage level */
|
||||
TFA9873B0_BF_BSSRL = 0x5061, /*!< Battery safeguard maximum reduction */
|
||||
TFA9873B0_BF_BSSR = 0x50e0, /*!< Battery voltage read out */
|
||||
TFA9873B0_BF_BSSBY = 0x50f0, /*!< Bypass battery safeguard */
|
||||
TFA9873B0_BF_BSSS = 0x5100, /*!< Vbat prot steepness */
|
||||
TFA9873B0_BF_HPFBYP= 0x5150, /*!< Bypass HPF */
|
||||
TFA9873B0_BF_DPSA = 0x5170, /*!< Enable DPSA */
|
||||
TFA9873B0_BF_BYHWCLIP= 0x5240, /*!< Bypass hardware clipper */
|
||||
TFA9873B0_BF_AMPGAIN= 0x5257, /*!< Amplifier gain */
|
||||
TFA9873B0_BF_BYPDLYLINE= 0x52f0, /*!< Bypass the interpolator delay line */
|
||||
TFA9873B0_BF_SLOPEE= 0x55a0, /*!< Enables slope control */
|
||||
TFA9873B0_BF_SLOPESET= 0x55b0, /*!< Slope speed setting */
|
||||
TFA9873B0_BF_PWMFREQ= 0x5900, /*!< Control for selection for PWM switching frequency */
|
||||
TFA9873B0_BF_TDMSPKG= 0x5f63, /*!< Total gain depending on INPLEV setting (channel 0) */
|
||||
TFA9873B0_BF_IPM = 0x60e1, /*!< Idle power mode control */
|
||||
TFA9873B0_BF_LNMODE= 0x62e1, /*!< Ctrl select mode */
|
||||
TFA9873B0_BF_LPM1MODE= 0x64e1, /*!< Low power mode control */
|
||||
TFA9873B0_BF_TDMSRCMAP= 0x6802, /*!< TDM source mapping */
|
||||
TFA9873B0_BF_TDMSRCAS= 0x6831, /*!< Sensed value A */
|
||||
TFA9873B0_BF_TDMSRCBS= 0x6851, /*!< Sensed value B */
|
||||
TFA9873B0_BF_TDMSRCACLIP= 0x6871, /*!< Clip information (analog /digital) for source0 */
|
||||
TFA9873B0_BF_TDMSRCBCLIP= 0x6891, /*!< Clip information (analog /digital) for source1 */
|
||||
TFA9873B0_BF_LP0 = 0x6e00, /*!< Idle power mode */
|
||||
TFA9873B0_BF_LP1 = 0x6e10, /*!< Low power mode 1 detection */
|
||||
TFA9873B0_BF_LA = 0x6e20, /*!< Low amplitude detection */
|
||||
TFA9873B0_BF_VDDPH = 0x6e30, /*!< Vddp greater than Vbat */
|
||||
TFA9873B0_BF_DELCURCOMP= 0x6f02, /*!< Delay to allign compensation signal with current sense signal */
|
||||
TFA9873B0_BF_SIGCURCOMP= 0x6f40, /*!< Polarity of compensation for current sense */
|
||||
TFA9873B0_BF_ENCURCOMP= 0x6f50, /*!< Enable current sense compensation */
|
||||
TFA9873B0_BF_LVLCLPPWM= 0x6f72, /*!< Set the amount of pwm pulse that may be skipped before clip-flag is triggered */
|
||||
TFA9873B0_BF_DCMCC = 0x7003, /*!< Max coil current */
|
||||
TFA9873B0_BF_DCCV = 0x7041, /*!< Slope compensation current, represents LxF (inductance x frequency) */
|
||||
TFA9873B0_BF_DCIE = 0x7060, /*!< Adaptive boost mode */
|
||||
TFA9873B0_BF_DCSR = 0x7070, /*!< Soft ramp up/down */
|
||||
TFA9873B0_BF_DCOVL = 0x7085, /*!< Threshold level to activate active overshoot control */
|
||||
TFA9873B0_BF_DCDIS = 0x70e0, /*!< DCDC on/off */
|
||||
TFA9873B0_BF_DCPWM = 0x70f0, /*!< DCDC PWM only mode */
|
||||
TFA9873B0_BF_DCDYFSW= 0x7420, /*!< Disables the dynamic frequency switching due to flag_voutcomp86/93 */
|
||||
TFA9873B0_BF_DCTRACK= 0x7430, /*!< Boost algorithm selection, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873B0_BF_DCTRIP= 0x7444, /*!< 1st Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9873B0_BF_DCHOLD= 0x7494, /*!< Hold time for DCDC booster, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873B0_BF_DCINT = 0x74e0, /*!< Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873B0_BF_DCTRIP2= 0x7534, /*!< 2nd Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9873B0_BF_DCTRIPT= 0x7584, /*!< Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1 */
|
||||
TFA9873B0_BF_DCTRIPHYSTE= 0x75f0, /*!< Enable hysteresis on booster trip levels */
|
||||
TFA9873B0_BF_ENBSTFLT= 0x7620, /*!< Enable the boost filter */
|
||||
TFA9873B0_BF_DCVOF = 0x7635, /*!< First boost voltage level */
|
||||
TFA9873B0_BF_DCVOS = 0x7695, /*!< Second boost voltage level */
|
||||
TFA9873B0_BF_MTPK = 0xa107, /*!< MTP KEY2 register */
|
||||
TFA9873B0_BF_KEY1LOCKED= 0xa200, /*!< Indicates KEY1 is locked */
|
||||
TFA9873B0_BF_KEY2LOCKED= 0xa210, /*!< Indicates KEY2 is locked */
|
||||
TFA9873B0_BF_MTPADDR= 0xa302, /*!< MTP address from I2C register for read/writing mtp in manual single word mode */
|
||||
TFA9873B0_BF_MTPRDMSB= 0xa50f, /*!< MSB word of MTP manual read data */
|
||||
TFA9873B0_BF_MTPRDLSB= 0xa60f, /*!< LSB word of MTP manual read data */
|
||||
TFA9873B0_BF_MTPWRMSB= 0xa70f, /*!< MSB word of write data for MTP manual write */
|
||||
TFA9873B0_BF_MTPWRLSB= 0xa80f, /*!< LSB word of write data for MTP manual write */
|
||||
TFA9873B0_BF_EXTTS = 0xb108, /*!< External temperature (C) */
|
||||
TFA9873B0_BF_TROS = 0xb190, /*!< Select temp Speaker calibration */
|
||||
TFA9873B0_BF_PLLINSI= 0xcd05, /*!< PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1 */
|
||||
TFA9873B0_BF_PLLINSP= 0xcd64, /*!< PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9873B0_BF_PLLINSR= 0xcdb3, /*!< PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9873B0_BF_PLLBDSEL= 0xcdf0, /*!< PLL bandwidth selection control, USE WITH CAUTION */
|
||||
TFA9873B0_BF_PLLNDEC= 0xce09, /*!< PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLMDECM= 0xcea0, /*!< MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLBP = 0xceb0, /*!< PLL bypass control during functional mode */
|
||||
TFA9873B0_BF_PLLDI = 0xcec0, /*!< PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLDO = 0xced0, /*!< PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLCLKSTB= 0xcee0, /*!< PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLFRM= 0xcef0, /*!< PLL free running mode control in functional mode */
|
||||
TFA9873B0_BF_PLLMDECL= 0xcf0f, /*!< Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLPDEC= 0xd006, /*!< PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9873B0_BF_PLLDCTRL= 0xd070, /*!< Enabled PLL direct control mode, overrules the PLL LUT with I2C register values */
|
||||
TFA9873B0_BF_PLLLIMOFF= 0xd090, /*!< PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1 */
|
||||
TFA9873B0_BF_PLLSTRTM= 0xd0a2, /*!< PLL startup time selection control */
|
||||
TFA9873B0_BF_SWPROFIL= 0xe00f, /*!< Software profile data */
|
||||
TFA9873B0_BF_SWVSTEP= 0xe10f, /*!< Software vstep information */
|
||||
TFA9873B0_BF_MTPOTC= 0xf000, /*!< Calibration schedule */
|
||||
TFA9873B0_BF_MTPEX = 0xf010, /*!< Calibration Ron executed */
|
||||
TFA9873B0_BF_DCMCCAPI= 0xf020, /*!< Calibration current limit DCDC */
|
||||
TFA9873B0_BF_DCMCCSB= 0xf030, /*!< Sign bit for delta calibration current limit DCDC */
|
||||
TFA9873B0_BF_USERDEF= 0xf042, /*!< Calibration delta current limit DCDC */
|
||||
TFA9873B0_BF_CUSTINFO= 0xf078, /*!< Reserved space for allowing customer to store speaker information */
|
||||
TFA9873B0_BF_R25C = 0xf50f, /*!< Ron resistance of speaker coil */
|
||||
} Tfa9873B0BfEnumList_t;
|
||||
#define TFA9873B0_NAMETABLE static tfaBfName_t Tfa9873B0DatasheetNames[]= {\
|
||||
{ 0x0, "PWDN"}, /* Powerdown selection , */\
|
||||
{ 0x10, "I2CR"}, /* I2C reset - auto clear , */\
|
||||
{ 0x30, "AMPE"}, /* Activate amplifier , */\
|
||||
{ 0x40, "DCA"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "INTP"}, /* Interrupt config , */\
|
||||
{ 0x90, "FSSSEL"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "BYPOCP"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "TSTOCP"}, /* OCP testing control , */\
|
||||
{ 0xe0, "ENPLLSYNC"}, /* Manager control for enabling synchronisation with PLL FS, */\
|
||||
{ 0x101, "AMPINSEL"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "MANSCONF"}, /* I2C configured , */\
|
||||
{ 0x160, "MUTETO"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "OPENMTP"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "DISFCRBST"}, /* Disable boost control with FRCBST , */\
|
||||
{ 0x203, "AUDFS"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "INPLEV"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "FRACTDEL"}, /* V/I Fractional delay , */\
|
||||
{ 0x30f, "REV"}, /* Device revision information , */\
|
||||
{ 0x401, "REFCKEXT"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "REFCKSEL"}, /* PLL internal ref clock , */\
|
||||
{ 0x460, "MANAOOSC"}, /* Internal osc off in power down mode , */\
|
||||
{ 0x480, "FSSYNCEN"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "CLKREFSYNCEN"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "AUTOFROSEL"}, /* Override automatic OSC selection mechanism , */\
|
||||
{ 0x500, "CGUSYNCDCG"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "FRCCLKSPKR"}, /* Force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x520, "BSTCLKLP"}, /* Boost clock control in low power mode1 , */\
|
||||
{ 0x5c0, "SSFAIME"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "CLKCHKLO"}, /* Clock check low threshold , */\
|
||||
{ 0x787, "CLKCHKHI"}, /* Clock check higher threshold , */\
|
||||
{ 0x802, "AMPOCRT"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0x1000, "VDDS"}, /* POR , */\
|
||||
{ 0x1010, "DCOCPOK"}, /* DCDC OCP nmos (sticky register, clear on read) , */\
|
||||
{ 0x1020, "OTDS"}, /* OTP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1030, "OCDS"}, /* OCP amplifier (sticky register, clear on read) , */\
|
||||
{ 0x1040, "UVDS"}, /* UVP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1050, "MANALARM"}, /* Alarm state , */\
|
||||
{ 0x1060, "CLKS"}, /* Clocks stable , */\
|
||||
{ 0x1070, "MTPB"}, /* MTP busy , */\
|
||||
{ 0x1080, "NOCLK"}, /* Lost clock (sticky register, clear on read) , */\
|
||||
{ 0x10a0, "TDMERR"}, /* TDM error , */\
|
||||
{ 0x1100, "DCIL"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "DCDCA"}, /* DCDC active (sticky register, clear on read) , */\
|
||||
{ 0x1120, "DCDCPC"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "DCHVBAT"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "DCH114"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "DCH107"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "PLLS"}, /* PLL lock , */\
|
||||
{ 0x1180, "TDMLUTER"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "CLKOOR"}, /* External clock status , */\
|
||||
{ 0x11d0, "SWS"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "AMPS"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "AREFS"}, /* References enable , */\
|
||||
{ 0x1300, "OCPOAP"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "OCPOAN"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "OCPOBP"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "OCPOBN"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "OVDS"}, /* OVP alarm , */\
|
||||
{ 0x1390, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "ADCCR"}, /* Control ADC , */\
|
||||
{ 0x13c0, "MANWAIT1"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "MANMUTE"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "MANOPER"}, /* Operating state , */\
|
||||
{ 0x1402, "TDMSTAT"}, /* TDM status bits , */\
|
||||
{ 0x1433, "MANSTATE"}, /* Device manager status , */\
|
||||
{ 0x1473, "AMPSTE"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "DCMODE"}, /* DCDC mode status bits , */\
|
||||
{ 0x14d0, "WAITSYNC"}, /* CGU and PLL synchronisation status flag from CGU , */\
|
||||
{ 0x1509, "BATS"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "TEMPS"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "VDDPS"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "TDME"}, /* Enable interface , */\
|
||||
{ 0x2013, "TDMSLOTS"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "TDMCLINV"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "TDMFSLN"}, /* FS length , */\
|
||||
{ 0x20b0, "TDMFSPOL"}, /* FS polarity , */\
|
||||
{ 0x20c3, "TDMNBCK"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "TDMSLLN"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "TDMBRMG"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "TDMDEL"}, /* Data delay to FS , */\
|
||||
{ 0x21f0, "TDMADJ"}, /* Data adjustment , */\
|
||||
{ 0x2201, "TDMOOMP"}, /* Received audio compression , */\
|
||||
{ 0x2224, "TDMSSIZE"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "TDMTXDFO"}, /* Format unused bits , */\
|
||||
{ 0x2291, "TDMTXUS0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "TDMSPKE"}, /* Control audio TDM channel in 0 , */\
|
||||
{ 0x2310, "TDMDCE"}, /* Control audio TDM channel in 1 , */\
|
||||
{ 0x2330, "TDMCSE"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "TDMVSE"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "TDMSPKS"}, /* TDM slot for sink 0 , */\
|
||||
{ 0x2643, "TDMDCS"}, /* TDM slot for sink 1 , */\
|
||||
{ 0x26c3, "TDMCSS"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "TDMVSS"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "ISTVDDS"}, /* Status POR , */\
|
||||
{ 0x4010, "ISTBSTOC"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "ISTOTDS"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "ISTOCPR"}, /* Status OCP alarm , */\
|
||||
{ 0x4040, "ISTUVDS"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "ISTMANALARM"}, /* Status manager alarm state , */\
|
||||
{ 0x4060, "ISTTDMER"}, /* Status TDM error , */\
|
||||
{ 0x4070, "ISTNOCLK"}, /* Status lost clock , */\
|
||||
{ 0x4400, "ICLVDDS"}, /* Clear POR , */\
|
||||
{ 0x4410, "ICLBSTOC"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "ICLOTDS"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "ICLOCPR"}, /* Clear OCP alarm , */\
|
||||
{ 0x4440, "ICLUVDS"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "ICLMANALARM"}, /* Clear manager alarm state , */\
|
||||
{ 0x4460, "ICLTDMER"}, /* Clear TDM error , */\
|
||||
{ 0x4470, "ICLNOCLK"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "IEVDDS"}, /* Enable POR , */\
|
||||
{ 0x4810, "IEBSTOC"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "IEOTDS"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "IEOCPR"}, /* Enable OCP alarm , */\
|
||||
{ 0x4840, "IEUVDS"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "IEMANALARM"}, /* Enable manager alarm state , */\
|
||||
{ 0x4860, "IETDMER"}, /* Enable TDM error , */\
|
||||
{ 0x4870, "IENOCLK"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "IPOVDDS"}, /* Polarity POR , */\
|
||||
{ 0x4c10, "IPOBSTOC"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "IPOOTDS"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "IPOOCPR"}, /* Polarity OCP alarm , */\
|
||||
{ 0x4c40, "IPOUVDS"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "IPOMANALARM"}, /* Polarity manager alarm state , */\
|
||||
{ 0x4c60, "IPOTDMER"}, /* Polarity TDM error , */\
|
||||
{ 0x4c70, "IPONOCLK"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "BSSCR"}, /* Battery safeguard attack time , */\
|
||||
{ 0x5023, "BSST"}, /* Battery safeguard threshold voltage level , */\
|
||||
{ 0x5061, "BSSRL"}, /* Battery safeguard maximum reduction , */\
|
||||
{ 0x50e0, "BSSR"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "BSSBY"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "BSSS"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "HPFBYP"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "DPSA"}, /* Enable DPSA , */\
|
||||
{ 0x5240, "BYHWCLIP"}, /* Bypass hardware clipper , */\
|
||||
{ 0x5257, "AMPGAIN"}, /* Amplifier gain , */\
|
||||
{ 0x52f0, "BYPDLYLINE"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x55a0, "SLOPEE"}, /* Enables slope control , */\
|
||||
{ 0x55b0, "SLOPESET"}, /* Slope speed setting , */\
|
||||
{ 0x5900, "PWMFREQ"}, /* Control for selection for PWM switching frequency , */\
|
||||
{ 0x5f63, "TDMSPKG"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x60e1, "IPM"}, /* Idle power mode control , */\
|
||||
{ 0x62e1, "LNMODE"}, /* Ctrl select mode , */\
|
||||
{ 0x64e1, "LPM1MODE"}, /* Low power mode control , */\
|
||||
{ 0x6802, "TDMSRCMAP"}, /* TDM source mapping , */\
|
||||
{ 0x6831, "TDMSRCAS"}, /* Sensed value A , */\
|
||||
{ 0x6851, "TDMSRCBS"}, /* Sensed value B , */\
|
||||
{ 0x6871, "TDMSRCACLIP"}, /* Clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "TDMSRCBCLIP"}, /* Clip information (analog /digital) for source1 , */\
|
||||
{ 0x6e00, "LP0"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "LP1"}, /* Low power mode 1 detection , */\
|
||||
{ 0x6e20, "LA"}, /* Low amplitude detection , */\
|
||||
{ 0x6e30, "VDDPH"}, /* Vddp greater than Vbat , */\
|
||||
{ 0x6f02, "DELCURCOMP"}, /* Delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "SIGCURCOMP"}, /* Polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "ENCURCOMP"}, /* Enable current sense compensation , */\
|
||||
{ 0x6f72, "LVLCLPPWM"}, /* Set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "DCMCC"}, /* Max coil current , */\
|
||||
{ 0x7041, "DCCV"}, /* Slope compensation current, represents LxF (inductance x frequency) , */\
|
||||
{ 0x7060, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "DCSR"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "DCOVL"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "DCDIS"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "DCPWM"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7420, "DCDYFSW"}, /* Disables the dynamic frequency switching due to flag_voutcomp86/93, */\
|
||||
{ 0x7430, "DCTRACK"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "DCTRIP"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "DCHOLD"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "DCINT"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7534, "DCTRIP2"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "DCTRIPT"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "DCTRIPHYSTE"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7620, "ENBSTFLT"}, /* Enable the boost filter , */\
|
||||
{ 0x7635, "DCVOF"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "DCVOS"}, /* Second boost voltage level , */\
|
||||
{ 0xa107, "MTPK"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "KEY1LOCKED"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "KEY2LOCKED"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "MTPADDR"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa50f, "MTPRDMSB"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "MTPRDLSB"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "MTPWRMSB"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "MTPWRLSB"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb108, "EXTTS"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "TROS"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xcd05, "PLLINSI"}, /* PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "PLLINSP"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "PLLINSR"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "PLLBDSEL"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "PLLNDEC"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "PLLMDECM"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "PLLBP"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "PLLDI"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "PLLDO"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "PLLCLKSTB"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "PLLFRM"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "PLLMDECL"}, /* Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "PLLPDEC"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "PLLDCTRL"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "PLLLIMOFF"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "PLLSTRTM"}, /* PLL startup time selection control , */\
|
||||
{ 0xe00f, "SWPROFIL"}, /* Software profile data , */\
|
||||
{ 0xe10f, "SWVSTEP"}, /* Software vstep information , */\
|
||||
{ 0xf000, "MTPOTC"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "MTPEX"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "DCMCCAPI"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "DCMCCSB"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "USERDEF"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "CUSTINFO"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf50f, "R25C"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9873B0_BITNAMETABLE static tfaBfName_t Tfa9873B0BitNames[]= {\
|
||||
{ 0x0, "powerdown"}, /* Powerdown selection , */\
|
||||
{ 0x10, "reset"}, /* I2C reset - auto clear , */\
|
||||
{ 0x30, "enbl_amplifier"}, /* Activate amplifier , */\
|
||||
{ 0x40, "enbl_boost"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "int_pad_io"}, /* Interrupt config , */\
|
||||
{ 0x90, "fs_pulse_sel"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "test_ocp"}, /* OCP testing control , */\
|
||||
{ 0xd0, "sel_man_wait_time"}, /* Manager wait time selection control , */\
|
||||
{ 0xe0, "enbl_pll_synchronisation"}, /* Manager control for enabling synchronisation with PLL FS, */\
|
||||
{ 0x101, "vamp_sel1"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "src_set_configured"}, /* I2C configured , */\
|
||||
{ 0x160, "disable_mute_time_out"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "unprotect_faim"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "disable_frcbst"}, /* Disable boost control with FRCBST , */\
|
||||
{ 0x203, "audio_fs"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "input_level"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "cs_frac_delay"}, /* V/I Fractional delay , */\
|
||||
{ 0x30f, "device_rev"}, /* Device revision information , */\
|
||||
{ 0x401, "pll_clkin_sel"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "pll_clkin_sel_osc"}, /* PLL internal ref clock , */\
|
||||
{ 0x460, "enbl_osc_auto_off"}, /* Internal osc off in power down mode , */\
|
||||
{ 0x480, "enbl_fs_sync"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "enbl_clkref_sync"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "override_auto_sel_osc"}, /* Override automatic OSC selection mechanism , */\
|
||||
{ 0x500, "disable_cgu_sync_cgate"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "force_spkr_clk"}, /* Force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x520, "ctrl_bst_clk_lp1"}, /* Boost clock control in low power mode1 , */\
|
||||
{ 0x5c0, "enbl_faim_ss"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "clkchk_th_lo"}, /* Clock check low threshold , */\
|
||||
{ 0x787, "clkchk_th_hi"}, /* Clock check higher threshold , */\
|
||||
{ 0x802, "ctrl_on2off_criterion"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0xe07, "ctrl_digtoana"}, /* Spare control from digital to analog , */\
|
||||
{ 0xf0f, "hidden_code"}, /* 5A6Bh, 23147d to access registers (default for engineering), */\
|
||||
{ 0x1000, "flag_por"}, /* POR , */\
|
||||
{ 0x1010, "flag_bst_ocpok"}, /* DCDC OCP nmos (sticky register, clear on read) , */\
|
||||
{ 0x1020, "flag_otpok"}, /* OTP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1030, "flag_ocp_alarm"}, /* OCP amplifier (sticky register, clear on read) , */\
|
||||
{ 0x1040, "flag_uvpok"}, /* UVP alarm (sticky register, clear on read) , */\
|
||||
{ 0x1050, "flag_man_alarm_state"}, /* Alarm state , */\
|
||||
{ 0x1060, "flag_clocks_stable"}, /* Clocks stable , */\
|
||||
{ 0x1070, "flag_mtp_busy"}, /* MTP busy , */\
|
||||
{ 0x1080, "flag_lost_clk"}, /* Lost clock (sticky register, clear on read) , */\
|
||||
{ 0x10a0, "flag_tdm_error"}, /* TDM error , */\
|
||||
{ 0x1100, "flag_bst_bstcur"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "flag_bst_hiz"}, /* DCDC active (sticky register, clear on read) , */\
|
||||
{ 0x1120, "flag_bst_peakcur"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "flag_bst_voutcomp"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "flag_bst_voutcomp86"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "flag_bst_voutcomp93"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "flag_pll_lock"}, /* PLL lock , */\
|
||||
{ 0x1180, "flag_tdm_lut_error"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "flag_clk_out_of_range"}, /* External clock status , */\
|
||||
{ 0x11d0, "flag_engage"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "flag_enbl_amp"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "flag_enbl_ref"}, /* References enable , */\
|
||||
{ 0x1300, "flag_ocpokap"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "flag_ocpokan"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "flag_ocpokbp"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "flag_ocpokbn"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "flag_ovpok"}, /* OVP alarm , */\
|
||||
{ 0x1390, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "flag_adc10_ready"}, /* Control ADC , */\
|
||||
{ 0x13c0, "flag_man_wait_src_settings"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "flag_man_start_mute_audio"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "flag_man_operating_state"}, /* Operating state , */\
|
||||
{ 0x1402, "flag_tdm_status"}, /* TDM status bits , */\
|
||||
{ 0x1433, "man_state"}, /* Device manager status , */\
|
||||
{ 0x1473, "amp_ctrl_state"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "status_bst_mode"}, /* DCDC mode status bits , */\
|
||||
{ 0x14d0, "flag_waiting_for_sync"}, /* CGU and PLL synchronisation status flag from CGU , */\
|
||||
{ 0x1509, "bat_adc"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "temp_adc"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "vddp_adc"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "tdm_enable"}, /* Enable interface , */\
|
||||
{ 0x2013, "tdm_nb_of_slots"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "tdm_clk_inversion"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "tdm_fs_ws_length"}, /* FS length , */\
|
||||
{ 0x20b0, "tdm_fs_ws_polarity"}, /* FS polarity , */\
|
||||
{ 0x20c3, "tdm_nbck"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "tdm_slot_length"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "tdm_bits_remaining"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "tdm_data_delay"}, /* Data delay to FS , */\
|
||||
{ 0x21f0, "tdm_data_adjustment"}, /* Data adjustment , */\
|
||||
{ 0x2201, "tdm_audio_sample_compression"}, /* Received audio compression , */\
|
||||
{ 0x2224, "tdm_sample_size"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "tdm_txdata_format"}, /* Format unused bits , */\
|
||||
{ 0x2291, "tdm_txdata_format_unused_slot_sd0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "tdm_sink0_enable"}, /* Control audio TDM channel in 0 , */\
|
||||
{ 0x2310, "tdm_sink1_enable"}, /* Control audio TDM channel in 1 , */\
|
||||
{ 0x2330, "tdm_source0_enable"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "tdm_source1_enable"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "tdm_sink0_slot"}, /* TDM slot for sink 0 , */\
|
||||
{ 0x2643, "tdm_sink1_slot"}, /* TDM slot for sink 1 , */\
|
||||
{ 0x26c3, "tdm_source0_slot"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "tdm_source1_slot"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "int_out_flag_por"}, /* Status POR , */\
|
||||
{ 0x4010, "int_out_flag_bst_ocpok"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "int_out_flag_otpok"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "int_out_flag_ocp_alarm"}, /* Status OCP alarm , */\
|
||||
{ 0x4040, "int_out_flag_uvpok"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "int_out_flag_man_alarm_state"}, /* Status manager alarm state , */\
|
||||
{ 0x4060, "int_out_flag_tdm_error"}, /* Status TDM error , */\
|
||||
{ 0x4070, "int_out_flag_lost_clk"}, /* Status lost clock , */\
|
||||
{ 0x4400, "int_in_flag_por"}, /* Clear POR , */\
|
||||
{ 0x4410, "int_in_flag_bst_ocpok"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "int_in_flag_otpok"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "int_in_flag_ocp_alarm"}, /* Clear OCP alarm , */\
|
||||
{ 0x4440, "int_in_flag_uvpok"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "int_in_flag_man_alarm_state"}, /* Clear manager alarm state , */\
|
||||
{ 0x4460, "int_in_flag_tdm_error"}, /* Clear TDM error , */\
|
||||
{ 0x4470, "int_in_flag_lost_clk"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "int_enable_flag_por"}, /* Enable POR , */\
|
||||
{ 0x4810, "int_enable_flag_bst_ocpok"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "int_enable_flag_otpok"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "int_enable_flag_ocp_alarm"}, /* Enable OCP alarm , */\
|
||||
{ 0x4840, "int_enable_flag_uvpok"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "int_enable_flag_man_alarm_state"}, /* Enable manager alarm state , */\
|
||||
{ 0x4860, "int_enable_flag_tdm_error"}, /* Enable TDM error , */\
|
||||
{ 0x4870, "int_enable_flag_lost_clk"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "int_polarity_flag_por"}, /* Polarity POR , */\
|
||||
{ 0x4c10, "int_polarity_flag_bst_ocpok"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "int_polarity_flag_otpok"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "int_polarity_flag_ocp_alarm"}, /* Polarity OCP alarm , */\
|
||||
{ 0x4c40, "int_polarity_flag_uvpok"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "int_polarity_flag_man_alarm_state"}, /* Polarity manager alarm state , */\
|
||||
{ 0x4c60, "int_polarity_flag_tdm_error"}, /* Polarity TDM error , */\
|
||||
{ 0x4c70, "int_polarity_flag_lost_clk"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "vbat_prot_attack_time"}, /* Battery safeguard attack time , */\
|
||||
{ 0x5023, "vbat_prot_thlevel"}, /* Battery safeguard threshold voltage level , */\
|
||||
{ 0x5061, "vbat_prot_max_reduct"}, /* Battery safeguard maximum reduction , */\
|
||||
{ 0x50d0, "rst_min_vbat"}, /* Reset clipper - auto clear , */\
|
||||
{ 0x50e0, "sel_vbat"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "bypass_clipper"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "batsense_steepness"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "bypass_hp"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "enbl_dpsa"}, /* Enable DPSA , */\
|
||||
{ 0x5240, "bypasshwclip"}, /* Bypass hardware clipper , */\
|
||||
{ 0x5257, "gain"}, /* Amplifier gain , */\
|
||||
{ 0x52f0, "bypass_dly_line"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x5301, "dpsa_level"}, /* DPSA threshold levels , */\
|
||||
{ 0x5321, "dpsa_release"}, /* DPSA release time , */\
|
||||
{ 0x5350, "bypass_lp"}, /* Bypass the low pass filter inside temperature sensor, */\
|
||||
{ 0x5430, "icomp_engage"}, /* Engage of icomp , */\
|
||||
{ 0x5440, "ctrl_kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x5450, "icomp_engage_overrule"}, /* To overrule the functional icomp_engage signal during validation, */\
|
||||
{ 0x5463, "ctrl_dem"}, /* Enable DEM icomp and DEM one bit DAC , */\
|
||||
{ 0x54a1, "ref_amp_irefdist_set_ctrl"}, /* Scaling of reference current for amplifier OCP , */\
|
||||
{ 0x5500, "bypass_ctrlloop"}, /* Switch amplifier into open loop configuration , */\
|
||||
{ 0x5513, "ctrl_dem_mismatch"}, /* Enable DEM icomp mismatch for testing , */\
|
||||
{ 0x5552, "dpsa_drive"}, /* Drive setting (binary coded) , */\
|
||||
{ 0x5581, "ctrlloop_vstress_select"}, /* GO2 capacitor stress selector for control loop , */\
|
||||
{ 0x55a0, "ctrl_slopectrl"}, /* Enables slope control , */\
|
||||
{ 0x55b0, "ctrl_slope"}, /* Slope speed setting , */\
|
||||
{ 0x5600, "ref_iref_enbl"}, /* Enable of reference current for OCP , */\
|
||||
{ 0x5652, "ref_irefdist_test_enbl"}, /* Enable of test-function of distribution of reference current, used for OCP. When enabled, the current will to to anamux iso powerstages. Using e.g. 011 it will add the current of powerstage P and N., */\
|
||||
{ 0x570a, "enbl_amp"}, /* Switch on the class-D power sections, each part of the analog sections can be switched on/off individually, */\
|
||||
{ 0x57b0, "enbl_engage"}, /* Enables/engage the control stage , */\
|
||||
{ 0x57c0, "enbl_engage_pst"}, /* Enables/engage the power stage , */\
|
||||
{ 0x5810, "hard_mute"}, /* Hard mute - PWM , */\
|
||||
{ 0x5844, "pwm_delay"}, /* PWM delay bits to set the delay, clock PWM is 1/(K*2048*fs), */\
|
||||
{ 0x5890, "reclock_pwm"}, /* Reclock the PWM signal inside analog , */\
|
||||
{ 0x58c0, "enbl_pwm_phase_shift"}, /* Control for PWM phase shift , */\
|
||||
{ 0x5900, "sel_pwm_freq"}, /* Control for selection for PWM switching frequency , */\
|
||||
{ 0x5910, "sel_pwm_delay_src"}, /* Control for selection for PWM delay line source , */\
|
||||
{ 0x5f63, "ctrl_attr"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x6005, "idle_power_cal_offset"}, /* Idle power mode detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6065, "idle_power_zero_lvl"}, /* IIdle power mode zero crossing detection level , */\
|
||||
{ 0x60e1, "idle_power_mode"}, /* Idle power mode control , */\
|
||||
{ 0x6105, "idle_power_threshold_lvl"}, /* Idle power mode amplitude trigger level , */\
|
||||
{ 0x6165, "idle_power_hold_time"}, /* Idle power mode detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x61c0, "disable_idle_power_mode"}, /* Idle power mode detector control , */\
|
||||
{ 0x6265, "zero_lvl"}, /* Low noise gain switch zero trigger level , */\
|
||||
{ 0x62c1, "ctrl_fb_resistor"}, /* Select amplifier feedback resistor connection , */\
|
||||
{ 0x62e1, "lownoisegain_mode"}, /* Ctrl select mode , */\
|
||||
{ 0x6305, "threshold_lvl"}, /* Low noise gain switch trigger level , */\
|
||||
{ 0x6365, "hold_time"}, /* Low noise gain switch ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x6405, "lpm1_cal_offset"}, /* Low power mode1 detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6465, "lpm1_zero_lvl"}, /* Low power mode1 zero crossing detection level , */\
|
||||
{ 0x64e1, "lpm1_mode"}, /* Low power mode control , */\
|
||||
{ 0x6505, "lpm1_threshold_lvl"}, /* Low power mode1 amplitude trigger level , */\
|
||||
{ 0x6565, "lpm1_hold_time"}, /* Low power mode1 detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x65c0, "disable_low_power_mode"}, /* Low power mode1 detector control , */\
|
||||
{ 0x6611, "dcdc_ctrl_maxzercnt"}, /* DCDC Number of zero current flags to count before going to PFM mode, */\
|
||||
{ 0x6656, "dcdc_vbat_delta_detect"}, /* Threshold before booster is reacting on a delta Vbat (in PFM mode) by temporarily switching to PWM mode, */\
|
||||
{ 0x66c0, "dcdc_ignore_vbat"}, /* Ignore an increase on Vbat , */\
|
||||
{ 0x66d2, "pfmfreq_limit"}, /* Lowest PFM frequency limit , */\
|
||||
{ 0x6700, "enbl_minion"}, /* Enables minion (small) power stage , */\
|
||||
{ 0x6713, "vth_vddpvbat"}, /* Select vddp-vbat threshold signal , */\
|
||||
{ 0x6750, "lpen_vddpvbat"}, /* Select vddp-vbat filtred vs unfiltered compare , */\
|
||||
{ 0x6761, "ctrl_rfb"}, /* Feedback resistor selection - I2C direct mode , */\
|
||||
{ 0x6802, "tdm_source_mapping"}, /* TDM source mapping , */\
|
||||
{ 0x6831, "tdm_sourcea_frame_sel"}, /* Sensed value A , */\
|
||||
{ 0x6851, "tdm_sourceb_frame_sel"}, /* Sensed value B , */\
|
||||
{ 0x6871, "tdm_source0_clip_sel"}, /* Clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "tdm_source1_clip_sel"}, /* Clip information (analog /digital) for source1 , */\
|
||||
{ 0x6a02, "rst_min_vbat_delay"}, /* rst_min_vbat delay (nb fs) , */\
|
||||
{ 0x6b00, "disable_auto_engage"}, /* Disable auto engange , */\
|
||||
{ 0x6b10, "disable_engage"}, /* Disable engange , */\
|
||||
{ 0x6c02, "ns_hp2ln_criterion"}, /* 0..7 zeroes at ns as threshold to swap from high_power to low_noise, */\
|
||||
{ 0x6c32, "ns_ln2hp_criterion"}, /* 0..7 zeroes at ns as threshold to swap from low_noise to high_power, */\
|
||||
{ 0x6c69, "spare_out"}, /* spare_out , */\
|
||||
{ 0x6d0f, "spare_in"}, /* spare_in , */\
|
||||
{ 0x6e00, "flag_idle_power_mode"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "flag_lp_detect_mode1"}, /* Low power mode 1 detection , */\
|
||||
{ 0x6e20, "flag_low_amplitude"}, /* Low amplitude detection , */\
|
||||
{ 0x6e30, "flag_vddp_gt_vbat"}, /* Vddp greater than Vbat , */\
|
||||
{ 0x6f02, "cursense_comp_delay"}, /* Delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "cursense_comp_sign"}, /* Polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "enbl_cursense_comp"}, /* Enable current sense compensation , */\
|
||||
{ 0x6f72, "pwms_clip_lvl"}, /* Set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "boost_cur"}, /* Max coil current , */\
|
||||
{ 0x7041, "bst_slpcmplvl"}, /* Slope compensation current, represents LxF (inductance x frequency) , */\
|
||||
{ 0x7060, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "boost_speed"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "overshoot_correction_lvl"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "dcdcoff_mode"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "dcdc_pwmonly"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7104, "bst_drive"}, /* Binary coded drive setting for boost converter power stage, */\
|
||||
{ 0x7151, "bst_scalecur"}, /* For testing direct control scale current , */\
|
||||
{ 0x7174, "bst_slopecur"}, /* For testing direct control slope current , */\
|
||||
{ 0x71c1, "bst_slope"}, /* Boost slope speed , */\
|
||||
{ 0x71e0, "bst_bypass_bstcur"}, /* Bypass control for boost current settings , */\
|
||||
{ 0x71f0, "bst_bypass_bstfoldback"}, /* Bypass control for boost foldback , */\
|
||||
{ 0x7200, "enbl_bst_engage"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x7210, "enbl_bst_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x7220, "enbl_bst_peak2avg"}, /* Enable boost peak2avg functionality , */\
|
||||
{ 0x7230, "enbl_bst_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x7240, "enbl_bst_power"}, /* Enable line of the powerstage , */\
|
||||
{ 0x7250, "enbl_bst_slopecur"}, /* Enable bit of max-current DAC , */\
|
||||
{ 0x7260, "enbl_bst_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x7270, "enbl_bst_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x7280, "enbl_bst_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x7290, "enbl_bst_windac"}, /* Enable window DAC , */\
|
||||
{ 0x72a5, "bst_windac"}, /* For testing direct control windac , */\
|
||||
{ 0x7300, "boost_alg"}, /* Control for boost adaptive loop gain , */\
|
||||
{ 0x7311, "boost_loopgain"}, /* DCDC boost loopgain setting , */\
|
||||
{ 0x7331, "bst_freq"}, /* DCDC boost frequency control , */\
|
||||
{ 0x7350, "disable_artf654484_fix"}, /* Disables the fix for artf654484 (loss of efficiency when Vbst is close to Vbat), */\
|
||||
{ 0x7360, "disable_artf676996_fix"}, /* Disables the fix for artf676996 (OCP booster triggered when Vtrgt is just above Vbat), */\
|
||||
{ 0x7371, "ref_bst_irefdist_set_ctrl"}, /* Scaling of reference current for booster OCP , */\
|
||||
{ 0x7420, "disable_dynamic_freq"}, /* Disables the dynamic frequency switching due to flag_voutcomp86/93, */\
|
||||
{ 0x7430, "boost_track"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "boost_trip_lvl_1st"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "boost_hold_time"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "sel_dcdc_envelope_8fs"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74f0, "ignore_flag_voutcomp86"}, /* Determines the maximum PWM frequency be the most efficient in relation to the Booster inductor value, */\
|
||||
{ 0x7534, "boost_trip_lvl_2nd"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "boost_trip_lvl_track"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "enbl_trip_hyst"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7620, "enbl_bst_filter"}, /* Enable the boost filter , */\
|
||||
{ 0x7635, "frst_boost_voltage"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "scnd_boost_voltage"}, /* Second boost voltage level , */\
|
||||
{ 0x8050, "cs_gain_control"}, /* Current sense gain control , */\
|
||||
{ 0x8060, "cs_bypass_gc"}, /* Bypasses the CS gain correction , */\
|
||||
{ 0x8087, "cs_gain"}, /* Current sense gain , */\
|
||||
{ 0x8210, "invertpwm"}, /* Current sense common mode feedback pwm invert control, */\
|
||||
{ 0x8305, "cs_ktemp"}, /* Current sense temperature compensation trimming (1 - VALUE*TEMP)*signal, */\
|
||||
{ 0x8364, "cs_ktemp2"}, /* Second order temperature compensation coefficient , */\
|
||||
{ 0x8400, "cs_adc_bsoinv"}, /* Bitstream inversion for current sense ADC , */\
|
||||
{ 0x8440, "cs_adc_nortz"}, /* Return to zero for current sense ADC , */\
|
||||
{ 0x8490, "cs_adc_slowdel"}, /* Select delay for current sense ADC (internal decision circuitry), */\
|
||||
{ 0x8510, "cs_classd_tran_skip"}, /* Skip current sense connection during a classD amplifier transition, */\
|
||||
{ 0x8530, "cs_inn_short"}, /* Short current sense negative to common mode , */\
|
||||
{ 0x8540, "cs_inp_short"}, /* Short current sense positive to common mode , */\
|
||||
{ 0x8550, "cs_ldo_bypass"}, /* Bypass current sense LDO , */\
|
||||
{ 0x8560, "cs_ldo_pulldown"}, /* Pull down current sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8574, "cs_ldo_voset"}, /* Current sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8700, "enbl_cs_adc"}, /* Enable current sense ADC , */\
|
||||
{ 0x8710, "enbl_cs_inn1"}, /* Enable connection of current sense negative1 , */\
|
||||
{ 0x8720, "enbl_cs_inn2"}, /* Enable connection of current sense negative2 , */\
|
||||
{ 0x8730, "enbl_cs_inp1"}, /* Enable connection of current sense positive1 , */\
|
||||
{ 0x8740, "enbl_cs_inp2"}, /* Enable connection of current sense positive2 , */\
|
||||
{ 0x8750, "enbl_cs_ldo"}, /* Enable current sense LDO , */\
|
||||
{ 0x8780, "enbl_cs_vbatldo"}, /* Enable of current sense LDO , */\
|
||||
{ 0x8790, "enbl_dc_filter"}, /* Control for enabling the DC blocking filter for voltage and current sense, */\
|
||||
{ 0x8850, "vs_gain_control"}, /* Voltage sense gain control , */\
|
||||
{ 0x8860, "vs_bypass_gc"}, /* Bypasses the VS gain correction , */\
|
||||
{ 0x8887, "vs_gain"}, /* Voltage sense gain , */\
|
||||
{ 0x8c00, "vs_adc_bsoinv"}, /* Bitstream inversion for voltage sense ADC , */\
|
||||
{ 0x8c40, "vs_adc_nortz"}, /* Return to zero for voltage sense ADC , */\
|
||||
{ 0x8c90, "vs_adc_slowdel"}, /* Select delay for voltage sense ADC (internal decision circuitry), */\
|
||||
{ 0x8d30, "vs_inn_short"}, /* Short voltage sense negative to common mode , */\
|
||||
{ 0x8d40, "vs_inp_short"}, /* Short voltage sense positive to common mode , */\
|
||||
{ 0x8d50, "vs_ldo_bypass"}, /* Bypass voltage sense LDO , */\
|
||||
{ 0x8d60, "vs_ldo_pulldown"}, /* Pull down voltage sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8d74, "vs_ldo_voset"}, /* Voltage sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8f00, "enbl_vs_adc"}, /* Enable voltage sense ADC (Direct Control only only others done by manager), */\
|
||||
{ 0x8f10, "enbl_vs_inn1"}, /* Enable connection of voltage sense negative1 , */\
|
||||
{ 0x8f20, "enbl_vs_inn2"}, /* Enable connection of voltage sense negative2 , */\
|
||||
{ 0x8f30, "enbl_vs_inp1"}, /* Enable connection of voltage sense positive1 , */\
|
||||
{ 0x8f40, "enbl_vs_inp2"}, /* Enable connection of voltage sense positive2 , */\
|
||||
{ 0x8f50, "enbl_vs_ldo"}, /* Enable voltage sense LDO (Direct Control only only others done by manager), */\
|
||||
{ 0x8f80, "enbl_vs_vbatldo"}, /* Enable of voltage sense LDO (Direct Control only others done by manager), */\
|
||||
{ 0xa007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_protected registers (default for engineering), */\
|
||||
{ 0xa107, "mtpkey2"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "key01_locked"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "key02_locked"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "mtp_man_address_in"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa330, "man_copy_mtp_to_iic"}, /* Start copying single word from mtp to I2C mtp register, */\
|
||||
{ 0xa340, "man_copy_iic_to_mtp"}, /* Start copying single word from I2C mtp register to mtp, */\
|
||||
{ 0xa350, "auto_copy_mtp_to_iic"}, /* Start copying all the data from mtp to I2C mtp registers, */\
|
||||
{ 0xa360, "auto_copy_iic_to_mtp"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0xa400, "faim_set_clkws"}, /* Sets the faim controller clock wait state register, */\
|
||||
{ 0xa410, "faim_sel_evenrows"}, /* All even rows of the faim are selected, active high, */\
|
||||
{ 0xa420, "faim_sel_oddrows"}, /* All odd rows of the faim are selected, all rows in combination with sel_evenrows, */\
|
||||
{ 0xa430, "faim_program_only"}, /* Skip the erase access at wr_faim command (write-program-marginread), */\
|
||||
{ 0xa440, "faim_erase_only"}, /* Skip the program access at wr_faim command (write-erase-marginread), */\
|
||||
{ 0xa50f, "mtp_man_data_out_msb"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "mtp_man_data_out_lsb"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "mtp_man_data_in_msb"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "mtp_man_data_in_lsb"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb010, "bypass_ocpcounter"}, /* Bypass OCP Counter , */\
|
||||
{ 0xb020, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0xb030, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0xb040, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0xb050, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0xb060, "bypass_lost_clk"}, /* Bypass lost clock detector , */\
|
||||
{ 0xb070, "ctrl_vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0xb087, "ocp_threshold"}, /* OCP threshold level , */\
|
||||
{ 0xb108, "ext_temp"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "ext_temp_sel"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xb200, "bypass_ovpglitchfilter"}, /* Bypass glitch filter on over voltage protection signal from analog, */\
|
||||
{ 0xb210, "enbl_ovp_alarm_state"}, /* Allow manager to go into alarm state when OVP (only when ctrl_vpalarm is 0), */\
|
||||
{ 0xb220, "amp_in_tristate_when_ovp"}, /* Brings amplifier in tristate when OVP (only when ctrl_enbl_ovp_alarm_state is 0) , */\
|
||||
{ 0xc000, "use_direct_ctrls"}, /* Direct control to overrule several functions for testing, */\
|
||||
{ 0xc010, "rst_datapath"}, /* Direct control for datapath reset , */\
|
||||
{ 0xc020, "rst_cgu"}, /* Direct control for cgu reset , */\
|
||||
{ 0xc038, "enbl_ref"}, /* Switch on the analog references, each part of the references can be switched on/off individually, */\
|
||||
{ 0xc0c0, "use_direct_vs_ctrls"}, /* Voltage sense direct control to overrule several functions for testing, */\
|
||||
{ 0xc0d0, "enbl_ringo"}, /* Enable the ring oscillator for test purpose , */\
|
||||
{ 0xc0e0, "enbl_pll"}, /* Enables PLL in I2C direct control mode only , */\
|
||||
{ 0xc0f0, "enbl_fro"}, /* Enables FRO8M in I2C direct control mode only , */\
|
||||
{ 0xc100, "enbl_tsense"}, /* Temperature sensor enable control - I2C direct mode, */\
|
||||
{ 0xc110, "tsense_hibias"}, /* Bit to set the biasing in temp sensor to high , */\
|
||||
{ 0xc120, "enbl_flag_vbg"}, /* Enable flagging of bandgap out of control , */\
|
||||
{ 0xc20f, "abist_offset"}, /* Offset control for ABIST testing (two's complement), */\
|
||||
{ 0xc300, "bypasslatch"}, /* Bypass latch , */\
|
||||
{ 0xc311, "sourcea"}, /* Set OUTA to , */\
|
||||
{ 0xc331, "sourceb"}, /* Set OUTB to , */\
|
||||
{ 0xc350, "inverta"}, /* Invert pwma test signal , */\
|
||||
{ 0xc360, "invertb"}, /* Invert pwmb test signal , */\
|
||||
{ 0xc376, "pulselength"}, /* Pulse length setting test input for amplifier (PWM clock 2048/4096 Fs), */\
|
||||
{ 0xc3e0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0xc400, "bst_bypasslatch"}, /* Bypass latch in boost converter , */\
|
||||
{ 0xc411, "bst_source"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0xc430, "bst_invertb"}, /* Invert PWMbst test signal , */\
|
||||
{ 0xc444, "bst_pulselength"}, /* Pulse length setting test input for boost converter , */\
|
||||
{ 0xc490, "test_bst_ctrlsthv"}, /* Test mode for boost control stage , */\
|
||||
{ 0xc4a0, "test_bst_iddq"}, /* IDDQ testing in power stage of boost converter , */\
|
||||
{ 0xc4b0, "test_bst_rdson"}, /* RDSON testing - boost power stage , */\
|
||||
{ 0xc4c0, "test_bst_cvi"}, /* CVI testing - boost power stage , */\
|
||||
{ 0xc4d0, "test_bst_ocp"}, /* Boost OCP. For old OCP (ctrl_reversebst is 0), For new OCP (ctrl_reversebst is 1), */\
|
||||
{ 0xc4e0, "test_bst_sense"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0xc500, "test_cvi"}, /* Analog BIST, switch choose which transistor will be used as current source (also cross coupled sources possible), */\
|
||||
{ 0xc510, "test_discrete"}, /* Test function noise measurement , */\
|
||||
{ 0xc520, "test_iddq"}, /* Set the power stages in iddq mode for gate stress., */\
|
||||
{ 0xc540, "test_rdson"}, /* Analog BIST, switch to enable Rdson measurement , */\
|
||||
{ 0xc550, "test_sdelta"}, /* Analog BIST, noise test , */\
|
||||
{ 0xc570, "test_enbl_cs"}, /* Enable for digimux mode of current sense , */\
|
||||
{ 0xc580, "test_enbl_vs"}, /* Enable for digimux mode of voltage sense , */\
|
||||
{ 0xc600, "enbl_pwm_dcc"}, /* Enables direct control of pwm duty cycle for DCDC power stage, */\
|
||||
{ 0xc613, "pwm_dcc_cnt"}, /* Control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0xc650, "enbl_ldo_stress"}, /* Enable stress of internal supply voltages powerstages, */\
|
||||
{ 0xc707, "digimuxa_sel"}, /* DigimuxA input selection control routed to DATAO (see Digimux list for details), */\
|
||||
{ 0xc787, "digimuxb_sel"}, /* DigimuxB input selection control routed to INT (see Digimux list for details), */\
|
||||
{ 0xc807, "digimuxc_sel"}, /* DigimuxC input selection control routed to ADS1 (see Digimux list for details), */\
|
||||
{ 0xc981, "int_ehs"}, /* Speed/load setting for INT IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xc9c0, "hs_mode"}, /* I2C high speed mode control , */\
|
||||
{ 0xca00, "enbl_anamux1"}, /* Enable anamux1 , */\
|
||||
{ 0xca10, "enbl_anamux2"}, /* Enable anamux2 , */\
|
||||
{ 0xca20, "enbl_anamux3"}, /* Enable anamux3 , */\
|
||||
{ 0xca30, "enbl_anamux4"}, /* Enable anamux4 , */\
|
||||
{ 0xca74, "anamux1"}, /* Anamux selection control - anamux on TEST1 , */\
|
||||
{ 0xcb04, "anamux2"}, /* Anamux selection control - anamux on TEST2 , */\
|
||||
{ 0xcb53, "anamux3"}, /* Anamux selection control - anamux on VSN/TEST3 , */\
|
||||
{ 0xcba3, "anamux4"}, /* Anamux selection control - anamux on VSP/TEST4 , */\
|
||||
{ 0xcd05, "pll_inseli"}, /* PLL INSELI - PLL direct bandwidth control mode, only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "pll_inselp"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "pll_inselr"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "pll_bandsel"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "pll_ndec"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "pll_mdec_msb"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "pll_bypass"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "pll_directi"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "pll_directo"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "pll_frm_clockstable"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "pll_frm"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "pll_mdec_lsb"}, /* Bits 15 to 0 of PLL MDEC in direct control mode, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "pll_pdec"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "use_direct_pll_ctrl"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "pll_limup_off"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "sel_pll_startup_time"}, /* PLL startup time selection control , */\
|
||||
{ 0xd10f, "tsig_freq_lsb"}, /* Internal sinus test generator frequency control , */\
|
||||
{ 0xd202, "tsig_freq_msb"}, /* Internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0xd230, "inject_tsig"}, /* Control bit to switch to internal sinus test generator, */\
|
||||
{ 0xd283, "tsig_gain"}, /* Test signal gain , */\
|
||||
{ 0xd300, "adc10_reset"}, /* Reset for ADC10 - I2C direct control mode , */\
|
||||
{ 0xd311, "adc10_test"}, /* Test mode selection signal for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd332, "adc10_sel"}, /* Select the input to convert for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd364, "adc10_prog_sample"}, /* ADC10 program sample setting - I2C direct control mode, */\
|
||||
{ 0xd3b0, "adc10_enbl"}, /* Enable ADC10 - I2C direct control mode , */\
|
||||
{ 0xd3c0, "bypass_lp_vbat"}, /* Bypass control for Low pass filter in batt sensor , */\
|
||||
{ 0xd409, "data_adc10_tempbat"}, /* ADC 10 data output data for testing , */\
|
||||
{ 0xd507, "ctrl_digtoana_hidden"}, /* Spare digital to analog control bits - Hidden , */\
|
||||
{ 0xd580, "enbl_clk_out_of_range"}, /* Clock out of range , */\
|
||||
{ 0xd721, "datao_ehs"}, /* Speed/load setting for DATAO IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xd740, "bck_ehs"}, /* High-speed and standard/fast mode selection for BCK IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd750, "datai_ehs"}, /* High-speed and standard/fast mode selection for DATAI IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd800, "source_in_testmode"}, /* TDM source in test mode (return only current and voltage sense), */\
|
||||
{ 0xd810, "gainatt_tdm_feedback"}, /* GainAtt feedback to TDM , */\
|
||||
{ 0xd822, "test_parametric_io"}, /* Test io parametric , */\
|
||||
{ 0xd861, "test_spare_out1"}, /* Test spare out 1 , */\
|
||||
{ 0xd880, "bst_dcmbst"}, /* DCM boost , */\
|
||||
{ 0xd8c3, "test_spare_out2"}, /* Test spare out 1 , */\
|
||||
{ 0xd900, "enbl_frocal"}, /* Enable FRO calibration , */\
|
||||
{ 0xd910, "start_fro_calibration"}, /* Start FRO8 Calibration , */\
|
||||
{ 0xd920, "enbl_irefcal"}, /* Enable IREF calibration , */\
|
||||
{ 0xd930, "start_iref_calibration"}, /* Start IREF Calibration , */\
|
||||
{ 0xda00, "fro_calibration_done"}, /* FRO8 Calibration done - Read Only , */\
|
||||
{ 0xda15, "fro_auto_trim_val"}, /* Calibration value from auto calibration, to be written into MTP - Read Only, */\
|
||||
{ 0xda80, "iref_calibration_done"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xda94, "iref_auto_trim_val"}, /* Calibration value from auto calibration, to be written into MTP - Read Only, */\
|
||||
{ 0xdae0, "iref_calibration_error"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xe00f, "sw_profile"}, /* Software profile data , */\
|
||||
{ 0xe10f, "sw_vstep"}, /* Software vstep information , */\
|
||||
{ 0xf000, "calibration_onetime"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "calibr_ron_done"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "calibr_dcdc_api_calibrate"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "calibr_dcdc_delta_sign"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "calibr_dcdc_delta"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "calibr_speaker_info"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf105, "calibr_vout_offset"}, /* DCDC offset calibration 2's complement (key1 protected), */\
|
||||
{ 0xf203, "calibr_gain"}, /* HW gain module (2's complement) , */\
|
||||
{ 0xf245, "calibr_offset"}, /* Offset for amplifier, HW gain module (2's complement), */\
|
||||
{ 0xf307, "calibr_gain_vs1"}, /* Voltage sense gain when external voltage sensing input is selected, */\
|
||||
{ 0xf387, "calibr_gain_vs2"}, /* Voltage sense gain when internal voltage sensing input is selected, */\
|
||||
{ 0xf407, "vs_trim1"}, /* VS Trimming when external voltage sensing input is selected, */\
|
||||
{ 0xf487, "vs_trim2"}, /* VS Trimming when internal voltage sensing input is selected, */\
|
||||
{ 0xf50f, "calibr_R25C_R"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xf607, "calibr_gain_cs"}, /* Current sense gain (signed two's complement format), */\
|
||||
{ 0xf706, "ctrl_offset_a"}, /* Offset of level shifter A , */\
|
||||
{ 0xf786, "ctrl_offset_b"}, /* Offset of amplifier level shifter B , */\
|
||||
{ 0xf806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0xf870, "htol_iic_addr_en"}, /* HTOL I2C address enable control , */\
|
||||
{ 0xf884, "calibr_temp_offset"}, /* Temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0xf8d2, "calibr_temp_gain"}, /* Temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0xf900, "mtp_lock_dcdcoff_mode"}, /* Disable function dcdcoff_mode , */\
|
||||
{ 0xf910, "mtp_pll_lut_sel"}, /* PLL lookup table selection control , */\
|
||||
{ 0xf920, "mtp_lock_bypass_clipper"}, /* Disable function bypass_clipper , */\
|
||||
{ 0xf930, "mtp_lock_max_dcdc_voltage"}, /* Force Boost in follower mode , */\
|
||||
{ 0xf943, "calibr_vbg_trim"}, /* Bandgap trimming control , */\
|
||||
{ 0xf990, "mtp_enbl_pwm_delay_clock_gating"}, /* PWM delay clock auto gating , */\
|
||||
{ 0xf9a0, "mtp_enbl_ocp_clock_gating"}, /* OCP clock auto gating , */\
|
||||
{ 0xfa0f, "mtpdataA"}, /* MTPdataA (key1 protected) , */\
|
||||
{ 0xfb0f, "mtpdataB"}, /* MTPdataB (key1 protected) , */\
|
||||
{ 0xfc0f, "mtpdataC"}, /* MTPdataC (key1 protected) , */\
|
||||
{ 0xfd0f, "mtpdataD"}, /* MTPdataD (key1 protected) , */\
|
||||
{ 0xfe0f, "mtpdataE"}, /* MTPdataE (key1 protected) , */\
|
||||
{ 0xff05, "fro_trim"}, /* 8 MHz oscillator trim code , */\
|
||||
{ 0xff61, "fro_shortnwell"}, /* Short 4 or 6 n-well resistors , */\
|
||||
{ 0xff81, "fro_boost"}, /* Self bias current selection , */\
|
||||
{ 0xffa4, "calibr_iref_trim"}, /* Trimming control of reference current for OCP , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
#if 0
|
||||
enum tfa9873_irq {
|
||||
tfa9873_irq_stvdds = 0,
|
||||
tfa9873_irq_stbstoc = 1,
|
||||
tfa9873_irq_stotds = 2,
|
||||
tfa9873_irq_stocpr = 3,
|
||||
tfa9873_irq_stuvds = 4,
|
||||
tfa9873_irq_stmanalarm = 5,
|
||||
tfa9873_irq_sttdmer = 6,
|
||||
tfa9873_irq_stnoclk = 7,
|
||||
tfa9873_irq_max = 8,
|
||||
tfa9873_irq_all = -1 /* all irqs */};
|
||||
#endif//
|
||||
#define TFA9873_IRQ_NAMETABLE static tfaIrqName_t Tfa9873IrqNames[]= {\
|
||||
{ 0, "STVDDS"},\
|
||||
{ 1, "STBSTOC"},\
|
||||
{ 2, "STOTDS"},\
|
||||
{ 3, "STOCPR"},\
|
||||
{ 4, "STUVDS"},\
|
||||
{ 5, "STMANALARM"},\
|
||||
{ 6, "STTDMER"},\
|
||||
{ 7, "STNOCLK"},\
|
||||
{ 8, "8"},\
|
||||
};
|
||||
#endif /* _TFA9873_TFAFIELDNAMES_B0_H */
|
||||
843
techpack/audio/asoc/codecs/tfa9874/inc/tfa9874_tfafieldnames.h
Executable file
843
techpack/audio/asoc/codecs/tfa9874/inc/tfa9874_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,843 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: tfa9874_tfaFieldnames_last.h
|
||||
* This file was generated automatically on 09/28/18 at 11:20:52.
|
||||
* Source file: TFA9874N1C0_DefaultI2CSettings.xlsx
|
||||
*/
|
||||
|
||||
#ifndef _TFA9874_TFAFIELDNAMES_H
|
||||
#define _TFA9874_TFAFIELDNAMES_H
|
||||
|
||||
|
||||
#define TFA9874_I2CVERSION 1.16
|
||||
|
||||
typedef enum Tfa9874BfEnumList {
|
||||
TFA9874_BF_PWDN = 0x0000, /*!< Powerdown selection */
|
||||
TFA9874_BF_I2CR = 0x0010, /*!< I2C Reset - Auto clear */
|
||||
TFA9874_BF_AMPE = 0x0030, /*!< Activate Amplifier */
|
||||
TFA9874_BF_DCA = 0x0040, /*!< Activate DC-to-DC converter */
|
||||
TFA9874_BF_INTP = 0x0071, /*!< Interrupt config */
|
||||
TFA9874_BF_BYPOCP= 0x00b0, /*!< Bypass OCP */
|
||||
TFA9874_BF_TSTOCP= 0x00c0, /*!< OCP testing control */
|
||||
TFA9874_BF_MANSCONF= 0x0120, /*!< I2C configured */
|
||||
TFA9874_BF_MANAOOSC= 0x0140, /*!< Internal osc off at PWDN */
|
||||
TFA9874_BF_MUTETO= 0x01d0, /*!< Time out SB mute sequence */
|
||||
TFA9874_BF_OPENMTP= 0x01e0, /*!< Control for FAIM protection */
|
||||
TFA9874_BF_AUDFS = 0x0203, /*!< Sample rate (fs) */
|
||||
TFA9874_BF_INPLEV= 0x0240, /*!< TDM output attenuation */
|
||||
TFA9874_BF_FRACTDEL= 0x0255, /*!< V/I Fractional delay */
|
||||
TFA9874_BF_REV = 0x030f, /*!< Revision info */
|
||||
TFA9874_BF_REFCKEXT= 0x0401, /*!< PLL external ref clock */
|
||||
TFA9874_BF_REFCKSEL= 0x0420, /*!< PLL internal ref clock */
|
||||
TFA9874_BF_SSFAIME= 0x05c0, /*!< Sub-system FAIM */
|
||||
TFA9874_BF_AMPOCRT= 0x0802, /*!< Amplifier on-off criteria for shutdown */
|
||||
TFA9874_BF_VDDS = 0x1000, /*!< POR */
|
||||
TFA9874_BF_DCOCPOK= 0x1010, /*!< DCDC OCP nmos (sticky register , clear on read) */
|
||||
TFA9874_BF_OTDS = 0x1020, /*!< OTP alarm (sticky register , clear on read) */
|
||||
TFA9874_BF_OCDS = 0x1030, /*!< OCP amplifier (sticky register , clear on read) */
|
||||
TFA9874_BF_UVDS = 0x1040, /*!< UVP alarm (sticky register , clear on read) */
|
||||
TFA9874_BF_MANALARM= 0x1050, /*!< Alarm state */
|
||||
TFA9874_BF_TDMERR= 0x1060, /*!< TDM error */
|
||||
TFA9874_BF_NOCLK = 0x1070, /*!< Lost clock (sticky register , clear on read) */
|
||||
TFA9874_BF_DCIL = 0x1100, /*!< DCDC current limiting */
|
||||
TFA9874_BF_DCDCA = 0x1110, /*!< DCDC active (sticky register , clear on read) */
|
||||
TFA9874_BF_DCHVBAT= 0x1130, /*!< DCDC level 1x */
|
||||
TFA9874_BF_DCH114= 0x1140, /*!< DCDC level 1.14x */
|
||||
TFA9874_BF_DCH107= 0x1150, /*!< DCDC level 1.07x */
|
||||
TFA9874_BF_PLLS = 0x1160, /*!< PLL lock */
|
||||
TFA9874_BF_CLKS = 0x1170, /*!< Clocks stable */
|
||||
TFA9874_BF_TDMLUTER= 0x1180, /*!< TDM LUT error */
|
||||
TFA9874_BF_TDMSTAT= 0x1192, /*!< TDM status bits */
|
||||
TFA9874_BF_MTPB = 0x11c0, /*!< MTP busy */
|
||||
TFA9874_BF_SWS = 0x11d0, /*!< Amplifier engage */
|
||||
TFA9874_BF_AMPS = 0x11e0, /*!< Amplifier enable */
|
||||
TFA9874_BF_AREFS = 0x11f0, /*!< References enable */
|
||||
TFA9874_BF_OCPOAP= 0x1300, /*!< OCPOK pmos A */
|
||||
TFA9874_BF_OCPOAN= 0x1310, /*!< OCPOK nmos A */
|
||||
TFA9874_BF_OCPOBP= 0x1320, /*!< OCPOK pmos B */
|
||||
TFA9874_BF_OCPOBN= 0x1330, /*!< OCPOK nmos B */
|
||||
TFA9874_BF_OVDS = 0x1380, /*!< OVP alarm */
|
||||
TFA9874_BF_CLIPS = 0x1390, /*!< Amplifier clipping */
|
||||
TFA9874_BF_ADCCR = 0x13a0, /*!< Control ADC */
|
||||
TFA9874_BF_MANWAIT1= 0x13c0, /*!< Wait HW I2C settings */
|
||||
TFA9874_BF_MANMUTE= 0x13e0, /*!< Audio mute sequence */
|
||||
TFA9874_BF_MANOPER= 0x13f0, /*!< Operating state */
|
||||
TFA9874_BF_CLKOOR= 0x1420, /*!< External clock status */
|
||||
TFA9874_BF_MANSTATE= 0x1433, /*!< Device manager status */
|
||||
TFA9874_BF_DCMODE= 0x1471, /*!< DCDC mode status bits */
|
||||
TFA9874_BF_BATS = 0x1509, /*!< Battery voltage (V) */
|
||||
TFA9874_BF_TEMPS = 0x1608, /*!< IC Temperature (C) */
|
||||
TFA9874_BF_VDDPS = 0x1709, /*!< IC VDDP voltage ( 1023*VDDP/13 V) */
|
||||
TFA9874_BF_TDME = 0x2040, /*!< Enable interface */
|
||||
TFA9874_BF_TDMMODE= 0x2050, /*!< Slave/master */
|
||||
TFA9874_BF_TDMCLINV= 0x2060, /*!< Reception data to BCK clock */
|
||||
TFA9874_BF_TDMFSLN= 0x2073, /*!< FS length (master mode only) */
|
||||
TFA9874_BF_TDMFSPOL= 0x20b0, /*!< FS polarity */
|
||||
TFA9874_BF_TDMNBCK= 0x20c3, /*!< N-BCK's in FS */
|
||||
TFA9874_BF_TDMSLOTS= 0x2103, /*!< N-slots in Frame */
|
||||
TFA9874_BF_TDMSLLN= 0x2144, /*!< N-bits in slot */
|
||||
TFA9874_BF_TDMBRMG= 0x2194, /*!< N-bits remaining */
|
||||
TFA9874_BF_TDMDEL= 0x21e0, /*!< data delay to FS */
|
||||
TFA9874_BF_TDMADJ= 0x21f0, /*!< data adjustment */
|
||||
TFA9874_BF_TDMOOMP= 0x2201, /*!< Received audio compression */
|
||||
TFA9874_BF_TDMSSIZE= 0x2224, /*!< Sample size per slot */
|
||||
TFA9874_BF_TDMTXDFO= 0x2271, /*!< Format unused bits */
|
||||
TFA9874_BF_TDMTXUS0= 0x2291, /*!< Format unused slots DATAO */
|
||||
TFA9874_BF_TDMSPKE= 0x2300, /*!< Control audio tdm channel in 0 (spkr + dcdc) */
|
||||
TFA9874_BF_TDMDCE= 0x2310, /*!< Control audio tdm channel in 1 (dcdc) */
|
||||
TFA9874_BF_TDMCSE= 0x2330, /*!< current sense vbat temperature and vddp feedback */
|
||||
TFA9874_BF_TDMVSE= 0x2340, /*!< Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9874_BF_TDMSPKS= 0x2603, /*!< tdm slot for sink 0 (speaker + dcdc) */
|
||||
TFA9874_BF_TDMDCS= 0x2643, /*!< tdm slot for sink 1 (dcdc) */
|
||||
TFA9874_BF_TDMCSS= 0x26c3, /*!< Slot Position of current sense vbat temperature and vddp feedback */
|
||||
TFA9874_BF_TDMVSS= 0x2703, /*!< Slot Position of Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9874_BF_ISTVDDS= 0x4000, /*!< Status POR */
|
||||
TFA9874_BF_ISTBSTOC= 0x4010, /*!< Status DCDC OCP */
|
||||
TFA9874_BF_ISTOTDS= 0x4020, /*!< Status OTP alarm */
|
||||
TFA9874_BF_ISTOCPR= 0x4030, /*!< Status ocp alarm */
|
||||
TFA9874_BF_ISTUVDS= 0x4040, /*!< Status UVP alarm */
|
||||
TFA9874_BF_ISTMANALARM= 0x4050, /*!< Status nanager Alarm state */
|
||||
TFA9874_BF_ISTTDMER= 0x4060, /*!< Status tdm error */
|
||||
TFA9874_BF_ISTNOCLK= 0x4070, /*!< Status lost clock */
|
||||
TFA9874_BF_ICLVDDS= 0x4400, /*!< Clear POR */
|
||||
TFA9874_BF_ICLBSTOC= 0x4410, /*!< Clear DCDC OCP */
|
||||
TFA9874_BF_ICLOTDS= 0x4420, /*!< Clear OTP alarm */
|
||||
TFA9874_BF_ICLOCPR= 0x4430, /*!< Clear ocp alarm */
|
||||
TFA9874_BF_ICLUVDS= 0x4440, /*!< Clear UVP alarm */
|
||||
TFA9874_BF_ICLMANALARM= 0x4450, /*!< clear nanager Alarm state */
|
||||
TFA9874_BF_ICLTDMER= 0x4460, /*!< Clear tdm error */
|
||||
TFA9874_BF_ICLNOCLK= 0x4470, /*!< Clear lost clk */
|
||||
TFA9874_BF_IEVDDS= 0x4800, /*!< Enable por */
|
||||
TFA9874_BF_IEBSTOC= 0x4810, /*!< Enable DCDC OCP */
|
||||
TFA9874_BF_IEOTDS= 0x4820, /*!< Enable OTP alarm */
|
||||
TFA9874_BF_IEOCPR= 0x4830, /*!< Enable ocp alarm */
|
||||
TFA9874_BF_IEUVDS= 0x4840, /*!< Enable UVP alarm */
|
||||
TFA9874_BF_IEMANALARM= 0x4850, /*!< Enable nanager Alarm state */
|
||||
TFA9874_BF_IETDMER= 0x4860, /*!< Enable tdm error */
|
||||
TFA9874_BF_IENOCLK= 0x4870, /*!< Enable lost clk */
|
||||
TFA9874_BF_IPOVDDS= 0x4c00, /*!< Polarity por */
|
||||
TFA9874_BF_IPOBSTOC= 0x4c10, /*!< Polarity DCDC OCP */
|
||||
TFA9874_BF_IPOOTDS= 0x4c20, /*!< Polarity OTP alarm */
|
||||
TFA9874_BF_IPOOCPR= 0x4c30, /*!< Polarity ocp alarm */
|
||||
TFA9874_BF_IPOUVDS= 0x4c40, /*!< Polarity UVP alarm */
|
||||
TFA9874_BF_IPOMANALARM= 0x4c50, /*!< Polarity nanager Alarm state */
|
||||
TFA9874_BF_IPOTDMER= 0x4c60, /*!< Polarity tdm error */
|
||||
TFA9874_BF_IPONOCLK= 0x4c70, /*!< Polarity lost clk */
|
||||
TFA9874_BF_BSSCR = 0x5001, /*!< Battery Safeguard attack time */
|
||||
TFA9874_BF_BSST = 0x5023, /*!< Battery Safeguard threshold voltage level */
|
||||
TFA9874_BF_BSSRL = 0x5061, /*!< Battery Safeguard maximum reduction */
|
||||
TFA9874_BF_VBATFLTL= 0x5080, /*!< vbat filter limit */
|
||||
TFA9874_BF_BSSR = 0x50e0, /*!< Battery voltage read out */
|
||||
TFA9874_BF_BSSBY = 0x50f0, /*!< Bypass battery safeguard */
|
||||
TFA9874_BF_BSSS = 0x5100, /*!< Vbat prot steepness */
|
||||
TFA9874_BF_HPFBYP= 0x5150, /*!< Bypass HPF */
|
||||
TFA9874_BF_DPSA = 0x5170, /*!< Enable DPSA */
|
||||
TFA9874_BF_CLIPCTRL= 0x5222, /*!< Clip control setting */
|
||||
TFA9874_BF_AMPGAIN= 0x5257, /*!< Amplifier gain */
|
||||
TFA9874_BF_SLOPEE= 0x52d0, /*!< Enables slope control */
|
||||
TFA9874_BF_SLOPESET= 0x52e0, /*!< Slope speed setting (bin. coded) */
|
||||
TFA9874_BF_TDMDCG= 0x6123, /*!< Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE) */
|
||||
TFA9874_BF_TDMSPKG= 0x6163, /*!< Total gain depending on INPLEV setting (channel 0) */
|
||||
TFA9874_BF_LNMODE= 0x62e1, /*!< ctrl select mode */
|
||||
TFA9874_BF_LPM1MODE= 0x64e1, /*!< low power mode control */
|
||||
TFA9874_BF_TDMSRCMAP= 0x6802, /*!< tdm source mapping */
|
||||
TFA9874_BF_TDMSRCAS= 0x6831, /*!< Sensed value A */
|
||||
TFA9874_BF_TDMSRCBS= 0x6851, /*!< Sensed value B */
|
||||
TFA9874_BF_TDMSRCACLIP= 0x6871, /*!< clip information (analog /digital) for source0 */
|
||||
TFA9874_BF_TDMSRCBCLIP= 0x6891, /*!< clip information (analog /digital) for source1 */
|
||||
TFA9874_BF_LP1 = 0x6e10, /*!< low power mode 1 detection */
|
||||
TFA9874_BF_LA = 0x6e20, /*!< low amplitude detection */
|
||||
TFA9874_BF_VDDPH = 0x6e30, /*!< vddp greater than vbat */
|
||||
TFA9874_BF_DELCURCOMP= 0x6f02, /*!< delay to allign compensation signal with current sense signal */
|
||||
TFA9874_BF_SIGCURCOMP= 0x6f40, /*!< polarity of compensation for current sense */
|
||||
TFA9874_BF_ENCURCOMP= 0x6f50, /*!< enable current sense compensation */
|
||||
TFA9874_BF_LVLCLPPWM= 0x6f72, /*!< set the amount of pwm pulse that may be skipped before clip-flag is triggered */
|
||||
TFA9874_BF_DCMCC = 0x7033, /*!< Max coil current */
|
||||
TFA9874_BF_DCCV = 0x7071, /*!< Slope compensation current, represents LxF (inductance x frequency) value */
|
||||
TFA9874_BF_DCIE = 0x7090, /*!< Adaptive boost mode */
|
||||
TFA9874_BF_DCSR = 0x70a0, /*!< Soft ramp up/down */
|
||||
TFA9874_BF_DCDIS = 0x70e0, /*!< DCDC on/off */
|
||||
TFA9874_BF_DCPWM = 0x70f0, /*!< DCDC PWM only mode */
|
||||
TFA9874_BF_DCTRACK= 0x7430, /*!< Boost algorithm selection, effective only when boost_intelligent is set to 1 */
|
||||
TFA9874_BF_DCTRIP= 0x7444, /*!< 1st Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9874_BF_DCHOLD= 0x7494, /*!< Hold time for DCDC booster, effective only when boost_intelligent is set to 1 */
|
||||
TFA9874_BF_DCINT = 0x74e0, /*!< Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1 */
|
||||
TFA9874_BF_DCTRIP2= 0x7534, /*!< 2nd Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9874_BF_DCTRIPT= 0x7584, /*!< Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1 */
|
||||
TFA9874_BF_DCTRIPHYSTE= 0x75f0, /*!< Enable hysteresis on booster trip levels */
|
||||
TFA9874_BF_DCVOF = 0x7635, /*!< First boost voltage level */
|
||||
TFA9874_BF_DCVOS = 0x7695, /*!< Second boost voltage level */
|
||||
TFA9874_BF_MTPK = 0xa107, /*!< MTP KEY2 register */
|
||||
TFA9874_BF_KEY1LOCKED= 0xa200, /*!< Indicates KEY1 is locked */
|
||||
TFA9874_BF_KEY2LOCKED= 0xa210, /*!< Indicates KEY2 is locked */
|
||||
TFA9874_BF_CIMTP = 0xa360, /*!< Start copying data from I2C mtp registers to mtp */
|
||||
TFA9874_BF_MTPRDMSB= 0xa50f, /*!< MSB word of MTP manual read data */
|
||||
TFA9874_BF_MTPRDLSB= 0xa60f, /*!< LSB word of MTP manual read data */
|
||||
TFA9874_BF_EXTTS = 0xb108, /*!< External temperature (C) */
|
||||
TFA9874_BF_TROS = 0xb190, /*!< Select temp Speaker calibration */
|
||||
TFA9874_BF_SWPROFIL= 0xee0f, /*!< Software profile data */
|
||||
TFA9874_BF_SWVSTEP= 0xef0f, /*!< Software vstep information */
|
||||
TFA9874_BF_MTPOTC= 0xf000, /*!< Calibration schedule */
|
||||
TFA9874_BF_MTPEX = 0xf010, /*!< Calibration Ron executed */
|
||||
TFA9874_BF_DCMCCAPI= 0xf020, /*!< Calibration current limit DCDC */
|
||||
TFA9874_BF_DCMCCSB= 0xf030, /*!< Sign bit for delta calibration current limit DCDC */
|
||||
TFA9874_BF_USERDEF= 0xf042, /*!< Calibration delta current limit DCDC */
|
||||
TFA9874_BF_CUSTINFO= 0xf078, /*!< Reserved space for allowing customer to store speaker information */
|
||||
TFA9874_BF_R25C = 0xf50f, /*!< Ron resistance of speaker coil */
|
||||
} Tfa9874BfEnumList_t;
|
||||
#define TFA9874_NAMETABLE static tfaBfName_t Tfa9874DatasheetNames[]= {\
|
||||
{ 0x0, "PWDN"}, /* Powerdown selection , */\
|
||||
{ 0x10, "I2CR"}, /* I2C Reset - Auto clear , */\
|
||||
{ 0x30, "AMPE"}, /* Activate Amplifier , */\
|
||||
{ 0x40, "DCA"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "INTP"}, /* Interrupt config , */\
|
||||
{ 0xb0, "BYPOCP"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "TSTOCP"}, /* OCP testing control , */\
|
||||
{ 0x120, "MANSCONF"}, /* I2C configured , */\
|
||||
{ 0x140, "MANAOOSC"}, /* Internal osc off at PWDN , */\
|
||||
{ 0x1d0, "MUTETO"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "OPENMTP"}, /* Control for FAIM protection , */\
|
||||
{ 0x203, "AUDFS"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "INPLEV"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "FRACTDEL"}, /* V/I Fractional delay , */\
|
||||
{ 0x30f, "REV"}, /* Revision info , */\
|
||||
{ 0x401, "REFCKEXT"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "REFCKSEL"}, /* PLL internal ref clock , */\
|
||||
{ 0x5c0, "SSFAIME"}, /* Sub-system FAIM , */\
|
||||
{ 0x802, "AMPOCRT"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0x1000, "VDDS"}, /* POR , */\
|
||||
{ 0x1010, "DCOCPOK"}, /* DCDC OCP nmos (sticky register , clear on read) , */\
|
||||
{ 0x1020, "OTDS"}, /* OTP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1030, "OCDS"}, /* OCP amplifier (sticky register , clear on read), */\
|
||||
{ 0x1040, "UVDS"}, /* UVP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1050, "MANALARM"}, /* Alarm state , */\
|
||||
{ 0x1060, "TDMERR"}, /* TDM error , */\
|
||||
{ 0x1070, "NOCLK"}, /* Lost clock (sticky register , clear on read) , */\
|
||||
{ 0x1100, "DCIL"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "DCDCA"}, /* DCDC active (sticky register , clear on read) , */\
|
||||
{ 0x1130, "DCHVBAT"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "DCH114"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "DCH107"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "PLLS"}, /* PLL lock , */\
|
||||
{ 0x1170, "CLKS"}, /* Clocks stable , */\
|
||||
{ 0x1180, "TDMLUTER"}, /* TDM LUT error , */\
|
||||
{ 0x1192, "TDMSTAT"}, /* TDM status bits , */\
|
||||
{ 0x11c0, "MTPB"}, /* MTP busy , */\
|
||||
{ 0x11d0, "SWS"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "AMPS"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "AREFS"}, /* References enable , */\
|
||||
{ 0x1300, "OCPOAP"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "OCPOAN"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "OCPOBP"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "OCPOBN"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "OVDS"}, /* OVP alarm , */\
|
||||
{ 0x1390, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "ADCCR"}, /* Control ADC , */\
|
||||
{ 0x13c0, "MANWAIT1"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "MANMUTE"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "MANOPER"}, /* Operating state , */\
|
||||
{ 0x1420, "CLKOOR"}, /* External clock status , */\
|
||||
{ 0x1433, "MANSTATE"}, /* Device manager status , */\
|
||||
{ 0x1471, "DCMODE"}, /* DCDC mode status bits , */\
|
||||
{ 0x1509, "BATS"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "TEMPS"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "VDDPS"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2040, "TDME"}, /* Enable interface , */\
|
||||
{ 0x2050, "TDMMODE"}, /* Slave/master , */\
|
||||
{ 0x2060, "TDMCLINV"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "TDMFSLN"}, /* FS length (master mode only) , */\
|
||||
{ 0x20b0, "TDMFSPOL"}, /* FS polarity , */\
|
||||
{ 0x20c3, "TDMNBCK"}, /* N-BCK's in FS , */\
|
||||
{ 0x2103, "TDMSLOTS"}, /* N-slots in Frame , */\
|
||||
{ 0x2144, "TDMSLLN"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "TDMBRMG"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "TDMDEL"}, /* data delay to FS , */\
|
||||
{ 0x21f0, "TDMADJ"}, /* data adjustment , */\
|
||||
{ 0x2201, "TDMOOMP"}, /* Received audio compression , */\
|
||||
{ 0x2224, "TDMSSIZE"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "TDMTXDFO"}, /* Format unused bits , */\
|
||||
{ 0x2291, "TDMTXUS0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "TDMSPKE"}, /* Control audio tdm channel in 0 (spkr + dcdc) , */\
|
||||
{ 0x2310, "TDMDCE"}, /* Control audio tdm channel in 1 (dcdc) , */\
|
||||
{ 0x2330, "TDMCSE"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "TDMVSE"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "TDMSPKS"}, /* tdm slot for sink 0 (speaker + dcdc) , */\
|
||||
{ 0x2643, "TDMDCS"}, /* tdm slot for sink 1 (dcdc) , */\
|
||||
{ 0x26c3, "TDMCSS"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "TDMVSS"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "ISTVDDS"}, /* Status POR , */\
|
||||
{ 0x4010, "ISTBSTOC"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "ISTOTDS"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "ISTOCPR"}, /* Status ocp alarm , */\
|
||||
{ 0x4040, "ISTUVDS"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "ISTMANALARM"}, /* Status nanager Alarm state , */\
|
||||
{ 0x4060, "ISTTDMER"}, /* Status tdm error , */\
|
||||
{ 0x4070, "ISTNOCLK"}, /* Status lost clock , */\
|
||||
{ 0x4400, "ICLVDDS"}, /* Clear POR , */\
|
||||
{ 0x4410, "ICLBSTOC"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "ICLOTDS"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "ICLOCPR"}, /* Clear ocp alarm , */\
|
||||
{ 0x4440, "ICLUVDS"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "ICLMANALARM"}, /* clear nanager Alarm state , */\
|
||||
{ 0x4460, "ICLTDMER"}, /* Clear tdm error , */\
|
||||
{ 0x4470, "ICLNOCLK"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "IEVDDS"}, /* Enable por , */\
|
||||
{ 0x4810, "IEBSTOC"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "IEOTDS"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "IEOCPR"}, /* Enable ocp alarm , */\
|
||||
{ 0x4840, "IEUVDS"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "IEMANALARM"}, /* Enable nanager Alarm state , */\
|
||||
{ 0x4860, "IETDMER"}, /* Enable tdm error , */\
|
||||
{ 0x4870, "IENOCLK"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "IPOVDDS"}, /* Polarity por , */\
|
||||
{ 0x4c10, "IPOBSTOC"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "IPOOTDS"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "IPOOCPR"}, /* Polarity ocp alarm , */\
|
||||
{ 0x4c40, "IPOUVDS"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "IPOMANALARM"}, /* Polarity nanager Alarm state , */\
|
||||
{ 0x4c60, "IPOTDMER"}, /* Polarity tdm error , */\
|
||||
{ 0x4c70, "IPONOCLK"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "BSSCR"}, /* Battery Safeguard attack time , */\
|
||||
{ 0x5023, "BSST"}, /* Battery Safeguard threshold voltage level , */\
|
||||
{ 0x5061, "BSSRL"}, /* Battery Safeguard maximum reduction , */\
|
||||
{ 0x5080, "VBATFLTL"}, /* vbat filter limit , */\
|
||||
{ 0x50e0, "BSSR"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "BSSBY"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "BSSS"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "HPFBYP"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "DPSA"}, /* Enable DPSA , */\
|
||||
{ 0x5222, "CLIPCTRL"}, /* Clip control setting , */\
|
||||
{ 0x5257, "AMPGAIN"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "SLOPEE"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "SLOPESET"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x6123, "TDMDCG"}, /* Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE), */\
|
||||
{ 0x6163, "TDMSPKG"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x62e1, "LNMODE"}, /* ctrl select mode , */\
|
||||
{ 0x64e1, "LPM1MODE"}, /* low power mode control , */\
|
||||
{ 0x6802, "TDMSRCMAP"}, /* tdm source mapping , */\
|
||||
{ 0x6831, "TDMSRCAS"}, /* Sensed value A , */\
|
||||
{ 0x6851, "TDMSRCBS"}, /* Sensed value B , */\
|
||||
{ 0x6871, "TDMSRCACLIP"}, /* clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "TDMSRCBCLIP"}, /* clip information (analog /digital) for source1 , */\
|
||||
{ 0x6e10, "LP1"}, /* low power mode 1 detection , */\
|
||||
{ 0x6e20, "LA"}, /* low amplitude detection , */\
|
||||
{ 0x6e30, "VDDPH"}, /* vddp greater than vbat , */\
|
||||
{ 0x6f02, "DELCURCOMP"}, /* delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "SIGCURCOMP"}, /* polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "ENCURCOMP"}, /* enable current sense compensation , */\
|
||||
{ 0x6f72, "LVLCLPPWM"}, /* set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7033, "DCMCC"}, /* Max coil current , */\
|
||||
{ 0x7071, "DCCV"}, /* Slope compensation current, represents LxF (inductance x frequency) value , */\
|
||||
{ 0x7090, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x70a0, "DCSR"}, /* Soft ramp up/down , */\
|
||||
{ 0x70e0, "DCDIS"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "DCPWM"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7430, "DCTRACK"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "DCTRIP"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "DCHOLD"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "DCINT"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7534, "DCTRIP2"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "DCTRIPT"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "DCTRIPHYSTE"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7635, "DCVOF"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "DCVOS"}, /* Second boost voltage level , */\
|
||||
{ 0xa107, "MTPK"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "KEY1LOCKED"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "KEY2LOCKED"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa360, "CIMTP"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0xa50f, "MTPRDMSB"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "MTPRDLSB"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xb108, "EXTTS"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "TROS"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xee0f, "SWPROFIL"}, /* Software profile data , */\
|
||||
{ 0xef0f, "SWVSTEP"}, /* Software vstep information , */\
|
||||
{ 0xf000, "MTPOTC"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "MTPEX"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "DCMCCAPI"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "DCMCCSB"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "USERDEF"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "CUSTINFO"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf50f, "R25C"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9874_BITNAMETABLE static tfaBfName_t Tfa9874BitNames[]= {\
|
||||
{ 0x0, "powerdown"}, /* Powerdown selection , */\
|
||||
{ 0x10, "reset"}, /* I2C Reset - Auto clear , */\
|
||||
{ 0x30, "enbl_amplifier"}, /* Activate Amplifier , */\
|
||||
{ 0x40, "enbl_boost"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "int_pad_io"}, /* Interrupt config , */\
|
||||
{ 0xb0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "test_ocp"}, /* OCP testing control , */\
|
||||
{ 0x120, "src_set_configured"}, /* I2C configured , */\
|
||||
{ 0x140, "enbl_osc1m_auto_off"}, /* Internal osc off at PWDN , */\
|
||||
{ 0x1d0, "disable_mute_time_out"}, /* Time out SB mute sequence , */\
|
||||
{ 0x1e0, "unprotect_faim"}, /* Control for FAIM protection , */\
|
||||
{ 0x203, "audio_fs"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "input_level"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "cs_frac_delay"}, /* V/I Fractional delay , */\
|
||||
{ 0x2d0, "sel_hysteresis"}, /* Select hysteresis for clock range detector , */\
|
||||
{ 0x30f, "device_rev"}, /* Revision info , */\
|
||||
{ 0x401, "pll_clkin_sel"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "pll_clkin_sel_osc"}, /* PLL internal ref clock , */\
|
||||
{ 0x5c0, "enbl_faim_ss"}, /* Sub-system FAIM , */\
|
||||
{ 0x802, "ctrl_on2off_criterion"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0xe07, "ctrl_digtoana"}, /* Spare control from digital to analog , */\
|
||||
{ 0xf0f, "hidden_code"}, /* 5A6Bh, 23147d to access registers (default for engineering), */\
|
||||
{ 0x1000, "flag_por"}, /* POR , */\
|
||||
{ 0x1010, "flag_bst_ocpok"}, /* DCDC OCP nmos (sticky register , clear on read) , */\
|
||||
{ 0x1020, "flag_otpok"}, /* OTP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1030, "flag_ocp_alarm"}, /* OCP amplifier (sticky register , clear on read), */\
|
||||
{ 0x1040, "flag_uvpok"}, /* UVP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1050, "flag_man_alarm_state"}, /* Alarm state , */\
|
||||
{ 0x1060, "flag_tdm_error"}, /* TDM error , */\
|
||||
{ 0x1070, "flag_lost_clk"}, /* Lost clock (sticky register , clear on read) , */\
|
||||
{ 0x1100, "flag_bst_bstcur"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "flag_bst_hiz"}, /* DCDC active (sticky register , clear on read) , */\
|
||||
{ 0x1120, "flag_bst_peakcur"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "flag_bst_voutcomp"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "flag_bst_voutcomp86"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "flag_bst_voutcomp93"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "flag_pll_lock"}, /* PLL lock , */\
|
||||
{ 0x1170, "flag_clocks_stable"}, /* Clocks stable , */\
|
||||
{ 0x1180, "flag_tdm_lut_error"}, /* TDM LUT error , */\
|
||||
{ 0x1192, "flag_tdm_status"}, /* TDM status bits , */\
|
||||
{ 0x11c0, "flag_mtp_busy"}, /* MTP busy , */\
|
||||
{ 0x11d0, "flag_engage"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "flag_enbl_amp"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "flag_enbl_ref"}, /* References enable , */\
|
||||
{ 0x1300, "flag_ocpokap"}, /* OCPOK pmos A , */\
|
||||
{ 0x1310, "flag_ocpokan"}, /* OCPOK nmos A , */\
|
||||
{ 0x1320, "flag_ocpokbp"}, /* OCPOK pmos B , */\
|
||||
{ 0x1330, "flag_ocpokbn"}, /* OCPOK nmos B , */\
|
||||
{ 0x1380, "flag_ovpok"}, /* OVP alarm , */\
|
||||
{ 0x1390, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "flag_adc10_ready"}, /* Control ADC , */\
|
||||
{ 0x13c0, "flag_man_wait_src_settings"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "flag_man_start_mute_audio"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "flag_man_operating_state"}, /* Operating state , */\
|
||||
{ 0x1420, "flag_clk_out_of_range"}, /* External clock status , */\
|
||||
{ 0x1433, "man_state"}, /* Device manager status , */\
|
||||
{ 0x1471, "status_bst_mode"}, /* DCDC mode status bits , */\
|
||||
{ 0x1509, "bat_adc"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "temp_adc"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "vddp_adc"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2040, "tdm_enable"}, /* Enable interface , */\
|
||||
{ 0x2050, "tdm_mode"}, /* Slave/master , */\
|
||||
{ 0x2060, "tdm_clk_inversion"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "tdm_fs_ws_length"}, /* FS length (master mode only) , */\
|
||||
{ 0x20b0, "tdm_fs_ws_polarity"}, /* FS polarity , */\
|
||||
{ 0x20c3, "tdm_nbck"}, /* N-BCK's in FS , */\
|
||||
{ 0x2103, "tdm_nb_of_slots"}, /* N-slots in Frame , */\
|
||||
{ 0x2144, "tdm_slot_length"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "tdm_bits_remaining"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "tdm_data_delay"}, /* data delay to FS , */\
|
||||
{ 0x21f0, "tdm_data_adjustment"}, /* data adjustment , */\
|
||||
{ 0x2201, "tdm_audio_sample_compression"}, /* Received audio compression , */\
|
||||
{ 0x2224, "tdm_sample_size"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "tdm_txdata_format"}, /* Format unused bits , */\
|
||||
{ 0x2291, "tdm_txdata_format_unused_slot_sd0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "tdm_sink0_enable"}, /* Control audio tdm channel in 0 (spkr + dcdc) , */\
|
||||
{ 0x2310, "tdm_sink1_enable"}, /* Control audio tdm channel in 1 (dcdc) , */\
|
||||
{ 0x2330, "tdm_source0_enable"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "tdm_source1_enable"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "tdm_sink0_slot"}, /* tdm slot for sink 0 (speaker + dcdc) , */\
|
||||
{ 0x2643, "tdm_sink1_slot"}, /* tdm slot for sink 1 (dcdc) , */\
|
||||
{ 0x26c3, "tdm_source0_slot"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "tdm_source1_slot"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "int_out_flag_por"}, /* Status POR , */\
|
||||
{ 0x4010, "int_out_flag_bst_ocpok"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "int_out_flag_otpok"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "int_out_flag_ocp_alarm"}, /* Status ocp alarm , */\
|
||||
{ 0x4040, "int_out_flag_uvpok"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "int_out_flag_man_alarm_state"}, /* Status nanager Alarm state , */\
|
||||
{ 0x4060, "int_out_flag_tdm_error"}, /* Status tdm error , */\
|
||||
{ 0x4070, "int_out_flag_lost_clk"}, /* Status lost clock , */\
|
||||
{ 0x4400, "int_in_flag_por"}, /* Clear POR , */\
|
||||
{ 0x4410, "int_in_flag_bst_ocpok"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "int_in_flag_otpok"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "int_in_flag_ocp_alarm"}, /* Clear ocp alarm , */\
|
||||
{ 0x4440, "int_in_flag_uvpok"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "int_in_flag_man_alarm_state"}, /* clear nanager Alarm state , */\
|
||||
{ 0x4460, "int_in_flag_tdm_error"}, /* Clear tdm error , */\
|
||||
{ 0x4470, "int_in_flag_lost_clk"}, /* Clear lost clk , */\
|
||||
{ 0x4800, "int_enable_flag_por"}, /* Enable por , */\
|
||||
{ 0x4810, "int_enable_flag_bst_ocpok"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "int_enable_flag_otpok"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "int_enable_flag_ocp_alarm"}, /* Enable ocp alarm , */\
|
||||
{ 0x4840, "int_enable_flag_uvpok"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "int_enable_flag_man_alarm_state"}, /* Enable nanager Alarm state , */\
|
||||
{ 0x4860, "int_enable_flag_tdm_error"}, /* Enable tdm error , */\
|
||||
{ 0x4870, "int_enable_flag_lost_clk"}, /* Enable lost clk , */\
|
||||
{ 0x4c00, "int_polarity_flag_por"}, /* Polarity por , */\
|
||||
{ 0x4c10, "int_polarity_flag_bst_ocpok"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "int_polarity_flag_otpok"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "int_polarity_flag_ocp_alarm"}, /* Polarity ocp alarm , */\
|
||||
{ 0x4c40, "int_polarity_flag_uvpok"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "int_polarity_flag_man_alarm_state"}, /* Polarity nanager Alarm state , */\
|
||||
{ 0x4c60, "int_polarity_flag_tdm_error"}, /* Polarity tdm error , */\
|
||||
{ 0x4c70, "int_polarity_flag_lost_clk"}, /* Polarity lost clk , */\
|
||||
{ 0x5001, "vbat_prot_attack_time"}, /* Battery Safeguard attack time , */\
|
||||
{ 0x5023, "vbat_prot_thlevel"}, /* Battery Safeguard threshold voltage level , */\
|
||||
{ 0x5061, "vbat_prot_max_reduct"}, /* Battery Safeguard maximum reduction , */\
|
||||
{ 0x5080, "vbat_flt_limit"}, /* vbat filter limit , */\
|
||||
{ 0x50d0, "rst_min_vbat"}, /* Reset clipper - Auto clear , */\
|
||||
{ 0x50e0, "sel_vbat"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "bypass_clipper"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "batsense_steepness"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "bypass_hp"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "enbl_dpsa"}, /* Enable DPSA , */\
|
||||
{ 0x5222, "ctrl_cc"}, /* Clip control setting , */\
|
||||
{ 0x5257, "gain"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "ctrl_slopectrl"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "ctrl_slope"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x5301, "dpsa_level"}, /* DPSA threshold levels , */\
|
||||
{ 0x5321, "dpsa_release"}, /* DPSA Release time , */\
|
||||
{ 0x5340, "clipfast"}, /* Clock selection for HW clipper for Battery Safeguard, */\
|
||||
{ 0x5350, "bypass_lp"}, /* Bypass the low power filter inside temperature sensor, */\
|
||||
{ 0x5400, "first_order_mode"}, /* Overrule to 1st order mode of control stage when clipping, */\
|
||||
{ 0x5410, "bypass_ctrlloop"}, /* Switch amplifier into open loop configuration , */\
|
||||
{ 0x5430, "icomp_engage"}, /* Engage of icomp , */\
|
||||
{ 0x5440, "ctrl_kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x5450, "icomp_engage_overrule"}, /* To overrule the functional icomp_engage signal during validation, */\
|
||||
{ 0x5503, "ctrl_dem"}, /* Enable DEM icomp and DEM one bit dac , */\
|
||||
{ 0x5543, "ctrl_dem_mismatch"}, /* Enable DEM icomp mismatch for testing , */\
|
||||
{ 0x5582, "dpsa_drive"}, /* Drive setting (bin. coded) , */\
|
||||
{ 0x5690, "sel_pwm_delay_src"}, /* Control for selection for PWM delay line source , */\
|
||||
{ 0x56a1, "enbl_odd_up_even_down"}, /* Control for PWM reference sawtooth generartion , */\
|
||||
{ 0x570a, "enbl_amp"}, /* Switch on the class-D power sections, each part of the analog sections can be switched on/off individually, */\
|
||||
{ 0x57b0, "enbl_engage"}, /* Enables/engage power stage and control loop , */\
|
||||
{ 0x57c0, "enbl_engage_pst"}, /* Enables/engage power stage and control loop , */\
|
||||
{ 0x5810, "hard_mute"}, /* Hard mute - PWM , */\
|
||||
{ 0x5820, "pwm_shape"}, /* PWM shape , */\
|
||||
{ 0x5844, "pwm_delay"}, /* PWM delay bits to set the delay, clockd is 1/(k*2048*fs), */\
|
||||
{ 0x5890, "reclock_pwm"}, /* Reclock the pwm signal inside analog , */\
|
||||
{ 0x58a0, "reclock_voltsense"}, /* Reclock the voltage sense pwm signal , */\
|
||||
{ 0x58c0, "enbl_pwm_phase_shift"}, /* Control for pwm phase shift , */\
|
||||
{ 0x6123, "ctrl_attl"}, /* Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE), */\
|
||||
{ 0x6163, "ctrl_attr"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x6265, "zero_lvl"}, /* low noise gain switch zero trigger level , */\
|
||||
{ 0x62c1, "ctrl_fb_resistor"}, /* Select amplifier feedback resistor connection , */\
|
||||
{ 0x62e1, "lownoisegain_mode"}, /* ctrl select mode , */\
|
||||
{ 0x6305, "threshold_lvl"}, /* low noise gain switch trigger level , */\
|
||||
{ 0x6365, "hold_time"}, /* ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x6405, "lpm1_cal_offset"}, /* low power mode1 detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6465, "lpm1_zero_lvl"}, /* low power mode1 zero crossing detection level , */\
|
||||
{ 0x64e1, "lpm1_mode"}, /* low power mode control , */\
|
||||
{ 0x6505, "lpm1_threshold_lvl"}, /* low power mode1 amplitude trigger level , */\
|
||||
{ 0x6565, "lpm1_hold_time"}, /* low power mode1 detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x65c0, "disable_low_power_mode"}, /* low power mode1 detector control , */\
|
||||
{ 0x6600, "dcdc_pfm20khz_limit"}, /* DCDC in PFM mode pwm mode is activated each 50us to force a pwm pulse, */\
|
||||
{ 0x6611, "dcdc_ctrl_maxzercnt"}, /* DCDC. Number of zero current flags to count before going to pfm mode, */\
|
||||
{ 0x6656, "dcdc_vbat_delta_detect"}, /* Threshold before booster is reacting on a delta Vbat (in PFM mode) by temporarily switching to PWM mode, */\
|
||||
{ 0x66c0, "dcdc_ignore_vbat"}, /* Ignore an increase on Vbat , */\
|
||||
{ 0x6700, "enbl_minion"}, /* Enables minion (small) power stage , */\
|
||||
{ 0x6713, "vth_vddpvbat"}, /* select vddp-vbat thres signal , */\
|
||||
{ 0x6750, "lpen_vddpvbat"}, /* select vddp-vbat filtred vs unfiltered compare , */\
|
||||
{ 0x6761, "ctrl_rfb"}, /* Feedback resistor selection - I2C direct mode , */\
|
||||
{ 0x6802, "tdm_source_mapping"}, /* tdm source mapping , */\
|
||||
{ 0x6831, "tdm_sourcea_frame_sel"}, /* Sensed value A , */\
|
||||
{ 0x6851, "tdm_sourceb_frame_sel"}, /* Sensed value B , */\
|
||||
{ 0x6871, "tdm_source0_clip_sel"}, /* clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "tdm_source1_clip_sel"}, /* clip information (analog /digital) for source1 , */\
|
||||
{ 0x6a02, "rst_min_vbat_delay"}, /* rst_min_vbat delay (nb fs) , */\
|
||||
{ 0x6b00, "disable_auto_engage"}, /* disable auto engange , */\
|
||||
{ 0x6b10, "disable_engage"}, /* disable engange , */\
|
||||
{ 0x6c02, "ns_hp2ln_criterion"}, /* 0..7 zeroes at ns as threshold to swap from high_power to low_noise, */\
|
||||
{ 0x6c32, "ns_ln2hp_criterion"}, /* 0..7 zeroes at ns as threshold to swap from low_noise to high_power, */\
|
||||
{ 0x6c69, "spare_out"}, /* spare_out , */\
|
||||
{ 0x6d0f, "spare_in"}, /* spare_in , */\
|
||||
{ 0x6e10, "flag_lp_detect_mode1"}, /* low power mode 1 detection , */\
|
||||
{ 0x6e20, "flag_low_amplitude"}, /* low amplitude detection , */\
|
||||
{ 0x6e30, "flag_vddp_gt_vbat"}, /* vddp greater than vbat , */\
|
||||
{ 0x6f02, "cursense_comp_delay"}, /* delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "cursense_comp_sign"}, /* polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "enbl_cursense_comp"}, /* enable current sense compensation , */\
|
||||
{ 0x6f72, "pwms_clip_lvl"}, /* set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7033, "boost_cur"}, /* Max coil current , */\
|
||||
{ 0x7071, "bst_slpcmplvl"}, /* Slope compensation current, represents LxF (inductance x frequency) value , */\
|
||||
{ 0x7090, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x70a0, "boost_speed"}, /* Soft ramp up/down , */\
|
||||
{ 0x70e0, "dcdcoff_mode"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "dcdc_pwmonly"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7104, "bst_drive"}, /* Binary coded drive setting for boost converter power stage, */\
|
||||
{ 0x7151, "bst_scalecur"}, /* For testing direct control scale current , */\
|
||||
{ 0x7174, "bst_slopecur"}, /* For testing direct control slope current , */\
|
||||
{ 0x71c1, "bst_slope"}, /* Boost slope speed , */\
|
||||
{ 0x71e0, "bst_bypass_bstcur"}, /* Bypass control for boost current settings , */\
|
||||
{ 0x71f0, "bst_bypass_bstfoldback"}, /* Bypass control for boost foldback , */\
|
||||
{ 0x7200, "enbl_bst_engage"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x7210, "enbl_bst_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x7220, "enbl_bst_peak2avg"}, /* Enable boost peak2avg functionality , */\
|
||||
{ 0x7230, "enbl_bst_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x7240, "enbl_bst_power"}, /* Enable line of the powerstage , */\
|
||||
{ 0x7250, "enbl_bst_slopecur"}, /* Enable bit of max-current dac , */\
|
||||
{ 0x7260, "enbl_bst_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x7270, "enbl_bst_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x7280, "enbl_bst_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x7290, "enbl_bst_windac"}, /* Enable window dac , */\
|
||||
{ 0x72a5, "bst_windac"}, /* for testing direct control windac , */\
|
||||
{ 0x7300, "boost_alg"}, /* Control for boost adaptive loop gain , */\
|
||||
{ 0x7311, "boost_loopgain"}, /* DCDC boost loopgain setting , */\
|
||||
{ 0x7331, "bst_freq"}, /* DCDC boost frequency control , */\
|
||||
{ 0x7360, "bst_use_new_zercur_detect"}, /* Enable new zero current detection for boost control, */\
|
||||
{ 0x7430, "boost_track"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "boost_trip_lvl_1st"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "boost_hold_time"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "sel_dcdc_envelope_8fs"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74f0, "ignore_flag_voutcomp86"}, /* Determines the maximum PWM frequency be the most efficient in relation to the Booster inductor value, */\
|
||||
{ 0x7534, "boost_trip_lvl_2nd"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "boost_trip_lvl_track"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "enbl_trip_hyst"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7635, "frst_boost_voltage"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "scnd_boost_voltage"}, /* Second boost voltage level , */\
|
||||
{ 0x8001, "sel_clk_cs"}, /* Current sense clock duty cycle control , */\
|
||||
{ 0x8021, "micadc_speed"}, /* Current sense clock for MiCADC selection - 32/44.1/48 KHz Fs band only, */\
|
||||
{ 0x8050, "cs_gain_control"}, /* Current sense gain control , */\
|
||||
{ 0x8060, "cs_bypass_gc"}, /* Bypasses the CS gain correction , */\
|
||||
{ 0x8087, "cs_gain"}, /* Current sense gain , */\
|
||||
{ 0x8210, "invertpwm"}, /* Current sense common mode feedback pwm invert control, */\
|
||||
{ 0x8305, "cs_ktemp"}, /* Current sense temperature compensation trimming (1 - VALUE*TEMP)*signal, */\
|
||||
{ 0x8364, "cs_ktemp2"}, /* Second order temperature compensation coefficient , */\
|
||||
{ 0x8400, "cs_adc_bsoinv"}, /* Bitstream inversion for current sense ADC , */\
|
||||
{ 0x8421, "cs_adc_hifreq"}, /* Frequency mode current sense ADC , */\
|
||||
{ 0x8440, "cs_adc_nortz"}, /* Return to zero for current sense ADC , */\
|
||||
{ 0x8453, "cs_adc_offset"}, /* Micadc ADC offset setting , */\
|
||||
{ 0x8490, "cs_adc_slowdel"}, /* Select delay for current sense ADC (internal decision circuitry), */\
|
||||
{ 0x84a4, "cs_adc_gain"}, /* Gain setting for current sense ADC (two's complement), */\
|
||||
{ 0x8500, "cs_resonator_enable"}, /* Enable for resonator to improve SRN , */\
|
||||
{ 0x8510, "cs_classd_tran_skip"}, /* Skip current sense connection during a classD amplifier transition, */\
|
||||
{ 0x8530, "cs_inn_short"}, /* Short current sense negative to common mode , */\
|
||||
{ 0x8540, "cs_inp_short"}, /* Short current sense positive to common mode , */\
|
||||
{ 0x8550, "cs_ldo_bypass"}, /* Bypass current sense LDO , */\
|
||||
{ 0x8560, "cs_ldo_pulldown"}, /* Pull down current sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8574, "cs_ldo_voset"}, /* Current sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8700, "enbl_cs_adc"}, /* Enable current sense ADC , */\
|
||||
{ 0x8710, "enbl_cs_inn1"}, /* Enable connection of current sense negative1 , */\
|
||||
{ 0x8720, "enbl_cs_inn2"}, /* Enable connection of current sense negative2 , */\
|
||||
{ 0x8730, "enbl_cs_inp1"}, /* Enable connection of current sense positive1 , */\
|
||||
{ 0x8740, "enbl_cs_inp2"}, /* Enable connection of current sense positive2 , */\
|
||||
{ 0x8750, "enbl_cs_ldo"}, /* Enable current sense LDO , */\
|
||||
{ 0x8780, "enbl_cs_vbatldo"}, /* Enable of current sense LDO , */\
|
||||
{ 0x8790, "enbl_dc_filter"}, /* Control for enabling the DC blocking filter for voltage and current sense, */\
|
||||
{ 0x8801, "volsense_pwm_sel"}, /* Voltage sense source selection control , */\
|
||||
{ 0x8850, "vs_gain_control"}, /* Voltage sense gain control , */\
|
||||
{ 0x8860, "vs_bypass_gc"}, /* Bypasses the VS gain correction , */\
|
||||
{ 0x8870, "vs_igen_supply"}, /* Switch internal supply of current generator , */\
|
||||
{ 0x8887, "vs_gain"}, /* voltage sense gain , */\
|
||||
{ 0x8c00, "vs_adc_bsoinv"}, /* Bitstream inversion for voltage sense ADC , */\
|
||||
{ 0x8c40, "vs_adc_nortz"}, /* Return to zero for voltage sense ADC , */\
|
||||
{ 0x8c90, "vs_adc_slowdel"}, /* Select delay for voltage sense ADC (internal decision circuitry), */\
|
||||
{ 0x8d10, "vs_classd_tran_skip"}, /* Skip voltage sense connection during a classD amplifier transition, */\
|
||||
{ 0x8d30, "vs_inn_short"}, /* Short voltage sense negative to common mode , */\
|
||||
{ 0x8d40, "vs_inp_short"}, /* Short voltage sense positive to common mode , */\
|
||||
{ 0x8d50, "vs_ldo_bypass"}, /* Bypass voltage sense LDO , */\
|
||||
{ 0x8d60, "vs_ldo_pulldown"}, /* Pull down voltage sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8d74, "vs_ldo_voset"}, /* Voltage sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8f00, "enbl_vs_adc"}, /* Enable voltage sense ADC (Direct Control only only others done by manager), */\
|
||||
{ 0x8f10, "enbl_vs_inn1"}, /* Enable connection of voltage sense negative1 , */\
|
||||
{ 0x8f20, "enbl_vs_inn2"}, /* Enable connection of voltage sense negative2 , */\
|
||||
{ 0x8f30, "enbl_vs_inp1"}, /* Enable connection of voltage sense positive1 , */\
|
||||
{ 0x8f40, "enbl_vs_inp2"}, /* Enable connection of voltage sense positive2 , */\
|
||||
{ 0x8f50, "enbl_vs_ldo"}, /* Enable voltage sense LDO (Direct Control only only others done by manager), */\
|
||||
{ 0x8f80, "enbl_vs_vbatldo"}, /* Enable of voltage sense LDO (Direct Control only others done by manager), */\
|
||||
{ 0xa007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0xa107, "mtpkey2"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "key01_locked"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "key02_locked"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "mtp_man_address_in"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa330, "man_copy_mtp_to_iic"}, /* Start copying single word from mtp to I2C mtp register, */\
|
||||
{ 0xa340, "man_copy_iic_to_mtp"}, /* Start copying single word from I2C mtp register to mtp, */\
|
||||
{ 0xa350, "auto_copy_mtp_to_iic"}, /* Start copying all the data from mtp to I2C mtp registers, */\
|
||||
{ 0xa360, "auto_copy_iic_to_mtp"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0xa400, "faim_set_clkws"}, /* Sets the faim controller clock wait state register, */\
|
||||
{ 0xa410, "faim_sel_evenrows"}, /* All even rows of the faim are selected, active high, */\
|
||||
{ 0xa420, "faim_sel_oddrows"}, /* All odd rows of the faim are selected, all rows in combination with sel_evenrows, */\
|
||||
{ 0xa430, "faim_program_only"}, /* Skip the erase access at wr_faim command (write-program-marginread), */\
|
||||
{ 0xa440, "faim_erase_only"}, /* Skip the program access at wr_faim command (write-erase-marginread), */\
|
||||
{ 0xa50f, "mtp_man_data_out_msb"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "mtp_man_data_out_lsb"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "mtp_man_data_in_msb"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "mtp_man_data_in_lsb"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb010, "bypass_ocpcounter"}, /* Bypass OCP Counter , */\
|
||||
{ 0xb020, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0xb030, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0xb040, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0xb050, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0xb060, "bypass_lost_clk"}, /* Bypass lost clock detector , */\
|
||||
{ 0xb070, "ctrl_vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0xb087, "ocp_threshold"}, /* OCP threshold level , */\
|
||||
{ 0xb108, "ext_temp"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "ext_temp_sel"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xc000, "use_direct_ctrls"}, /* Direct control to overrule several functions for testing, */\
|
||||
{ 0xc010, "rst_datapath"}, /* Direct control for datapath reset , */\
|
||||
{ 0xc020, "rst_cgu"}, /* Direct control for cgu reset , */\
|
||||
{ 0xc038, "enbl_ref"}, /* Switch on the analog references, each part of the references can be switched on/off individually, */\
|
||||
{ 0xc0c0, "use_direct_vs_ctrls"}, /* voltage sense Direct control to overrule several functions for testing, */\
|
||||
{ 0xc0d0, "enbl_ringo"}, /* Enable the ring oscillator for test purpose , */\
|
||||
{ 0xc0e0, "use_direct_clk_ctrl"}, /* Direct clock control to overrule several functions for testing, */\
|
||||
{ 0xc0f0, "use_direct_pll_ctrl"}, /* Direct PLL control to overrule several functions for testing, */\
|
||||
{ 0xc100, "enbl_tsense"}, /* Temperature sensor enable control - I2C direct mode, */\
|
||||
{ 0xc110, "tsense_hibias"}, /* Bit to set the biasing in temp sensor to high , */\
|
||||
{ 0xc120, "enbl_flag_vbg"}, /* Enable flagging of bandgap out of control , */\
|
||||
{ 0xc20f, "abist_offset"}, /* Offset control for ABIST testing (two's complement), */\
|
||||
{ 0xc300, "bypasslatch"}, /* Bypass latch , */\
|
||||
{ 0xc311, "sourcea"}, /* Set OUTA to , */\
|
||||
{ 0xc331, "sourceb"}, /* Set OUTB to , */\
|
||||
{ 0xc350, "inverta"}, /* Invert pwma test signal , */\
|
||||
{ 0xc360, "invertb"}, /* Invert pwmb test signal , */\
|
||||
{ 0xc374, "pulselength"}, /* Pulse length setting test input for amplifier (clock d - k*2048*fs), */\
|
||||
{ 0xc3c0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0xc400, "bst_bypasslatch"}, /* Bypass latch in boost converter , */\
|
||||
{ 0xc411, "bst_source"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0xc430, "bst_invertb"}, /* Invert pwmbst test signal , */\
|
||||
{ 0xc444, "bst_pulselength"}, /* Pulse length setting test input for boost converter , */\
|
||||
{ 0xc490, "test_bst_ctrlsthv"}, /* Test mode for boost control stage , */\
|
||||
{ 0xc4a0, "test_bst_iddq"}, /* IDDQ testing in power stage of boost converter , */\
|
||||
{ 0xc4b0, "test_bst_rdson"}, /* RDSON testing - boost power stage , */\
|
||||
{ 0xc4c0, "test_bst_cvi"}, /* CVI testing - boost power stage , */\
|
||||
{ 0xc4d0, "test_bst_ocp"}, /* Boost OCP. For old ocp (ctrl_reversebst is 0), For new ocp (ctrl_reversebst is 1), */\
|
||||
{ 0xc4e0, "test_bst_sense"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0xc500, "test_cvi"}, /* Analog BIST, switch choose which transistor will be used as current source (also cross coupled sources possible), */\
|
||||
{ 0xc510, "test_discrete"}, /* Test function noise measurement , */\
|
||||
{ 0xc520, "test_iddq"}, /* Set the power stages in iddq mode for gate stress., */\
|
||||
{ 0xc540, "test_rdson"}, /* Analog BIST, switch to enable Rdson measurement , */\
|
||||
{ 0xc550, "test_sdelta"}, /* Analog BIST, noise test , */\
|
||||
{ 0xc570, "test_enbl_cs"}, /* Enable for digimux mode of current sense , */\
|
||||
{ 0xc580, "test_enbl_vs"}, /* Enable for digimux mode of voltage sense , */\
|
||||
{ 0xc600, "enbl_pwm_dcc"}, /* Enables direct control of pwm duty cycle for DCDC power stage, */\
|
||||
{ 0xc613, "pwm_dcc_cnt"}, /* Control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0xc650, "enbl_ldo_stress"}, /* Enable stress of internal supply voltages powerstages, */\
|
||||
{ 0xc707, "digimuxa_sel"}, /* DigimuxA input selection control routed to DATAO (see Digimux list for details), */\
|
||||
{ 0xc787, "digimuxb_sel"}, /* DigimuxB input selection control routed to INT (see Digimux list for details), */\
|
||||
{ 0xc807, "digimuxc_sel"}, /* DigimuxC input selection control routed to PDMDAT (see Digimux list for details), */\
|
||||
{ 0xc981, "int_ehs"}, /* Speed/load setting for INT IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xc9c0, "hs_mode"}, /* I2C high speed mode control , */\
|
||||
{ 0xca00, "enbl_anamux1"}, /* Enable anamux1 , */\
|
||||
{ 0xca10, "enbl_anamux2"}, /* Enable anamux2 , */\
|
||||
{ 0xca20, "enbl_anamux3"}, /* Enable anamux3 , */\
|
||||
{ 0xca30, "enbl_anamux4"}, /* Enable anamux4 , */\
|
||||
{ 0xca74, "anamux1"}, /* Anamux selection control - anamux on TEST1 , */\
|
||||
{ 0xcb04, "anamux2"}, /* Anamux selection control - anamux on TEST2 , */\
|
||||
{ 0xcb53, "anamux3"}, /* Anamux selection control - anamux on TEST3 , */\
|
||||
{ 0xcba3, "anamux4"}, /* Anamux selection control - anamux on TEST4 , */\
|
||||
{ 0xcd05, "pll_seli"}, /* PLL SELI - I2C direct PLL control mode only , */\
|
||||
{ 0xcd64, "pll_selp"}, /* PLL SELP - I2C direct PLL control mode only , */\
|
||||
{ 0xcdb3, "pll_selr"}, /* PLL SELR - I2C direct PLL control mode only , */\
|
||||
{ 0xcdf0, "pll_frm"}, /* PLL free running mode control; 1 in TCB direct control mode, else this control bit, */\
|
||||
{ 0xce09, "pll_ndec"}, /* PLL NDEC - I2C direct PLL control mode only , */\
|
||||
{ 0xcea0, "pll_mdec_msb"}, /* MSB of pll_mdec - I2C direct PLL control mode only, */\
|
||||
{ 0xceb0, "enbl_pll"}, /* Enables PLL in I2C direct PLL control mode only , */\
|
||||
{ 0xcec0, "enbl_osc"}, /* Enables OSC1M in I2C direct control mode only , */\
|
||||
{ 0xced0, "pll_bypass"}, /* PLL bypass control in I2C direct PLL control mode only, */\
|
||||
{ 0xcee0, "pll_directi"}, /* PLL directi control in I2C direct PLL control mode only, */\
|
||||
{ 0xcef0, "pll_directo"}, /* PLL directo control in I2C direct PLL control mode only, */\
|
||||
{ 0xcf0f, "pll_mdec_lsb"}, /* Bits 15..0 of PLL MDEC are I2C direct PLL control mode only, */\
|
||||
{ 0xd006, "pll_pdec"}, /* PLL PDEC - I2C direct PLL control mode only , */\
|
||||
{ 0xd10f, "tsig_freq_lsb"}, /* Internal sinus test generator frequency control , */\
|
||||
{ 0xd202, "tsig_freq_msb"}, /* Select internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0xd230, "inject_tsig"}, /* Control bit to switch to internal sinus test generator, */\
|
||||
{ 0xd283, "tsig_gain"}, /* Test signal gain , */\
|
||||
{ 0xd300, "adc10_reset"}, /* Reset for ADC10 - I2C direct control mode , */\
|
||||
{ 0xd311, "adc10_test"}, /* Test mode selection signal for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd332, "adc10_sel"}, /* Select the input to convert for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd364, "adc10_prog_sample"}, /* ADC10 program sample setting - I2C direct control mode, */\
|
||||
{ 0xd3b0, "adc10_enbl"}, /* Enable ADC10 - I2C direct control mode , */\
|
||||
{ 0xd3c0, "bypass_lp_vbat"}, /* Bypass control for Low pass filter in batt sensor , */\
|
||||
{ 0xd409, "data_adc10_tempbat"}, /* ADC 10 data output data for testing , */\
|
||||
{ 0xd507, "ctrl_digtoana_hidden"}, /* Spare digital to analog control bits - Hidden , */\
|
||||
{ 0xd580, "enbl_clk_out_of_range"}, /* Clock out of range , */\
|
||||
{ 0xd621, "clkdiv_audio_sel"}, /* Audio clock divider selection in direct clock control mode, */\
|
||||
{ 0xd641, "clkdiv_muxa_sel"}, /* DCDC MUXA clock divider selection in direct clock control mode, */\
|
||||
{ 0xd661, "clkdiv_muxb_sel"}, /* DCDC MUXB clock divider selection in direct clock control mode, */\
|
||||
{ 0xd721, "datao_ehs"}, /* Speed/load setting for DATAO IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xd740, "bck_ehs"}, /* High-speed and standard/fast mode selection for BCK IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd750, "datai_ehs"}, /* High-speed and standard/fast mode selection for DATAI IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd800, "source_in_testmode"}, /* tdm source in test mode (return only current and voltage sense), */\
|
||||
{ 0xd810, "gainatt_feedback"}, /* gainatt feedback to tdm , */\
|
||||
{ 0xd822, "test_parametric_io"}, /* test io parametric , */\
|
||||
{ 0xd850, "ctrl_bst_clk_lp1"}, /* boost clock control in low power mode1 , */\
|
||||
{ 0xd861, "test_spare_out1"}, /* test spare out 1 , */\
|
||||
{ 0xd880, "bst_dcmbst"}, /* dcm boost , */\
|
||||
{ 0xd8c3, "test_spare_out2"}, /* test spare out 1 , */\
|
||||
{ 0xee0f, "sw_profile"}, /* Software profile data , */\
|
||||
{ 0xef0f, "sw_vstep"}, /* Software vstep information , */\
|
||||
{ 0xf000, "calibration_onetime"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "calibr_ron_done"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "calibr_dcdc_api_calibrate"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "calibr_dcdc_delta_sign"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "calibr_dcdc_delta"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "calibr_speaker_info"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf105, "calibr_vout_offset"}, /* DCDC offset calibration 2's complement (key1 protected), */\
|
||||
{ 0xf169, "spare_mpt1_15_6"}, /* SPARE , */\
|
||||
{ 0xf203, "calibr_gain"}, /* HW gain module (2's complement) , */\
|
||||
{ 0xf245, "calibr_offset"}, /* Offset for amplifier, HW gain module (2's complement), */\
|
||||
{ 0xf2a5, "spare_mtp2_15_10"}, /* SPARE , */\
|
||||
{ 0xf307, "calibr_gain_vs"}, /* Voltage sense gain , */\
|
||||
{ 0xf387, "calibr_gain_cs"}, /* Current sense gain (signed two's complement format), */\
|
||||
{ 0xf407, "spare_mtp4_15_0"}, /* SPARE , */\
|
||||
{ 0xf487, "vs_trim"}, /* VS Trimming , */\
|
||||
{ 0xf50f, "calibr_R25C_R"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xf60f, "spare_mpt6_6_0"}, /* SPARE , */\
|
||||
{ 0xf706, "ctrl_offset_a"}, /* Offset of level shifter A , */\
|
||||
{ 0xf770, "spare_mtp7_07"}, /* SPARE , */\
|
||||
{ 0xf786, "ctrl_offset_b"}, /* Offset of amplifier level shifter B , */\
|
||||
{ 0xf7f0, "spare_mtp7_15"}, /* SPARE , */\
|
||||
{ 0xf806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0xf870, "htol_iic_addr_en"}, /* HTOL I2C address enable control , */\
|
||||
{ 0xf884, "calibr_temp_offset"}, /* Temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0xf8d2, "calibr_temp_gain"}, /* Temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0xf900, "mtp_lock_dcdcoff_mode"}, /* Disable function dcdcoff_mode , */\
|
||||
{ 0xf910, "spare_mtp9_1"}, /* SPARE , */\
|
||||
{ 0xf920, "mtp_lock_bypass_clipper"}, /* Disable function bypass_clipper , */\
|
||||
{ 0xf930, "mtp_lock_max_dcdc_voltage"}, /* Force Boost in follower mode , */\
|
||||
{ 0xf943, "calibr_vbg_trim"}, /* Bandgap trimming control , */\
|
||||
{ 0xf980, "spare_mtp9_8"}, /* SPARE , */\
|
||||
{ 0xf990, "mtp_enbl_pwm_delay_clock_gating"}, /* pwm delay clock auto gating , */\
|
||||
{ 0xf9a0, "mtp_enbl_ocp_clock_gating"}, /* ocpclock auto gating , */\
|
||||
{ 0xf9b0, "mtp_gate_cgu_clock_for_test"}, /* cgu test clock control , */\
|
||||
{ 0xf9c0, "mtp_tdm_pad_sel"}, /* tdm pad selection , */\
|
||||
{ 0xf9d2, "spare_mtp9_15_12"}, /* MTP-control FW - See Firmware I2C API document for details, */\
|
||||
{ 0xfa0f, "mtpdataA"}, /* MTPdataA (key1 protected) , */\
|
||||
{ 0xfb0f, "mtpdataB"}, /* MTPdataB (key1 protected) , */\
|
||||
{ 0xfc0f, "mtpdataC"}, /* MTPdataC (key1 protected) , */\
|
||||
{ 0xfd0f, "mtpdataD"}, /* MTPdataD (key1 protected) , */\
|
||||
{ 0xfe0f, "mtpdataE"}, /* MTPdataE (key1 protected) , */\
|
||||
{ 0xff07, "calibr_osc_delta_ndiv"}, /* Calibration data for OSC1M, signed number representation, */\
|
||||
{ 0xff87, "spare_mtp7_15_08"}, /* SPARE , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
enum tfa9874_irq {
|
||||
tfa9874_irq_stvdds = 0,
|
||||
tfa9874_irq_stbstoc = 1,
|
||||
tfa9874_irq_stotds = 2,
|
||||
tfa9874_irq_stocpr = 3,
|
||||
tfa9874_irq_stuvds = 4,
|
||||
tfa9874_irq_stmanalarm = 5,
|
||||
tfa9874_irq_sttdmer = 6,
|
||||
tfa9874_irq_stnoclk = 7,
|
||||
tfa9874_irq_max = 8,
|
||||
tfa9874_irq_all = -1 /* all irqs */};
|
||||
|
||||
#define TFA9874_IRQ_NAMETABLE static tfaIrqName_t Tfa9874IrqNames[]= {\
|
||||
{ 0, "STVDDS"},\
|
||||
{ 1, "STBSTOC"},\
|
||||
{ 2, "STOTDS"},\
|
||||
{ 3, "STOCPR"},\
|
||||
{ 4, "STUVDS"},\
|
||||
{ 5, "STMANALARM"},\
|
||||
{ 6, "STTDMER"},\
|
||||
{ 7, "STNOCLK"},\
|
||||
{ 8, "8"},\
|
||||
};
|
||||
#endif /* _TFA9874_TFAFIELDNAMES_H */
|
||||
980
techpack/audio/asoc/codecs/tfa9874/inc/tfa9878_tfafieldnames.h
Executable file
980
techpack/audio/asoc/codecs/tfa9874/inc/tfa9878_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,980 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: tfa9878_tfaFieldnames.h
|
||||
* This file was generated automatically on 06/28/19 at 10:22:32.
|
||||
* Source file: TFA9878_PRB3_N1A1_DefaultI2CSettings.xlsx
|
||||
*/
|
||||
|
||||
#ifndef _TFA9878_TFAFIELDNAMES_H
|
||||
#define _TFA9878_TFAFIELDNAMES_H
|
||||
|
||||
|
||||
#define TFA9878_I2CVERSION 12
|
||||
|
||||
typedef enum Tfa9878BfEnumList {
|
||||
TFA9878_BF_PWDN = 0x0000, /*!< Powerdown selection */
|
||||
TFA9878_BF_I2CR = 0x0010, /*!< I2C Reset - Auto clear */
|
||||
TFA9878_BF_AMPE = 0x0030, /*!< Activate Amplifier */
|
||||
TFA9878_BF_DCA = 0x0040, /*!< Activate DC-to-DC converter */
|
||||
TFA9878_BF_INTP = 0x0071, /*!< Interrupt config */
|
||||
TFA9878_BF_FSSSEL= 0x0090, /*!< Audio sample reference */
|
||||
TFA9878_BF_BYPOCP= 0x00b0, /*!< Bypass OCP */
|
||||
TFA9878_BF_TSTOCP= 0x00c0, /*!< OCP testing control */
|
||||
TFA9878_BF_AMPINSEL= 0x0101, /*!< Amplifier input selection */
|
||||
TFA9878_BF_MANSCONF= 0x0120, /*!< I2C configured */
|
||||
TFA9878_BF_DCINSEL= 0x0131, /*!< VAMP_OUT2 input selection */
|
||||
TFA9878_BF_MUTETO= 0x0160, /*!< Time out SB mute sequence */
|
||||
TFA9878_BF_MANROBOD= 0x0170, /*!< Reaction on BOD */
|
||||
TFA9878_BF_BODE = 0x0180, /*!< Enable BOD (only in direct control mode) */
|
||||
TFA9878_BF_BODHYS= 0x0190, /*!< Enable Hysteresis of BOD */
|
||||
TFA9878_BF_BODFILT= 0x01a1, /*!< BOD filter */
|
||||
TFA9878_BF_BODTHLVL= 0x01c1, /*!< BOD threshold */
|
||||
TFA9878_BF_OPENMTP= 0x01e0, /*!< Control for FAIM protection */
|
||||
TFA9878_BF_DISFCRBST= 0x01f0, /*!< disable boost control with FRCBST */
|
||||
TFA9878_BF_AUDFS = 0x0203, /*!< Sample rate (fs) */
|
||||
TFA9878_BF_INPLEV= 0x0240, /*!< TDM output attenuation */
|
||||
TFA9878_BF_FRACTDEL= 0x0255, /*!< V/I Fractional delay */
|
||||
TFA9878_BF_AMPINPSEL= 0x02b1, /*!< amp input selection */
|
||||
TFA9878_BF_PDMRATE= 0x02d0, /*!< Pdm rate */
|
||||
TFA9878_BF_REV = 0x030f, /*!< Revision info */
|
||||
TFA9878_BF_REFCKEXT= 0x0401, /*!< PLL external ref clock */
|
||||
TFA9878_BF_REFCKSEL= 0x0420, /*!< PLL internal ref clock */
|
||||
TFA9878_BF_SWCLKSEL= 0x0432, /*!< Sound Wire clock frequnecy */
|
||||
TFA9878_BF_MANAOOSC= 0x0460, /*!< Internal osc off at PWDN */
|
||||
TFA9878_BF_FSSYNCEN= 0x0480, /*!< Enable FS synchronisation for clock divider */
|
||||
TFA9878_BF_CLKREFSYNCEN= 0x0490, /*!< Enable PLL reference clock synchronisation for clock divider */
|
||||
TFA9878_BF_AUTOFROSEL= 0x04a0, /*!< override automatic OSC selection mechanism */
|
||||
TFA9878_BF_SWFRSYNC= 0x04b0, /*!< Selection SW signal reference for Stream Synchronization */
|
||||
TFA9878_BF_CGUSYNCDCG= 0x0500, /*!< Clock gating control for CGU synchronisation module */
|
||||
TFA9878_BF_FRCCLKSPKR= 0x0510, /*!< force active the speaker sub-system clock when in idle power */
|
||||
TFA9878_BF_SSFAIME= 0x05c0, /*!< Sub-system FAIM */
|
||||
TFA9878_BF_CLKCHKLO= 0x0707, /*!< Clock check Low Threshold */
|
||||
TFA9878_BF_CLKCHKHI= 0x0787, /*!< Clock check Higher Threshold */
|
||||
TFA9878_BF_AMPOCRT= 0x0802, /*!< Amplifier on-off criteria for shutdown */
|
||||
TFA9878_BF_VDDS = 0x1000, /*!< POR */
|
||||
TFA9878_BF_DCOCPOK= 0x1010, /*!< DCDC OCP nmos (sticky register , clear on read) */
|
||||
TFA9878_BF_OTDS = 0x1020, /*!< OTP alarm (sticky register , clear on read) */
|
||||
TFA9878_BF_OCDS = 0x1030, /*!< OCP amplifier (sticky register , clear on read) */
|
||||
TFA9878_BF_UVDS = 0x1040, /*!< UVP alarm (sticky register , clear on read) */
|
||||
TFA9878_BF_MANALARM= 0x1050, /*!< Alarm state */
|
||||
TFA9878_BF_CLKS = 0x1060, /*!< Clocks stable */
|
||||
TFA9878_BF_MTPB = 0x1070, /*!< MTP busy */
|
||||
TFA9878_BF_NOCLK = 0x1080, /*!< Lost clock (sticky register , clear on read) */
|
||||
TFA9878_BF_BODNOK= 0x1090, /*!< BOD Flag - VDD NOT OK */
|
||||
TFA9878_BF_TDMERR= 0x10a0, /*!< TDM error */
|
||||
TFA9878_BF_DCIL = 0x1100, /*!< DCDC current limiting */
|
||||
TFA9878_BF_DCDCA = 0x1110, /*!< DCDC active (sticky register , clear on read) */
|
||||
TFA9878_BF_DCDCPC= 0x1120, /*!< Indicates current is max in DC-to-DC converter */
|
||||
TFA9878_BF_DCHVBAT= 0x1130, /*!< DCDC level 1x */
|
||||
TFA9878_BF_DCH114= 0x1140, /*!< DCDC level 1.14x */
|
||||
TFA9878_BF_DCH107= 0x1150, /*!< DCDC level 1.07x */
|
||||
TFA9878_BF_PLLS = 0x1160, /*!< PLL lock */
|
||||
TFA9878_BF_TDMLUTER= 0x1180, /*!< TDM LUT error */
|
||||
TFA9878_BF_CLKOOR= 0x11c0, /*!< External clock status */
|
||||
TFA9878_BF_SWS = 0x11d0, /*!< Amplifier engage */
|
||||
TFA9878_BF_AMPS = 0x11e0, /*!< Amplifier enable */
|
||||
TFA9878_BF_AREFS = 0x11f0, /*!< References enable */
|
||||
TFA9878_BF_OCPOAP= 0x1300, /*!< OCPOK pmos B */
|
||||
TFA9878_BF_OCPOAN= 0x1310, /*!< OCPOK pmos A */
|
||||
TFA9878_BF_OCPOBP= 0x1320, /*!< OCPOK nmos B */
|
||||
TFA9878_BF_OCPOBN= 0x1330, /*!< OCPOK nmos A */
|
||||
TFA9878_BF_OVDS = 0x1380, /*!< OVP alarm */
|
||||
TFA9878_BF_CLIPS = 0x1390, /*!< Amplifier clipping */
|
||||
TFA9878_BF_ADCCR = 0x13a0, /*!< Control ADC */
|
||||
TFA9878_BF_MANWAIT1= 0x13c0, /*!< Wait HW I2C settings */
|
||||
TFA9878_BF_MANMUTE= 0x13e0, /*!< Audio mute sequence */
|
||||
TFA9878_BF_MANOPER= 0x13f0, /*!< Operating state */
|
||||
TFA9878_BF_TDMSTAT= 0x1402, /*!< TDM status bits */
|
||||
TFA9878_BF_MANSTATE= 0x1433, /*!< Device manager status */
|
||||
TFA9878_BF_AMPSTE= 0x1473, /*!< Amplifier control status */
|
||||
TFA9878_BF_DCMODE= 0x14b1, /*!< DCDC mode status bits */
|
||||
TFA9878_BF_BATS = 0x1509, /*!< Battery voltage (V) */
|
||||
TFA9878_BF_TEMPS = 0x1608, /*!< IC Temperature (C) */
|
||||
TFA9878_BF_VDDPS = 0x1709, /*!< IC VDDP voltage ( 1023*VDDP/13 V) */
|
||||
TFA9878_BF_TDME = 0x2000, /*!< Enable interface */
|
||||
TFA9878_BF_TDMSLOTS= 0x2013, /*!< N-slots in Frame */
|
||||
TFA9878_BF_TDMCLINV= 0x2060, /*!< Reception data to BCK clock */
|
||||
TFA9878_BF_TDMFSLN= 0x2073, /*!< FS length */
|
||||
TFA9878_BF_TDMFSPOL= 0x20b0, /*!< FS polarity */
|
||||
TFA9878_BF_TDMNBCK= 0x20c3, /*!< N-BCK's in FS */
|
||||
TFA9878_BF_TDMSLLN= 0x2144, /*!< N-bits in slot */
|
||||
TFA9878_BF_TDMBRMG= 0x2194, /*!< N-bits remaining */
|
||||
TFA9878_BF_TDMDEL= 0x21e0, /*!< data delay to FS */
|
||||
TFA9878_BF_TDMADJ= 0x21f0, /*!< data adjustment */
|
||||
TFA9878_BF_TDMOOMP= 0x2201, /*!< Received audio compression */
|
||||
TFA9878_BF_TDMSSIZE= 0x2224, /*!< Sample size per slot */
|
||||
TFA9878_BF_TDMTXDFO= 0x2271, /*!< Format unused bits */
|
||||
TFA9878_BF_TDMTXUS0= 0x2291, /*!< Format unused slots DATAO */
|
||||
TFA9878_BF_TDMSPKE= 0x2300, /*!< Control audio tdm channel in 0 */
|
||||
TFA9878_BF_TDMDCE= 0x2310, /*!< Control audio tdm channel in 1 */
|
||||
TFA9878_BF_TDMCSE= 0x2330, /*!< current sense vbat temperature and vddp feedback */
|
||||
TFA9878_BF_TDMVSE= 0x2340, /*!< Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9878_BF_TDMSPKS= 0x2603, /*!< tdm slot for sink 0 */
|
||||
TFA9878_BF_TDMDCS= 0x2643, /*!< tdm slot for sink 1 */
|
||||
TFA9878_BF_TDMCSS= 0x26c3, /*!< Slot Position of current sense vbat temperature and vddp feedback */
|
||||
TFA9878_BF_TDMVSS= 0x2703, /*!< Slot Position of Voltage sense vbat temperature and vddp feedback */
|
||||
TFA9878_BF_ISTVDDS= 0x4000, /*!< Status POR */
|
||||
TFA9878_BF_ISTBSTOC= 0x4010, /*!< Status DCDC OCP */
|
||||
TFA9878_BF_ISTOTDS= 0x4020, /*!< Status OTP alarm */
|
||||
TFA9878_BF_ISTOCPR= 0x4030, /*!< Status ocp alarm */
|
||||
TFA9878_BF_ISTUVDS= 0x4040, /*!< Status UVP alarm */
|
||||
TFA9878_BF_ISTMANALARM= 0x4050, /*!< Status nanager Alarm state */
|
||||
TFA9878_BF_ISTTDMER= 0x4060, /*!< Status tdm error */
|
||||
TFA9878_BF_ISTNOCLK= 0x4070, /*!< Status lost clock */
|
||||
TFA9878_BF_ISTBODNOK= 0x4080, /*!< Status BOD event */
|
||||
TFA9878_BF_ICLVDDS= 0x4400, /*!< Clear POR */
|
||||
TFA9878_BF_ICLBSTOC= 0x4410, /*!< Clear DCDC OCP */
|
||||
TFA9878_BF_ICLOTDS= 0x4420, /*!< Clear OTP alarm */
|
||||
TFA9878_BF_ICLOCPR= 0x4430, /*!< Clear ocp alarm */
|
||||
TFA9878_BF_ICLUVDS= 0x4440, /*!< Clear UVP alarm */
|
||||
TFA9878_BF_ICLMANALARM= 0x4450, /*!< Clear manager Alarm state */
|
||||
TFA9878_BF_ICLTDMER= 0x4460, /*!< Clear tdm error */
|
||||
TFA9878_BF_ICLNOCLK= 0x4470, /*!< Clear lost clk */
|
||||
TFA9878_BF_ICLBODNOK= 0x4480, /*!< Clear BOD event */
|
||||
TFA9878_BF_IEVDDS= 0x4800, /*!< Enable por */
|
||||
TFA9878_BF_IEBSTOC= 0x4810, /*!< Enable DCDC OCP */
|
||||
TFA9878_BF_IEOTDS= 0x4820, /*!< Enable OTP alarm */
|
||||
TFA9878_BF_IEOCPR= 0x4830, /*!< Enable ocp alarm */
|
||||
TFA9878_BF_IEUVDS= 0x4840, /*!< Enable UVP alarm */
|
||||
TFA9878_BF_IEMANALARM= 0x4850, /*!< Enable nanager Alarm state */
|
||||
TFA9878_BF_IETDMER= 0x4860, /*!< Enable tdm error */
|
||||
TFA9878_BF_IENOCLK= 0x4870, /*!< Enable lost clk */
|
||||
TFA9878_BF_IEBODNOK= 0x4880, /*!< Enable BOD trigger */
|
||||
TFA9878_BF_IPOVDDS= 0x4c00, /*!< Polarity por */
|
||||
TFA9878_BF_IPOBSTOC= 0x4c10, /*!< Polarity DCDC OCP */
|
||||
TFA9878_BF_IPOOTDS= 0x4c20, /*!< Polarity OTP alarm */
|
||||
TFA9878_BF_IPOOCPR= 0x4c30, /*!< Polarity ocp alarm */
|
||||
TFA9878_BF_IPOUVDS= 0x4c40, /*!< Polarity UVP alarm */
|
||||
TFA9878_BF_IPOMANALARM= 0x4c50, /*!< Polarity nanager Alarm state */
|
||||
TFA9878_BF_IPOTDMER= 0x4c60, /*!< Polarity tdm error */
|
||||
TFA9878_BF_IPONOCLK= 0x4c70, /*!< Polarity lost clk */
|
||||
TFA9878_BF_IPOBODNOK= 0x4c80, /*!< Polarity BOD trigger */
|
||||
TFA9878_BF_BSSCR = 0x5001, /*!< Battery Safeguard attack time (with K = 1 at sample rate fs of 32kHz, 44,1 kHz or 48kHz ; with K = 2 at sample rate fs 16 kHz . With K =0.5 at sample rate of 96 kHz) */
|
||||
TFA9878_BF_BSST = 0x5023, /*!< Battery Safeguard threshold voltage level */
|
||||
TFA9878_BF_BSSRL = 0x5061, /*!< Battery Safeguard maximum reduction */
|
||||
TFA9878_BF_BSSR = 0x50e0, /*!< Battery voltage read out */
|
||||
TFA9878_BF_BSSBY = 0x50f0, /*!< Bypass battery safeguard */
|
||||
TFA9878_BF_BSSS = 0x5100, /*!< Vbat prot steepness */
|
||||
TFA9878_BF_HPFBYP= 0x5150, /*!< Bypass HPF */
|
||||
TFA9878_BF_DPSA = 0x5170, /*!< Enable DPSA */
|
||||
TFA9878_BF_CLIPCTRL= 0x5222, /*!< Clip control setting */
|
||||
TFA9878_BF_AMPGAIN= 0x5257, /*!< Amplifier gain */
|
||||
TFA9878_BF_SLOPEE= 0x52d0, /*!< Enables slope control */
|
||||
TFA9878_BF_SLOPESET= 0x52e0, /*!< Slope speed setting (bin. coded) */
|
||||
TFA9878_BF_BYPDLYLINE= 0x52f0, /*!< Bypass the interpolator delay line */
|
||||
TFA9878_BF_TDMDCG= 0x5f23, /*!< Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE) */
|
||||
TFA9878_BF_TDMSPKG= 0x5f63, /*!< Total gain depending on INPLEV setting (channel 0) */
|
||||
TFA9878_BF_IPM = 0x60e1, /*!< Idle power mode control */
|
||||
TFA9878_BF_LNMODE= 0x62e1, /*!< ctrl select mode */
|
||||
TFA9878_BF_LPM1MODE= 0x64e1, /*!< low power mode control */
|
||||
TFA9878_BF_TDMSRCMAP= 0x6802, /*!< tdm source mapping */
|
||||
TFA9878_BF_TDMSRCAS= 0x6831, /*!< Sensed value A */
|
||||
TFA9878_BF_TDMSRCBS= 0x6851, /*!< Sensed value B */
|
||||
TFA9878_BF_TDMSRCACLIP= 0x6871, /*!< clip information (analog /digital) for source0 */
|
||||
TFA9878_BF_TDMSRCBCLIP= 0x6891, /*!< clip information (analog /digital) for source1 */
|
||||
TFA9878_BF_LP0 = 0x6e00, /*!< Idle power mode */
|
||||
TFA9878_BF_LP1 = 0x6e10, /*!< low power mode 1 detection */
|
||||
TFA9878_BF_LA = 0x6e20, /*!< low amplitude detection */
|
||||
TFA9878_BF_VDDPH = 0x6e30, /*!< vddp greater than vbat */
|
||||
TFA9878_BF_DELCURCOMP= 0x6f02, /*!< delay to allign compensation signal with current sense signal */
|
||||
TFA9878_BF_SIGCURCOMP= 0x6f40, /*!< polarity of compensation for current sense */
|
||||
TFA9878_BF_ENCURCOMP= 0x6f50, /*!< enable current sense compensation */
|
||||
TFA9878_BF_LVLCLPPWM= 0x6f72, /*!< set the amount of pwm pulse that may be skipped before clip-flag is triggered */
|
||||
TFA9878_BF_DCMCC = 0x7003, /*!< Max coil current */
|
||||
TFA9878_BF_DCCV = 0x7041, /*!< Slope compensation current, represents LxF (inductance x frequency) value */
|
||||
TFA9878_BF_DCIE = 0x7060, /*!< Adaptive boost mode */
|
||||
TFA9878_BF_DCSR = 0x7070, /*!< Soft ramp up/down */
|
||||
TFA9878_BF_DCOVL = 0x7085, /*!< Threshold level to activate active overshoot control */
|
||||
TFA9878_BF_DCDIS = 0x70e0, /*!< DCDC on/off */
|
||||
TFA9878_BF_DCPWM = 0x70f0, /*!< DCDC PWM only mode */
|
||||
TFA9878_BF_DCTRACK= 0x7430, /*!< Boost algorithm selection, effective only when boost_intelligent is set to 1 */
|
||||
TFA9878_BF_DCTRIP= 0x7444, /*!< 1st Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9878_BF_DCHOLD= 0x7494, /*!< Hold time for DCDC booster, effective only when boost_intelligent is set to 1 */
|
||||
TFA9878_BF_DCINT = 0x74e0, /*!< Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1 */
|
||||
TFA9878_BF_DCTRIP2= 0x7534, /*!< 2nd Adaptive boost trip levels, effective only when DCIE is set to 1 */
|
||||
TFA9878_BF_DCTRIPT= 0x7584, /*!< Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1 */
|
||||
TFA9878_BF_DCTRIPHYSTE= 0x75f0, /*!< Enable hysteresis on booster trip levels */
|
||||
TFA9878_BF_DCVOF = 0x7635, /*!< First boost voltage level */
|
||||
TFA9878_BF_DCVOS = 0x7695, /*!< Second boost voltage level */
|
||||
TFA9878_BF_MTPK = 0xa107, /*!< MTP KEY2 register */
|
||||
TFA9878_BF_KEY1LOCKED= 0xa200, /*!< Indicates KEY1 is locked */
|
||||
TFA9878_BF_KEY2LOCKED= 0xa210, /*!< Indicates KEY2 is locked */
|
||||
TFA9878_BF_MTPADDR= 0xa302, /*!< MTP address from I2C register for read/writing mtp in manual single word mode */
|
||||
TFA9878_BF_MTPRDMSB= 0xa50f, /*!< MSB word of MTP manual read data */
|
||||
TFA9878_BF_MTPRDLSB= 0xa60f, /*!< LSB word of MTP manual read data */
|
||||
TFA9878_BF_MTPWRMSB= 0xa70f, /*!< MSB word of write data for MTP manual write */
|
||||
TFA9878_BF_MTPWRLSB= 0xa80f, /*!< LSB word of write data for MTP manual write */
|
||||
TFA9878_BF_EXTTS = 0xb108, /*!< External temperature (C) */
|
||||
TFA9878_BF_TROS = 0xb190, /*!< Select temp Speaker calibration */
|
||||
TFA9878_BF_PLLINSI= 0xcd05, /*!< PLL INSELI - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9878_BF_PLLINSP= 0xcd64, /*!< PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9878_BF_PLLINSR= 0xcdb3, /*!< PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1 */
|
||||
TFA9878_BF_PLLBDSEL= 0xcdf0, /*!< PLL bandwidth selection control, USE WITH CAUTION */
|
||||
TFA9878_BF_PLLNDEC= 0xce09, /*!< PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLMDECM= 0xcea0, /*!< MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLBP = 0xceb0, /*!< PLL bypass control during functional mode */
|
||||
TFA9878_BF_PLLDI = 0xcec0, /*!< PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLDO = 0xced0, /*!< PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLCLKSTB= 0xcee0, /*!< PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLFRM= 0xcef0, /*!< PLL free running mode control in functional mode */
|
||||
TFA9878_BF_PLLMDECL= 0xcf0f, /*!< Bits 15..0 of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLPDEC= 0xd006, /*!< PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1 */
|
||||
TFA9878_BF_PLLDCTRL= 0xd070, /*!< Enabled PLL direct control mode, overrules the PLL LUT with I2C register values */
|
||||
TFA9878_BF_PLLLIMOFF= 0xd090, /*!< PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1 */
|
||||
TFA9878_BF_PLLSTRTM= 0xd0a2, /*!< PLL startup time selection control */
|
||||
TFA9878_BF_SWPROFIL= 0xe00f, /*!< Software profile data */
|
||||
TFA9878_BF_SWVSTEP= 0xe10f, /*!< Software vstep information */
|
||||
TFA9878_BF_MTPOTC= 0xf000, /*!< Calibration schedule */
|
||||
TFA9878_BF_MTPEX = 0xf010, /*!< Calibration Ron executed */
|
||||
TFA9878_BF_DCMCCAPI= 0xf020, /*!< Calibration current limit DCDC */
|
||||
TFA9878_BF_DCMCCSB= 0xf030, /*!< Sign bit for delta calibration current limit DCDC */
|
||||
TFA9878_BF_USERDEF= 0xf042, /*!< Calibration delta current limit DCDC */
|
||||
TFA9878_BF_CUSTINFO= 0xf078, /*!< Reserved space for allowing customer to store speaker information */
|
||||
TFA9878_BF_R25C = 0xf50f, /*!< Ron resistance of speaker coil */
|
||||
} Tfa9878BfEnumList_t;
|
||||
#define TFA9878_NAMETABLE static tfaBfName_t Tfa9878DatasheetNames[]= {\
|
||||
{ 0x0, "PWDN"}, /* Powerdown selection , */\
|
||||
{ 0x10, "I2CR"}, /* I2C Reset - Auto clear , */\
|
||||
{ 0x30, "AMPE"}, /* Activate Amplifier , */\
|
||||
{ 0x40, "DCA"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "INTP"}, /* Interrupt config , */\
|
||||
{ 0x90, "FSSSEL"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "BYPOCP"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "TSTOCP"}, /* OCP testing control , */\
|
||||
{ 0x101, "AMPINSEL"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "MANSCONF"}, /* I2C configured , */\
|
||||
{ 0x131, "DCINSEL"}, /* VAMP_OUT2 input selection , */\
|
||||
{ 0x160, "MUTETO"}, /* Time out SB mute sequence , */\
|
||||
{ 0x170, "MANROBOD"}, /* Reaction on BOD , */\
|
||||
{ 0x180, "BODE"}, /* Enable BOD (only in direct control mode) , */\
|
||||
{ 0x190, "BODHYS"}, /* Enable Hysteresis of BOD , */\
|
||||
{ 0x1a1, "BODFILT"}, /* BOD filter , */\
|
||||
{ 0x1c1, "BODTHLVL"}, /* BOD threshold , */\
|
||||
{ 0x1e0, "OPENMTP"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "DISFCRBST"}, /* disable boost control with FRCBST , */\
|
||||
{ 0x203, "AUDFS"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "INPLEV"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "FRACTDEL"}, /* V/I Fractional delay , */\
|
||||
{ 0x2b1, "AMPINPSEL"}, /* amp input selection , */\
|
||||
{ 0x2d0, "PDMRATE"}, /* Pdm rate , */\
|
||||
{ 0x30f, "REV"}, /* Revision info , */\
|
||||
{ 0x401, "REFCKEXT"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "REFCKSEL"}, /* PLL internal ref clock , */\
|
||||
{ 0x432, "SWCLKSEL"}, /* Sound Wire clock frequnecy , */\
|
||||
{ 0x460, "MANAOOSC"}, /* Internal osc off at PWDN , */\
|
||||
{ 0x480, "FSSYNCEN"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "CLKREFSYNCEN"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "AUTOFROSEL"}, /* override automatic OSC selection mechanism , */\
|
||||
{ 0x4b0, "SWFRSYNC"}, /* Selection SW signal reference for Stream Synchronization , */\
|
||||
{ 0x500, "CGUSYNCDCG"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "FRCCLKSPKR"}, /* force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x5c0, "SSFAIME"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "CLKCHKLO"}, /* Clock check Low Threshold , */\
|
||||
{ 0x787, "CLKCHKHI"}, /* Clock check Higher Threshold , */\
|
||||
{ 0x802, "AMPOCRT"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0x1000, "VDDS"}, /* POR , */\
|
||||
{ 0x1010, "DCOCPOK"}, /* DCDC OCP nmos (sticky register , clear on read) , */\
|
||||
{ 0x1020, "OTDS"}, /* OTP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1030, "OCDS"}, /* OCP amplifier (sticky register , clear on read), */\
|
||||
{ 0x1040, "UVDS"}, /* UVP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1050, "MANALARM"}, /* Alarm state , */\
|
||||
{ 0x1060, "CLKS"}, /* Clocks stable , */\
|
||||
{ 0x1070, "MTPB"}, /* MTP busy , */\
|
||||
{ 0x1080, "NOCLK"}, /* Lost clock (sticky register , clear on read) , */\
|
||||
{ 0x1090, "BODNOK"}, /* BOD Flag - VDD NOT OK , */\
|
||||
{ 0x10a0, "TDMERR"}, /* TDM error , */\
|
||||
{ 0x1100, "DCIL"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "DCDCA"}, /* DCDC active (sticky register , clear on read) , */\
|
||||
{ 0x1120, "DCDCPC"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "DCHVBAT"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "DCH114"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "DCH107"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "PLLS"}, /* PLL lock , */\
|
||||
{ 0x1180, "TDMLUTER"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "CLKOOR"}, /* External clock status , */\
|
||||
{ 0x11d0, "SWS"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "AMPS"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "AREFS"}, /* References enable , */\
|
||||
{ 0x1300, "OCPOAP"}, /* OCPOK pmos B , */\
|
||||
{ 0x1310, "OCPOAN"}, /* OCPOK pmos A , */\
|
||||
{ 0x1320, "OCPOBP"}, /* OCPOK nmos B , */\
|
||||
{ 0x1330, "OCPOBN"}, /* OCPOK nmos A , */\
|
||||
{ 0x1380, "OVDS"}, /* OVP alarm , */\
|
||||
{ 0x1390, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "ADCCR"}, /* Control ADC , */\
|
||||
{ 0x13c0, "MANWAIT1"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "MANMUTE"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "MANOPER"}, /* Operating state , */\
|
||||
{ 0x1402, "TDMSTAT"}, /* TDM status bits , */\
|
||||
{ 0x1433, "MANSTATE"}, /* Device manager status , */\
|
||||
{ 0x1473, "AMPSTE"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "DCMODE"}, /* DCDC mode status bits , */\
|
||||
{ 0x1509, "BATS"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "TEMPS"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "VDDPS"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "TDME"}, /* Enable interface , */\
|
||||
{ 0x2013, "TDMSLOTS"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "TDMCLINV"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "TDMFSLN"}, /* FS length , */\
|
||||
{ 0x20b0, "TDMFSPOL"}, /* FS polarity , */\
|
||||
{ 0x20c3, "TDMNBCK"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "TDMSLLN"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "TDMBRMG"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "TDMDEL"}, /* data delay to FS , */\
|
||||
{ 0x21f0, "TDMADJ"}, /* data adjustment , */\
|
||||
{ 0x2201, "TDMOOMP"}, /* Received audio compression , */\
|
||||
{ 0x2224, "TDMSSIZE"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "TDMTXDFO"}, /* Format unused bits , */\
|
||||
{ 0x2291, "TDMTXUS0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "TDMSPKE"}, /* Control audio tdm channel in 0 , */\
|
||||
{ 0x2310, "TDMDCE"}, /* Control audio tdm channel in 1 , */\
|
||||
{ 0x2330, "TDMCSE"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "TDMVSE"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "TDMSPKS"}, /* tdm slot for sink 0 , */\
|
||||
{ 0x2643, "TDMDCS"}, /* tdm slot for sink 1 , */\
|
||||
{ 0x26c3, "TDMCSS"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "TDMVSS"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "ISTVDDS"}, /* Status POR , */\
|
||||
{ 0x4010, "ISTBSTOC"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "ISTOTDS"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "ISTOCPR"}, /* Status ocp alarm , */\
|
||||
{ 0x4040, "ISTUVDS"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "ISTMANALARM"}, /* Status nanager Alarm state , */\
|
||||
{ 0x4060, "ISTTDMER"}, /* Status tdm error , */\
|
||||
{ 0x4070, "ISTNOCLK"}, /* Status lost clock , */\
|
||||
{ 0x4080, "ISTBODNOK"}, /* Status BOD event , */\
|
||||
{ 0x4400, "ICLVDDS"}, /* Clear POR , */\
|
||||
{ 0x4410, "ICLBSTOC"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "ICLOTDS"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "ICLOCPR"}, /* Clear ocp alarm , */\
|
||||
{ 0x4440, "ICLUVDS"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "ICLMANALARM"}, /* Clear manager Alarm state , */\
|
||||
{ 0x4460, "ICLTDMER"}, /* Clear tdm error , */\
|
||||
{ 0x4470, "ICLNOCLK"}, /* Clear lost clk , */\
|
||||
{ 0x4480, "ICLBODNOK"}, /* Clear BOD event , */\
|
||||
{ 0x4800, "IEVDDS"}, /* Enable por , */\
|
||||
{ 0x4810, "IEBSTOC"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "IEOTDS"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "IEOCPR"}, /* Enable ocp alarm , */\
|
||||
{ 0x4840, "IEUVDS"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "IEMANALARM"}, /* Enable nanager Alarm state , */\
|
||||
{ 0x4860, "IETDMER"}, /* Enable tdm error , */\
|
||||
{ 0x4870, "IENOCLK"}, /* Enable lost clk , */\
|
||||
{ 0x4880, "IEBODNOK"}, /* Enable BOD trigger , */\
|
||||
{ 0x4c00, "IPOVDDS"}, /* Polarity por , */\
|
||||
{ 0x4c10, "IPOBSTOC"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "IPOOTDS"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "IPOOCPR"}, /* Polarity ocp alarm , */\
|
||||
{ 0x4c40, "IPOUVDS"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "IPOMANALARM"}, /* Polarity nanager Alarm state , */\
|
||||
{ 0x4c60, "IPOTDMER"}, /* Polarity tdm error , */\
|
||||
{ 0x4c70, "IPONOCLK"}, /* Polarity lost clk , */\
|
||||
{ 0x4c80, "IPOBODNOK"}, /* Polarity BOD trigger , */\
|
||||
{ 0x5001, "BSSCR"}, /* Battery Safeguard attack time (with K = 1 at sample rate fs of 32kHz, 44,1 kHz or 48kHz ; with K = 2 at sample rate fs 16 kHz . With K =0.5 at sample rate of 96 kHz), */\
|
||||
{ 0x5023, "BSST"}, /* Battery Safeguard threshold voltage level , */\
|
||||
{ 0x5061, "BSSRL"}, /* Battery Safeguard maximum reduction , */\
|
||||
{ 0x50e0, "BSSR"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "BSSBY"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "BSSS"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "HPFBYP"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "DPSA"}, /* Enable DPSA , */\
|
||||
{ 0x5222, "CLIPCTRL"}, /* Clip control setting , */\
|
||||
{ 0x5257, "AMPGAIN"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "SLOPEE"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "SLOPESET"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x52f0, "BYPDLYLINE"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x5f23, "TDMDCG"}, /* Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE), */\
|
||||
{ 0x5f63, "TDMSPKG"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x60e1, "IPM"}, /* Idle power mode control , */\
|
||||
{ 0x62e1, "LNMODE"}, /* ctrl select mode , */\
|
||||
{ 0x64e1, "LPM1MODE"}, /* low power mode control , */\
|
||||
{ 0x6802, "TDMSRCMAP"}, /* tdm source mapping , */\
|
||||
{ 0x6831, "TDMSRCAS"}, /* Sensed value A , */\
|
||||
{ 0x6851, "TDMSRCBS"}, /* Sensed value B , */\
|
||||
{ 0x6871, "TDMSRCACLIP"}, /* clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "TDMSRCBCLIP"}, /* clip information (analog /digital) for source1 , */\
|
||||
{ 0x6e00, "LP0"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "LP1"}, /* low power mode 1 detection , */\
|
||||
{ 0x6e20, "LA"}, /* low amplitude detection , */\
|
||||
{ 0x6e30, "VDDPH"}, /* vddp greater than vbat , */\
|
||||
{ 0x6f02, "DELCURCOMP"}, /* delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "SIGCURCOMP"}, /* polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "ENCURCOMP"}, /* enable current sense compensation , */\
|
||||
{ 0x6f72, "LVLCLPPWM"}, /* set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "DCMCC"}, /* Max coil current , */\
|
||||
{ 0x7041, "DCCV"}, /* Slope compensation current, represents LxF (inductance x frequency) value , */\
|
||||
{ 0x7060, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "DCSR"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "DCOVL"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "DCDIS"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "DCPWM"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7430, "DCTRACK"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "DCTRIP"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "DCHOLD"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "DCINT"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7534, "DCTRIP2"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "DCTRIPT"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "DCTRIPHYSTE"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7635, "DCVOF"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "DCVOS"}, /* Second boost voltage level , */\
|
||||
{ 0xa107, "MTPK"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "KEY1LOCKED"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "KEY2LOCKED"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "MTPADDR"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa50f, "MTPRDMSB"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "MTPRDLSB"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "MTPWRMSB"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "MTPWRLSB"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb108, "EXTTS"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "TROS"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xcd05, "PLLINSI"}, /* PLL INSELI - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "PLLINSP"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "PLLINSR"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "PLLBDSEL"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "PLLNDEC"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "PLLMDECM"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "PLLBP"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "PLLDI"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "PLLDO"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "PLLCLKSTB"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "PLLFRM"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "PLLMDECL"}, /* Bits 15..0 of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "PLLPDEC"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "PLLDCTRL"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "PLLLIMOFF"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "PLLSTRTM"}, /* PLL startup time selection control , */\
|
||||
{ 0xe00f, "SWPROFIL"}, /* Software profile data , */\
|
||||
{ 0xe10f, "SWVSTEP"}, /* Software vstep information , */\
|
||||
{ 0xf000, "MTPOTC"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "MTPEX"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "DCMCCAPI"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "DCMCCSB"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "USERDEF"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "CUSTINFO"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf50f, "R25C"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9878_BITNAMETABLE static tfaBfName_t Tfa9878BitNames[]= {\
|
||||
{ 0x0, "powerdown"}, /* Powerdown selection , */\
|
||||
{ 0x10, "reset"}, /* I2C Reset - Auto clear , */\
|
||||
{ 0x30, "enbl_amplifier"}, /* Activate Amplifier , */\
|
||||
{ 0x40, "enbl_boost"}, /* Activate DC-to-DC converter , */\
|
||||
{ 0x71, "int_pad_io"}, /* Interrupt config , */\
|
||||
{ 0x90, "fs_pulse_sel"}, /* Audio sample reference , */\
|
||||
{ 0xb0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0xc0, "test_ocp"}, /* OCP testing control , */\
|
||||
{ 0xd0, "sel_man_wait_time"}, /* Manager wait time selection control , */\
|
||||
{ 0x101, "vamp_sel1"}, /* Amplifier input selection , */\
|
||||
{ 0x120, "src_set_configured"}, /* I2C configured , */\
|
||||
{ 0x131, "vamp_sel2"}, /* VAMP_OUT2 input selection , */\
|
||||
{ 0x160, "disable_mute_time_out"}, /* Time out SB mute sequence , */\
|
||||
{ 0x170, "man_enbl_brown"}, /* Reaction on BOD , */\
|
||||
{ 0x180, "bod_enbl"}, /* Enable BOD (only in direct control mode) , */\
|
||||
{ 0x190, "bod_hyst_enbl"}, /* Enable Hysteresis of BOD , */\
|
||||
{ 0x1a1, "bod_delay_set"}, /* BOD filter , */\
|
||||
{ 0x1c1, "bod_lvl_set"}, /* BOD threshold , */\
|
||||
{ 0x1e0, "unprotect_faim"}, /* Control for FAIM protection , */\
|
||||
{ 0x1f0, "disable_frcbst"}, /* disable boost control with FRCBST , */\
|
||||
{ 0x203, "audio_fs"}, /* Sample rate (fs) , */\
|
||||
{ 0x240, "input_level"}, /* TDM output attenuation , */\
|
||||
{ 0x255, "cs_frac_delay"}, /* V/I Fractional delay , */\
|
||||
{ 0x2b1, "amp_input_sel"}, /* amp input selection , */\
|
||||
{ 0x2d0, "pdm_rate"}, /* Pdm rate , */\
|
||||
{ 0x30f, "device_rev"}, /* Revision info , */\
|
||||
{ 0x401, "pll_clkin_sel"}, /* PLL external ref clock , */\
|
||||
{ 0x420, "pll_clkin_sel_osc"}, /* PLL internal ref clock , */\
|
||||
{ 0x432, "sw_clk_sel"}, /* Sound Wire clock frequnecy , */\
|
||||
{ 0x460, "enbl_osc_auto_off"}, /* Internal osc off at PWDN , */\
|
||||
{ 0x480, "enbl_fs_sync"}, /* Enable FS synchronisation for clock divider , */\
|
||||
{ 0x490, "enbl_clkref_sync"}, /* Enable PLL reference clock synchronisation for clock divider, */\
|
||||
{ 0x4a0, "override_auto_sel_osc"}, /* override automatic OSC selection mechanism , */\
|
||||
{ 0x4b0, "sw_sync_sel"}, /* Selection SW signal reference for Stream Synchronization , */\
|
||||
{ 0x500, "disable_cgu_sync_cgate"}, /* Clock gating control for CGU synchronisation module, */\
|
||||
{ 0x510, "force_spkr_clk"}, /* force active the speaker sub-system clock when in idle power, */\
|
||||
{ 0x5c0, "enbl_faim_ss"}, /* Sub-system FAIM , */\
|
||||
{ 0x707, "clkchk_th_lo"}, /* Clock check Low Threshold , */\
|
||||
{ 0x787, "clkchk_th_hi"}, /* Clock check Higher Threshold , */\
|
||||
{ 0x802, "ctrl_on2off_criterion"}, /* Amplifier on-off criteria for shutdown , */\
|
||||
{ 0xe07, "ctrl_digtoana"}, /* Spare control from digital to analog , */\
|
||||
{ 0xf0f, "hidden_code"}, /* 5A6Bh, 23147d to access registers (default for engineering), */\
|
||||
{ 0x1000, "flag_por"}, /* POR , */\
|
||||
{ 0x1010, "flag_bst_ocpok"}, /* DCDC OCP nmos (sticky register , clear on read) , */\
|
||||
{ 0x1020, "flag_otpok"}, /* OTP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1030, "flag_ocp_alarm"}, /* OCP amplifier (sticky register , clear on read), */\
|
||||
{ 0x1040, "flag_uvpok"}, /* UVP alarm (sticky register , clear on read) , */\
|
||||
{ 0x1050, "flag_man_alarm_state"}, /* Alarm state , */\
|
||||
{ 0x1060, "flag_clocks_stable"}, /* Clocks stable , */\
|
||||
{ 0x1070, "flag_mtp_busy"}, /* MTP busy , */\
|
||||
{ 0x1080, "flag_lost_clk"}, /* Lost clock (sticky register , clear on read) , */\
|
||||
{ 0x1090, "flag_bod_vddd_nok"}, /* BOD Flag - VDD NOT OK , */\
|
||||
{ 0x10a0, "flag_tdm_error"}, /* TDM error , */\
|
||||
{ 0x1100, "flag_bst_bstcur"}, /* DCDC current limiting , */\
|
||||
{ 0x1110, "flag_bst_hiz"}, /* DCDC active (sticky register , clear on read) , */\
|
||||
{ 0x1120, "flag_bst_peakcur"}, /* Indicates current is max in DC-to-DC converter , */\
|
||||
{ 0x1130, "flag_bst_voutcomp"}, /* DCDC level 1x , */\
|
||||
{ 0x1140, "flag_bst_voutcomp86"}, /* DCDC level 1.14x , */\
|
||||
{ 0x1150, "flag_bst_voutcomp93"}, /* DCDC level 1.07x , */\
|
||||
{ 0x1160, "flag_pll_lock"}, /* PLL lock , */\
|
||||
{ 0x1180, "flag_tdm_lut_error"}, /* TDM LUT error , */\
|
||||
{ 0x11c0, "flag_clk_out_of_range"}, /* External clock status , */\
|
||||
{ 0x11d0, "flag_engage"}, /* Amplifier engage , */\
|
||||
{ 0x11e0, "flag_enbl_amp"}, /* Amplifier enable , */\
|
||||
{ 0x11f0, "flag_enbl_ref"}, /* References enable , */\
|
||||
{ 0x1300, "flag_ocpokbp"}, /* OCPOK pmos B , */\
|
||||
{ 0x1310, "flag_ocpokap"}, /* OCPOK pmos A , */\
|
||||
{ 0x1320, "flag_ocpokbn"}, /* OCPOK nmos B , */\
|
||||
{ 0x1330, "flag_ocpokan"}, /* OCPOK nmos A , */\
|
||||
{ 0x1380, "flag_ovpok"}, /* OVP alarm , */\
|
||||
{ 0x1390, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x13a0, "flag_adc10_ready"}, /* Control ADC , */\
|
||||
{ 0x13c0, "flag_man_wait_src_settings"}, /* Wait HW I2C settings , */\
|
||||
{ 0x13e0, "flag_man_start_mute_audio"}, /* Audio mute sequence , */\
|
||||
{ 0x13f0, "flag_man_operating_state"}, /* Operating state , */\
|
||||
{ 0x1402, "flag_tdm_status"}, /* TDM status bits , */\
|
||||
{ 0x1433, "man_state"}, /* Device manager status , */\
|
||||
{ 0x1473, "amp_ctrl_state"}, /* Amplifier control status , */\
|
||||
{ 0x14b1, "status_bst_mode"}, /* DCDC mode status bits , */\
|
||||
{ 0x1509, "bat_adc"}, /* Battery voltage (V) , */\
|
||||
{ 0x1608, "temp_adc"}, /* IC Temperature (C) , */\
|
||||
{ 0x1709, "vddp_adc"}, /* IC VDDP voltage ( 1023*VDDP/13 V) , */\
|
||||
{ 0x2000, "tdm_enable"}, /* Enable interface , */\
|
||||
{ 0x2013, "tdm_nb_of_slots"}, /* N-slots in Frame , */\
|
||||
{ 0x2060, "tdm_clk_inversion"}, /* Reception data to BCK clock , */\
|
||||
{ 0x2073, "tdm_fs_ws_length"}, /* FS length , */\
|
||||
{ 0x20b0, "tdm_fs_ws_polarity"}, /* FS polarity , */\
|
||||
{ 0x20c3, "tdm_nbck"}, /* N-BCK's in FS , */\
|
||||
{ 0x2144, "tdm_slot_length"}, /* N-bits in slot , */\
|
||||
{ 0x2194, "tdm_bits_remaining"}, /* N-bits remaining , */\
|
||||
{ 0x21e0, "tdm_data_delay"}, /* data delay to FS , */\
|
||||
{ 0x21f0, "tdm_data_adjustment"}, /* data adjustment , */\
|
||||
{ 0x2201, "tdm_audio_sample_compression"}, /* Received audio compression , */\
|
||||
{ 0x2224, "tdm_sample_size"}, /* Sample size per slot , */\
|
||||
{ 0x2271, "tdm_txdata_format"}, /* Format unused bits , */\
|
||||
{ 0x2291, "tdm_txdata_format_unused_slot_sd0"}, /* Format unused slots DATAO , */\
|
||||
{ 0x2300, "tdm_sink0_enable"}, /* Control audio tdm channel in 0 , */\
|
||||
{ 0x2310, "tdm_sink1_enable"}, /* Control audio tdm channel in 1 , */\
|
||||
{ 0x2330, "tdm_source0_enable"}, /* current sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2340, "tdm_source1_enable"}, /* Voltage sense vbat temperature and vddp feedback , */\
|
||||
{ 0x2603, "tdm_sink0_slot"}, /* tdm slot for sink 0 , */\
|
||||
{ 0x2643, "tdm_sink1_slot"}, /* tdm slot for sink 1 , */\
|
||||
{ 0x26c3, "tdm_source0_slot"}, /* Slot Position of current sense vbat temperature and vddp feedback, */\
|
||||
{ 0x2703, "tdm_source1_slot"}, /* Slot Position of Voltage sense vbat temperature and vddp feedback, */\
|
||||
{ 0x4000, "int_out_flag_por"}, /* Status POR , */\
|
||||
{ 0x4010, "int_out_flag_bst_ocpok"}, /* Status DCDC OCP , */\
|
||||
{ 0x4020, "int_out_flag_otpok"}, /* Status OTP alarm , */\
|
||||
{ 0x4030, "int_out_flag_ocp_alarm"}, /* Status ocp alarm , */\
|
||||
{ 0x4040, "int_out_flag_uvpok"}, /* Status UVP alarm , */\
|
||||
{ 0x4050, "int_out_flag_man_alarm_state"}, /* Status nanager Alarm state , */\
|
||||
{ 0x4060, "int_out_flag_tdm_error"}, /* Status tdm error , */\
|
||||
{ 0x4070, "int_out_flag_lost_clk"}, /* Status lost clock , */\
|
||||
{ 0x4080, "int_out_flag_bod_vddd_nok"}, /* Status BOD event , */\
|
||||
{ 0x4400, "int_in_flag_por"}, /* Clear POR , */\
|
||||
{ 0x4410, "int_in_flag_bst_ocpok"}, /* Clear DCDC OCP , */\
|
||||
{ 0x4420, "int_in_flag_otpok"}, /* Clear OTP alarm , */\
|
||||
{ 0x4430, "int_in_flag_ocp_alarm"}, /* Clear ocp alarm , */\
|
||||
{ 0x4440, "int_in_flag_uvpok"}, /* Clear UVP alarm , */\
|
||||
{ 0x4450, "int_in_flag_man_alarm_state"}, /* Clear manager Alarm state , */\
|
||||
{ 0x4460, "int_in_flag_tdm_error"}, /* Clear tdm error , */\
|
||||
{ 0x4470, "int_in_flag_lost_clk"}, /* Clear lost clk , */\
|
||||
{ 0x4480, "int_in_flag_bod_vddd_nok"}, /* Clear BOD event , */\
|
||||
{ 0x4800, "int_enable_flag_por"}, /* Enable por , */\
|
||||
{ 0x4810, "int_enable_flag_bst_ocpok"}, /* Enable DCDC OCP , */\
|
||||
{ 0x4820, "int_enable_flag_otpok"}, /* Enable OTP alarm , */\
|
||||
{ 0x4830, "int_enable_flag_ocp_alarm"}, /* Enable ocp alarm , */\
|
||||
{ 0x4840, "int_enable_flag_uvpok"}, /* Enable UVP alarm , */\
|
||||
{ 0x4850, "int_enable_flag_man_alarm_state"}, /* Enable nanager Alarm state , */\
|
||||
{ 0x4860, "int_enable_flag_tdm_error"}, /* Enable tdm error , */\
|
||||
{ 0x4870, "int_enable_flag_lost_clk"}, /* Enable lost clk , */\
|
||||
{ 0x4880, "int_enable_flag_bod_vddd_nok"}, /* Enable BOD trigger , */\
|
||||
{ 0x4c00, "int_polarity_flag_por"}, /* Polarity por , */\
|
||||
{ 0x4c10, "int_polarity_flag_bst_ocpok"}, /* Polarity DCDC OCP , */\
|
||||
{ 0x4c20, "int_polarity_flag_otpok"}, /* Polarity OTP alarm , */\
|
||||
{ 0x4c30, "int_polarity_flag_ocp_alarm"}, /* Polarity ocp alarm , */\
|
||||
{ 0x4c40, "int_polarity_flag_uvpok"}, /* Polarity UVP alarm , */\
|
||||
{ 0x4c50, "int_polarity_flag_man_alarm_state"}, /* Polarity nanager Alarm state , */\
|
||||
{ 0x4c60, "int_polarity_flag_tdm_error"}, /* Polarity tdm error , */\
|
||||
{ 0x4c70, "int_polarity_flag_lost_clk"}, /* Polarity lost clk , */\
|
||||
{ 0x4c80, "int_polarity_flag_bod_vddd_nok"}, /* Polarity BOD trigger , */\
|
||||
{ 0x5001, "vbat_prot_attack_time"}, /* Battery Safeguard attack time (with K = 1 at sample rate fs of 32kHz, 44,1 kHz or 48kHz ; with K = 2 at sample rate fs 16 kHz . With K =0.5 at sample rate of 96 kHz), */\
|
||||
{ 0x5023, "vbat_prot_thlevel"}, /* Battery Safeguard threshold voltage level , */\
|
||||
{ 0x5061, "vbat_prot_max_reduct"}, /* Battery Safeguard maximum reduction , */\
|
||||
{ 0x50d0, "rst_min_vbat"}, /* Reset clipper - Auto clear , */\
|
||||
{ 0x50e0, "sel_vbat"}, /* Battery voltage read out , */\
|
||||
{ 0x50f0, "bypass_clipper"}, /* Bypass battery safeguard , */\
|
||||
{ 0x5100, "batsense_steepness"}, /* Vbat prot steepness , */\
|
||||
{ 0x5150, "bypass_hp"}, /* Bypass HPF , */\
|
||||
{ 0x5170, "enbl_dpsa"}, /* Enable DPSA , */\
|
||||
{ 0x5222, "ctrl_cc"}, /* Clip control setting , */\
|
||||
{ 0x5257, "gain"}, /* Amplifier gain , */\
|
||||
{ 0x52d0, "ctrl_slopectrl"}, /* Enables slope control , */\
|
||||
{ 0x52e0, "ctrl_slope"}, /* Slope speed setting (bin. coded) , */\
|
||||
{ 0x52f0, "bypass_dly_line"}, /* Bypass the interpolator delay line , */\
|
||||
{ 0x5301, "dpsa_level"}, /* DPSA threshold levels , */\
|
||||
{ 0x5321, "dpsa_release"}, /* DPSA Release time , */\
|
||||
{ 0x5350, "bypass_lp"}, /* Bypass the low pass filter inside temperature sensor, */\
|
||||
{ 0x5400, "first_order_mode"}, /* Overrule to 1st order mode of control stage when clipping, */\
|
||||
{ 0x5430, "icomp_engage"}, /* Engage of icomp , */\
|
||||
{ 0x5440, "ctrl_kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x5450, "icomp_engage_overrule"}, /* To overrule the functional icomp_engage signal during validation, */\
|
||||
{ 0x5463, "ctrl_dem"}, /* Enable DEM icomp and DEM one bit dac , */\
|
||||
{ 0x5500, "bypass_ctrlloop"}, /* Switch amplifier into open loop configuration , */\
|
||||
{ 0x5513, "ctrl_dem_mismatch"}, /* Enable DEM icomp mismatch for testing , */\
|
||||
{ 0x5552, "dpsa_drive"}, /* Drive setting (bin. coded) , */\
|
||||
{ 0x5600, "ref_iref_enbl"}, /* Enable of reference current for OCP , */\
|
||||
{ 0x5631, "ref_irefdist_set_ctrl"}, /* Scaling of reference current for OCP , */\
|
||||
{ 0x5652, "ref_irefdist_test_enbl"}, /* Enable of test-function of distribution of reference current, used for OCP. When enabled, the current will to to anamux iso powerstages. Using e.g. 011 it will add the current of powerstage P and N., */\
|
||||
{ 0x570a, "enbl_amp"}, /* Switch on the class-D power sections, each part of the analog sections can be switched on/off individually, */\
|
||||
{ 0x57b0, "enbl_engage"}, /* Enables/engage power stage and control loop , */\
|
||||
{ 0x57c0, "enbl_engage_pst"}, /* Enables/engage power stage and control loop , */\
|
||||
{ 0x5810, "hard_mute"}, /* Hard mute - PWM , */\
|
||||
{ 0x5844, "pwm_delay"}, /* PWM delay bits to set the delay, clockd is 1/(k*2048*fs), */\
|
||||
{ 0x5890, "reclock_pwm"}, /* Reclock the pwm signal inside analog , */\
|
||||
{ 0x58a0, "reclock_voltsense"}, /* Reclock the voltage sense pwm signal , */\
|
||||
{ 0x58c0, "enbl_pwm_phase_shift"}, /* Control for pwm phase shift , */\
|
||||
{ 0x5900, "pwm_clk_sel"}, /* Control for selection for PWM delay line source , */\
|
||||
{ 0x5910, "sel_pwm_delay_src"}, /* Control for selection for PWM delay line source , */\
|
||||
{ 0x5f23, "ctrl_attl"}, /* Second channel gain in case of stereo using a single coil. (Total gain depending on INPLEV). (In case of mono OR stereo using 2 separate DCDC channel 1 should be disabled using TDMDCE), */\
|
||||
{ 0x5f63, "ctrl_attr"}, /* Total gain depending on INPLEV setting (channel 0), */\
|
||||
{ 0x6005, "idle_power_cal_offset"}, /* Idle power mode detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6065, "idle_power_zero_lvl"}, /* IIdle power mode zero crossing detection level , */\
|
||||
{ 0x60e1, "idle_power_mode"}, /* Idle power mode control , */\
|
||||
{ 0x6105, "idle_power_threshold_lvl"}, /* Idle power mode amplitude trigger level , */\
|
||||
{ 0x6165, "idle_power_hold_time"}, /* Idle power mode detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x61c0, "disable_idle_power_mode"}, /* Idle power mode detector control , */\
|
||||
{ 0x6265, "zero_lvl"}, /* low noise gain switch zero trigger level , */\
|
||||
{ 0x62c1, "ctrl_fb_resistor"}, /* Select amplifier feedback resistor connection , */\
|
||||
{ 0x62e1, "lownoisegain_mode"}, /* ctrl select mode , */\
|
||||
{ 0x6305, "threshold_lvl"}, /* low noise gain switch trigger level , */\
|
||||
{ 0x6365, "hold_time"}, /* ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x6405, "lpm1_cal_offset"}, /* low power mode1 detector ctrl cal_offset from gain module , */\
|
||||
{ 0x6465, "lpm1_zero_lvl"}, /* low power mode1 zero crossing detection level , */\
|
||||
{ 0x64e1, "lpm1_mode"}, /* low power mode control , */\
|
||||
{ 0x6505, "lpm1_threshold_lvl"}, /* low power mode1 amplitude trigger level , */\
|
||||
{ 0x6565, "lpm1_hold_time"}, /* low power mode1 detector ctrl hold time before low audio is reckoned to be low audio, */\
|
||||
{ 0x65c0, "disable_low_power_mode"}, /* low power mode1 detector control , */\
|
||||
{ 0x6600, "dcdc_pfm20khz_limit"}, /* DCDC in PFM mode pwm mode is activated each 50us to force a pwm pulse, */\
|
||||
{ 0x6611, "dcdc_ctrl_maxzercnt"}, /* DCDC. Number of zero current flags to count before going to pfm mode, */\
|
||||
{ 0x6656, "dcdc_vbat_delta_detect"}, /* Threshold before booster is reacting on a delta Vbat (in PFM mode) by temporarily switching to PWM mode, */\
|
||||
{ 0x66c0, "dcdc_ignore_vbat"}, /* Ignore an increase on Vbat , */\
|
||||
{ 0x6700, "enbl_minion"}, /* Enables minion (small) power stage , */\
|
||||
{ 0x6713, "vth_vddpvbat"}, /* select vddp-vbat thres signal , */\
|
||||
{ 0x6750, "lpen_vddpvbat"}, /* select vddp-vbat filtred vs unfiltered compare , */\
|
||||
{ 0x6761, "ctrl_rfb"}, /* Feedback resistor selection - I2C direct mode , */\
|
||||
{ 0x6802, "tdm_source_mapping"}, /* tdm source mapping , */\
|
||||
{ 0x6831, "tdm_sourcea_frame_sel"}, /* Sensed value A , */\
|
||||
{ 0x6851, "tdm_sourceb_frame_sel"}, /* Sensed value B , */\
|
||||
{ 0x6871, "tdm_source0_clip_sel"}, /* clip information (analog /digital) for source0 , */\
|
||||
{ 0x6891, "tdm_source1_clip_sel"}, /* clip information (analog /digital) for source1 , */\
|
||||
{ 0x6a02, "rst_min_vbat_delay"}, /* rst_min_vbat delay (nb fs) , */\
|
||||
{ 0x6b00, "disable_auto_engage"}, /* disable auto engange , */\
|
||||
{ 0x6b10, "disable_engage"}, /* disable engange , */\
|
||||
{ 0x6c02, "ns_hp2ln_criterion"}, /* 0..7 zeroes at ns as threshold to swap from high_power to low_noise, */\
|
||||
{ 0x6c32, "ns_ln2hp_criterion"}, /* 0..7 zeroes at ns as threshold to swap from low_noise to high_power, */\
|
||||
{ 0x6c69, "spare_out"}, /* spare_out , */\
|
||||
{ 0x6d0f, "spare_in"}, /* spare_in , */\
|
||||
{ 0x6e00, "flag_idle_power_mode"}, /* Idle power mode , */\
|
||||
{ 0x6e10, "flag_lp_detect_mode1"}, /* low power mode 1 detection , */\
|
||||
{ 0x6e20, "flag_low_amplitude"}, /* low amplitude detection , */\
|
||||
{ 0x6e30, "flag_vddp_gt_vbat"}, /* vddp greater than vbat , */\
|
||||
{ 0x6f02, "cursense_comp_delay"}, /* delay to allign compensation signal with current sense signal, */\
|
||||
{ 0x6f40, "cursense_comp_sign"}, /* polarity of compensation for current sense , */\
|
||||
{ 0x6f50, "enbl_cursense_comp"}, /* enable current sense compensation , */\
|
||||
{ 0x6f72, "pwms_clip_lvl"}, /* set the amount of pwm pulse that may be skipped before clip-flag is triggered, */\
|
||||
{ 0x7003, "boost_cur"}, /* Max coil current , */\
|
||||
{ 0x7041, "bst_slpcmplvl"}, /* Slope compensation current, represents LxF (inductance x frequency) value , */\
|
||||
{ 0x7060, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7070, "boost_speed"}, /* Soft ramp up/down , */\
|
||||
{ 0x7085, "overshoot_correction_lvl"}, /* Threshold level to activate active overshoot control, */\
|
||||
{ 0x70e0, "dcdcoff_mode"}, /* DCDC on/off , */\
|
||||
{ 0x70f0, "dcdc_pwmonly"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7104, "bst_drive"}, /* Binary coded drive setting for boost converter power stage, */\
|
||||
{ 0x7151, "bst_scalecur"}, /* For testing direct control scale current , */\
|
||||
{ 0x7174, "bst_slopecur"}, /* For testing direct control slope current , */\
|
||||
{ 0x71c1, "bst_slope"}, /* Boost slope speed , */\
|
||||
{ 0x71e0, "bst_bypass_bstcur"}, /* Bypass control for boost current settings , */\
|
||||
{ 0x71f0, "bst_bypass_bstfoldback"}, /* Bypass control for boost foldback , */\
|
||||
{ 0x7200, "enbl_bst_engage"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x7210, "enbl_bst_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x7220, "enbl_bst_peak2avg"}, /* Enable boost peak2avg functionality , */\
|
||||
{ 0x7230, "enbl_bst_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x7240, "enbl_bst_power"}, /* Enable line of the powerstage , */\
|
||||
{ 0x7250, "enbl_bst_slopecur"}, /* Enable bit of max-current dac , */\
|
||||
{ 0x7260, "enbl_bst_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x7270, "enbl_bst_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x7280, "enbl_bst_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x7290, "enbl_bst_windac"}, /* Enable window dac , */\
|
||||
{ 0x72a5, "bst_windac"}, /* for testing direct control windac , */\
|
||||
{ 0x7300, "boost_alg"}, /* Control for boost adaptive loop gain , */\
|
||||
{ 0x7311, "boost_loopgain"}, /* DCDC boost loopgain setting , */\
|
||||
{ 0x7331, "bst_freq"}, /* DCDC boost frequency control , */\
|
||||
{ 0x7360, "bst_use_new_zercur_detect"}, /* Enable new zero current detection for boost control, */\
|
||||
{ 0x7430, "boost_track"}, /* Boost algorithm selection, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x7444, "boost_trip_lvl_1st"}, /* 1st Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7494, "boost_hold_time"}, /* Hold time for DCDC booster, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74e0, "sel_dcdc_envelope_8fs"}, /* Selection of data for adaptive boost algorithm, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x74f0, "ignore_flag_voutcomp86"}, /* Determines the maximum PWM frequency be the most efficient in relation to the Booster inductor value, */\
|
||||
{ 0x7534, "boost_trip_lvl_2nd"}, /* 2nd Adaptive boost trip levels, effective only when DCIE is set to 1, */\
|
||||
{ 0x7584, "boost_trip_lvl_track"}, /* Track Adaptive boost trip levels, effective only when boost_intelligent is set to 1, */\
|
||||
{ 0x75f0, "enbl_trip_hyst"}, /* Enable hysteresis on booster trip levels , */\
|
||||
{ 0x7635, "frst_boost_voltage"}, /* First boost voltage level , */\
|
||||
{ 0x7695, "scnd_boost_voltage"}, /* Second boost voltage level , */\
|
||||
{ 0x8050, "cs_gain_control"}, /* Current sense gain control , */\
|
||||
{ 0x8060, "cs_bypass_gc"}, /* Bypasses the CS gain correction , */\
|
||||
{ 0x8087, "cs_gain"}, /* Current sense gain , */\
|
||||
{ 0x8210, "invertpwm"}, /* Current sense common mode feedback pwm invert control, */\
|
||||
{ 0x8305, "cs_ktemp"}, /* Current sense temperature compensation trimming (1 - VALUE*TEMP)*signal, */\
|
||||
{ 0x8364, "cs_ktemp2"}, /* Second order temperature compensation coefficient , */\
|
||||
{ 0x8400, "cs_adc_bsoinv"}, /* Bitstream inversion for current sense ADC , */\
|
||||
{ 0x8440, "cs_adc_nortz"}, /* Return to zero for current sense ADC , */\
|
||||
{ 0x8490, "cs_adc_slowdel"}, /* Select delay for current sense ADC (internal decision circuitry), */\
|
||||
{ 0x8510, "cs_classd_tran_skip"}, /* Skip current sense connection during a classD amplifier transition, */\
|
||||
{ 0x8530, "cs_inn_short"}, /* Short current sense negative to common mode , */\
|
||||
{ 0x8540, "cs_inp_short"}, /* Short current sense positive to common mode , */\
|
||||
{ 0x8550, "cs_ldo_bypass"}, /* Bypass current sense LDO , */\
|
||||
{ 0x8560, "cs_ldo_pulldown"}, /* Pull down current sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8574, "cs_ldo_voset"}, /* Current sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8700, "enbl_cs_adc"}, /* Enable current sense ADC , */\
|
||||
{ 0x8710, "enbl_cs_inn1"}, /* Enable connection of current sense negative1 , */\
|
||||
{ 0x8720, "enbl_cs_inn2"}, /* Enable connection of current sense negative2 , */\
|
||||
{ 0x8730, "enbl_cs_inp1"}, /* Enable connection of current sense positive1 , */\
|
||||
{ 0x8740, "enbl_cs_inp2"}, /* Enable connection of current sense positive2 , */\
|
||||
{ 0x8750, "enbl_cs_ldo"}, /* Enable current sense LDO , */\
|
||||
{ 0x8780, "enbl_cs_vbatldo"}, /* Enable of current sense LDO , */\
|
||||
{ 0x8790, "enbl_dc_filter"}, /* Control for enabling the DC blocking filter for voltage and current sense, */\
|
||||
{ 0x8850, "vs_gain_control"}, /* Voltage sense gain control , */\
|
||||
{ 0x8860, "vs_bypass_gc"}, /* Bypasses the VS gain correction , */\
|
||||
{ 0x8887, "vs_gain"}, /* voltage sense gain , */\
|
||||
{ 0x8c00, "vs_adc_bsoinv"}, /* Bitstream inversion for voltage sense ADC , */\
|
||||
{ 0x8c40, "vs_adc_nortz"}, /* Return to zero for voltage sense ADC , */\
|
||||
{ 0x8c90, "vs_adc_slowdel"}, /* Select delay for voltage sense ADC (internal decision circuitry), */\
|
||||
{ 0x8d30, "vs_inn_short"}, /* Short voltage sense negative to common mode , */\
|
||||
{ 0x8d40, "vs_inp_short"}, /* Short voltage sense positive to common mode , */\
|
||||
{ 0x8d50, "vs_ldo_bypass"}, /* Bypass voltage sense LDO , */\
|
||||
{ 0x8d60, "vs_ldo_pulldown"}, /* Pull down voltage sense LDO, only valid if left_enbl_cs_ldo is high, */\
|
||||
{ 0x8d74, "vs_ldo_voset"}, /* Voltage sense LDO voltage level setting (two's complement), */\
|
||||
{ 0x8f00, "enbl_vs_adc"}, /* Enable voltage sense ADC (Direct Control only only others done by manager), */\
|
||||
{ 0x8f10, "enbl_vs_inn1"}, /* Enable connection of voltage sense negative1 , */\
|
||||
{ 0x8f20, "enbl_vs_inn2"}, /* Enable connection of voltage sense negative2 , */\
|
||||
{ 0x8f30, "enbl_vs_inp1"}, /* Enable connection of voltage sense positive1 , */\
|
||||
{ 0x8f40, "enbl_vs_inp2"}, /* Enable connection of voltage sense positive2 , */\
|
||||
{ 0x8f50, "enbl_vs_ldo"}, /* Enable voltage sense LDO (Direct Control only only others done by manager), */\
|
||||
{ 0x8f80, "enbl_vs_vbatldo"}, /* Enable of voltage sense LDO (Direct Control only others done by manager), */\
|
||||
{ 0xa007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0xa107, "mtpkey2"}, /* MTP KEY2 register , */\
|
||||
{ 0xa200, "key01_locked"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0xa210, "key02_locked"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0xa302, "mtp_man_address_in"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0xa330, "man_copy_mtp_to_iic"}, /* Start copying single word from mtp to I2C mtp register, */\
|
||||
{ 0xa340, "man_copy_iic_to_mtp"}, /* Start copying single word from I2C mtp register to mtp, */\
|
||||
{ 0xa350, "auto_copy_mtp_to_iic"}, /* Start copying all the data from mtp to I2C mtp registers, */\
|
||||
{ 0xa360, "auto_copy_iic_to_mtp"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0xa400, "faim_set_clkws"}, /* Sets the faim controller clock wait state register, */\
|
||||
{ 0xa410, "faim_sel_evenrows"}, /* All even rows of the faim are selected, active high, */\
|
||||
{ 0xa420, "faim_sel_oddrows"}, /* All odd rows of the faim are selected, all rows in combination with sel_evenrows, */\
|
||||
{ 0xa430, "faim_program_only"}, /* Skip the erase access at wr_faim command (write-program-marginread), */\
|
||||
{ 0xa440, "faim_erase_only"}, /* Skip the program access at wr_faim command (write-erase-marginread), */\
|
||||
{ 0xa50f, "mtp_man_data_out_msb"}, /* MSB word of MTP manual read data , */\
|
||||
{ 0xa60f, "mtp_man_data_out_lsb"}, /* LSB word of MTP manual read data , */\
|
||||
{ 0xa70f, "mtp_man_data_in_msb"}, /* MSB word of write data for MTP manual write , */\
|
||||
{ 0xa80f, "mtp_man_data_in_lsb"}, /* LSB word of write data for MTP manual write , */\
|
||||
{ 0xb010, "bypass_ocpcounter"}, /* Bypass OCP Counter , */\
|
||||
{ 0xb020, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0xb030, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0xb040, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0xb050, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0xb060, "bypass_lost_clk"}, /* Bypass lost clock detector , */\
|
||||
{ 0xb070, "ctrl_vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0xb087, "ocp_threshold"}, /* OCP threshold level , */\
|
||||
{ 0xb108, "ext_temp"}, /* External temperature (C) , */\
|
||||
{ 0xb190, "ext_temp_sel"}, /* Select temp Speaker calibration , */\
|
||||
{ 0xc000, "use_direct_ctrls"}, /* Direct control to overrule several functions for testing, */\
|
||||
{ 0xc010, "rst_datapath"}, /* Direct control for datapath reset , */\
|
||||
{ 0xc020, "rst_cgu"}, /* Direct control for cgu reset , */\
|
||||
{ 0xc038, "enbl_ref"}, /* Switch on the analog references, each part of the references can be switched on/off individually, */\
|
||||
{ 0xc0c0, "use_direct_vs_ctrls"}, /* voltage sense Direct control to overrule several functions for testing, */\
|
||||
{ 0xc0d0, "enbl_ringo"}, /* Enable the ring oscillator for test purpose , */\
|
||||
{ 0xc0e0, "enbl_pll"}, /* Enables PLL in I2C direct control mode only , */\
|
||||
{ 0xc0f0, "enbl_fro"}, /* Enables FRO8M in I2C direct control mode only , */\
|
||||
{ 0xc100, "enbl_tsense"}, /* Temperature sensor enable control - I2C direct mode, */\
|
||||
{ 0xc110, "tsense_hibias"}, /* Bit to set the biasing in temp sensor to high , */\
|
||||
{ 0xc120, "enbl_flag_vbg"}, /* Enable flagging of bandgap out of control , */\
|
||||
{ 0xc20f, "abist_offset"}, /* Offset control for ABIST testing (two's complement), */\
|
||||
{ 0xc300, "bypasslatch"}, /* Bypass latch , */\
|
||||
{ 0xc311, "sourcea"}, /* Set OUTA to , */\
|
||||
{ 0xc331, "sourceb"}, /* Set OUTB to , */\
|
||||
{ 0xc350, "inverta"}, /* Invert pwma test signal , */\
|
||||
{ 0xc360, "invertb"}, /* Invert pwmb test signal , */\
|
||||
{ 0xc374, "pulselength"}, /* Pulse length setting test input for amplifier (clock d - k*2048*fs ), */\
|
||||
{ 0xc3c0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0xc400, "bst_bypasslatch"}, /* Bypass latch in boost converter , */\
|
||||
{ 0xc411, "bst_source"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0xc430, "bst_invertb"}, /* Invert pwmbst test signal , */\
|
||||
{ 0xc444, "bst_pulselength"}, /* Pulse length setting test input for boost converter , */\
|
||||
{ 0xc490, "test_bst_ctrlsthv"}, /* Test mode for boost control stage , */\
|
||||
{ 0xc4a0, "test_bst_iddq"}, /* IDDQ testing in power stage of boost converter , */\
|
||||
{ 0xc4b0, "test_bst_rdson"}, /* RDSON testing - boost power stage , */\
|
||||
{ 0xc4c0, "test_bst_cvi"}, /* CVI testing - boost power stage , */\
|
||||
{ 0xc4d0, "test_bst_ocp"}, /* Boost OCP. For old ocp (ctrl_reversebst is 0), For new ocp (ctrl_reversebst is 1), */\
|
||||
{ 0xc4e0, "test_bst_sense"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0xc500, "test_cvi"}, /* Analog BIST, switch choose which transistor will be used as current source (also cross coupled sources possible), */\
|
||||
{ 0xc510, "test_discrete"}, /* Test function noise measurement , */\
|
||||
{ 0xc520, "test_iddq"}, /* Set the power stages in iddq mode for gate stress., */\
|
||||
{ 0xc540, "test_rdson"}, /* Analog BIST, switch to enable Rdson measurement , */\
|
||||
{ 0xc550, "test_sdelta"}, /* Analog BIST, noise test , */\
|
||||
{ 0xc570, "test_enbl_cs"}, /* Enable for digimux mode of current sense , */\
|
||||
{ 0xc580, "test_enbl_vs"}, /* Enable for digimux mode of voltage sense , */\
|
||||
{ 0xc600, "enbl_pwm_dcc"}, /* Enables direct control of pwm duty cycle for DCDC power stage, */\
|
||||
{ 0xc613, "pwm_dcc_cnt"}, /* Control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0xc650, "enbl_ldo_stress"}, /* Enable stress of internal supply voltages powerstages, */\
|
||||
{ 0xc707, "digimuxa_sel"}, /* DigimuxA input selection control routed to DATAO (see Digimux list for details), */\
|
||||
{ 0xc787, "digimuxb_sel"}, /* DigimuxB input selection control routed to INT (see Digimux list for details), */\
|
||||
{ 0xc807, "digimuxc_sel"}, /* DigimuxC input selection control routed to ADS1 (see Digimux list for details), */\
|
||||
{ 0xc981, "int_ehs"}, /* Speed/load setting for INT IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xc9c0, "hs_mode"}, /* I2C high speed mode control , */\
|
||||
{ 0xc9d1, "sw_hs_mode"}, /* Speed/load setting for SW IO cell, clk or data mode range (see SWMF IO cell datasheet), */\
|
||||
{ 0xca00, "enbl_anamux1"}, /* Enable anamux1 , */\
|
||||
{ 0xca10, "enbl_anamux2"}, /* Enable anamux2 , */\
|
||||
{ 0xca20, "enbl_anamux3"}, /* Enable anamux3 , */\
|
||||
{ 0xca30, "enbl_anamux4"}, /* Enable anamux4 , */\
|
||||
{ 0xca74, "anamux1"}, /* Anamux selection control - anamux on TEST1 , */\
|
||||
{ 0xcac0, "open_frcbst_ensw_switch"}, /* Save test2 configuration before enable anamux2 (open test2 switch and save test2 setting) , */\
|
||||
{ 0xcb04, "anamux2"}, /* Anamux selection control - anamux on FRCBST/TEST2 , */\
|
||||
{ 0xcb53, "anamux3"}, /* Anamux selection control - anamux on VSN/TEST3 , */\
|
||||
{ 0xcba3, "anamux4"}, /* Anamux selection control - anamux on VSP/TEST4 , */\
|
||||
{ 0xcd05, "pll_inseli"}, /* PLL INSELI - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcd64, "pll_inselp"}, /* PLL INSELP - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdb3, "pll_inselr"}, /* PLL INSELR - PLL direct bandwidth control mode only with pll_bandsel set to 1, */\
|
||||
{ 0xcdf0, "pll_bandsel"}, /* PLL bandwidth selection control, USE WITH CAUTION , */\
|
||||
{ 0xce09, "pll_ndec"}, /* PLL NDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcea0, "pll_mdec_msb"}, /* MSB of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xceb0, "pll_bypass"}, /* PLL bypass control during functional mode , */\
|
||||
{ 0xcec0, "pll_directi"}, /* PLL directi control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xced0, "pll_directo"}, /* PLL directo control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcee0, "pll_frm_clockstable"}, /* PLL FRM clock stable control in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xcef0, "pll_frm"}, /* PLL free running mode control in functional mode , */\
|
||||
{ 0xcf0f, "pll_mdec_lsb"}, /* Bits 15..0 of PLL MDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd006, "pll_pdec"}, /* PLL PDEC in direct control mode only, use_direct_pll_ctrl set to 1, */\
|
||||
{ 0xd070, "use_direct_pll_ctrl"}, /* Enabled PLL direct control mode, overrules the PLL LUT with I2C register values, */\
|
||||
{ 0xd090, "pll_limup_off"}, /* PLL up limiter control in PLL direct bandwidth control mode, pll_bandsel set to 1, */\
|
||||
{ 0xd0a2, "sel_pll_startup_time"}, /* PLL startup time selection control , */\
|
||||
{ 0xd10f, "tsig_freq_lsb"}, /* Internal sinus test generator frequency control , */\
|
||||
{ 0xd202, "tsig_freq_msb"}, /* Select internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0xd230, "inject_tsig"}, /* Control bit to switch to internal sinus test generator, */\
|
||||
{ 0xd283, "tsig_gain"}, /* Test signal gain , */\
|
||||
{ 0xd300, "adc10_reset"}, /* Reset for ADC10 - I2C direct control mode , */\
|
||||
{ 0xd311, "adc10_test"}, /* Test mode selection signal for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd332, "adc10_sel"}, /* Select the input to convert for ADC10 - I2C direct control mode, */\
|
||||
{ 0xd364, "adc10_prog_sample"}, /* ADC10 program sample setting - I2C direct control mode, */\
|
||||
{ 0xd3b0, "adc10_enbl"}, /* Enable ADC10 - I2C direct control mode , */\
|
||||
{ 0xd3c0, "bypass_lp_vbat"}, /* Bypass control for Low pass filter in batt sensor , */\
|
||||
{ 0xd409, "data_adc10_tempbat"}, /* ADC 10 data output data for testing , */\
|
||||
{ 0xd507, "ctrl_digtoana_hidden"}, /* Spare digital to analog control bits - Hidden , */\
|
||||
{ 0xd580, "enbl_clk_out_of_range"}, /* Clock out of range , */\
|
||||
{ 0xd721, "datao_ehs"}, /* Speed/load setting for DATAO IO cell, clk or data mode range (see SLIMMF IO cell datasheet), */\
|
||||
{ 0xd740, "bck_ehs"}, /* High-speed and standard/fast mode selection for BCK IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd750, "datai_ehs"}, /* High-speed and standard/fast mode selection for DATAI IO cell (see IIC3V3 IO cell datasheet), */\
|
||||
{ 0xd800, "source_in_testmode"}, /* tdm source in test mode (return only current and voltage sense), */\
|
||||
{ 0xd810, "gainatt_tdm_feedback"}, /* gainatt feedback to tdm , */\
|
||||
{ 0xd822, "test_parametric_io"}, /* test io parametric , */\
|
||||
{ 0xd850, "ctrl_bst_clk_lp1"}, /* boost clock control in low power mode1 , */\
|
||||
{ 0xd861, "test_spare_out1"}, /* test spare out 1 , */\
|
||||
{ 0xd880, "bst_dcmbst"}, /* dcm boost , */\
|
||||
{ 0xd890, "gainatt_sw_feedback"}, /* gainatt feedback to sw , */\
|
||||
{ 0xd8c3, "test_spare_out2"}, /* test spare out 1 , */\
|
||||
{ 0xd900, "enbl_frocal"}, /* Enable FRO calibration , */\
|
||||
{ 0xd910, "start_fro_calibration"}, /* Start FRO8 Calibration , */\
|
||||
{ 0xd920, "enbl_irefcal"}, /* Enable IREF calibration , */\
|
||||
{ 0xd930, "start_iref_calibration"}, /* Start IREF Calibration , */\
|
||||
{ 0xda00, "fro_calibration_done"}, /* FRO8 Calibration done - Read Only , */\
|
||||
{ 0xda15, "fro_auto_trim_val"}, /* Calibration value from Auto Calibration block, to be written into MTP - Read Only, */\
|
||||
{ 0xda80, "iref_calibration_done"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xda94, "iref_auto_trim_val"}, /* Calibration value from Auto Calibration block, to be written into MTP - Read Only, */\
|
||||
{ 0xdae0, "iref_calibration_error"}, /* IREF Calibration done - Read Only , */\
|
||||
{ 0xe00f, "sw_profile"}, /* Software profile data , */\
|
||||
{ 0xe10f, "sw_vstep"}, /* Software vstep information , */\
|
||||
{ 0xf000, "calibration_onetime"}, /* Calibration schedule , */\
|
||||
{ 0xf010, "calibr_ron_done"}, /* Calibration Ron executed , */\
|
||||
{ 0xf020, "calibr_dcdc_api_calibrate"}, /* Calibration current limit DCDC , */\
|
||||
{ 0xf030, "calibr_dcdc_delta_sign"}, /* Sign bit for delta calibration current limit DCDC , */\
|
||||
{ 0xf042, "calibr_dcdc_delta"}, /* Calibration delta current limit DCDC , */\
|
||||
{ 0xf078, "calibr_speaker_info"}, /* Reserved space for allowing customer to store speaker information, */\
|
||||
{ 0xf105, "calibr_vout_offset"}, /* DCDC offset calibration 2's complement (key1 protected), */\
|
||||
{ 0xf169, "spare_mtp1_15_6"}, /* SPARE , */\
|
||||
{ 0xf203, "calibr_gain"}, /* HW gain module (2's complement) , */\
|
||||
{ 0xf245, "calibr_offset"}, /* Offset for amplifier, HW gain module (2's complement), */\
|
||||
{ 0xf2a4, "optimal_pwm_delay"}, /* PWM delay bits to set the delay, clockd is 1/(k*2048*fs), */\
|
||||
{ 0xf2f0, "enbl_optimal_pwm_delay"}, /* optimized pwm delay function enabled , */\
|
||||
{ 0xf307, "calibr_gain_vs1"}, /* Voltage sense gain when external voltage sensing input is selected, */\
|
||||
{ 0xf387, "calibr_gain_vs2"}, /* Voltage sense gain when internal voltage sensing input is selected, */\
|
||||
{ 0xf407, "vs_trim1"}, /* VS Trimming when external voltage sensing input is selected, */\
|
||||
{ 0xf487, "vs_trim2"}, /* VS Trimming when internal voltage sensing input is selected, */\
|
||||
{ 0xf50f, "calibr_R25C_R"}, /* Ron resistance of speaker coil , */\
|
||||
{ 0xf607, "calibr_gain_cs"}, /* Current sense gain (signed two's complement format), */\
|
||||
{ 0xf687, "spare_mpt6_15_06"}, /* SPARE , */\
|
||||
{ 0xf706, "ctrl_offset_a"}, /* Offset of level shifter A , */\
|
||||
{ 0xf770, "spare_mtp7_07"}, /* SPARE , */\
|
||||
{ 0xf786, "ctrl_offset_b"}, /* Offset of amplifier level shifter B , */\
|
||||
{ 0xf7f0, "spare_mtp7_15"}, /* SPARE , */\
|
||||
{ 0xf806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0xf870, "htol_iic_addr_en"}, /* HTOL I2C address enable control , */\
|
||||
{ 0xf884, "calibr_temp_offset"}, /* Temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0xf8d2, "calibr_temp_gain"}, /* Temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0xf900, "mtp_lock_dcdcoff_mode"}, /* Disable function dcdcoff_mode , */\
|
||||
{ 0xf910, "spare_mtp9_1"}, /* SPARE , */\
|
||||
{ 0xf920, "mtp_lock_bypass_clipper"}, /* Disable function bypass_clipper , */\
|
||||
{ 0xf930, "mtp_lock_max_dcdc_voltage"}, /* Force Boost in follower mode , */\
|
||||
{ 0xf943, "calibr_vbg_trim"}, /* Bandgap trimming control , */\
|
||||
{ 0xf980, "spare_mtp9_8"}, /* SPARE , */\
|
||||
{ 0xf990, "mtp_enbl_pwm_delay_clock_gating"}, /* pwm delay clock auto gating , */\
|
||||
{ 0xf9a0, "mtp_enbl_ocp_clock_gating"}, /* ocpclock auto gating , */\
|
||||
{ 0xf9b0, "mtp_gate_cgu_clock_for_test"}, /* cgu test clock control , */\
|
||||
{ 0xf9c0, "mtp_tdm_pad_sel"}, /* tdm pad selection , */\
|
||||
{ 0xf9d2, "spare_mtp9_15_12"}, /* MTP-control FW - See Firmware I2C API document for details, */\
|
||||
{ 0xfa0f, "mtpdataA"}, /* MTPdataA (key1 protected) , */\
|
||||
{ 0xfb0f, "mtpdataB"}, /* MTPdataB (key1 protected) , */\
|
||||
{ 0xfc0f, "mtpdataC"}, /* MTPdataC (key1 protected) , */\
|
||||
{ 0xfd0f, "mtpdataD"}, /* MTPdataD (key1 protected) , */\
|
||||
{ 0xfe0f, "mtpdataE"}, /* MTPdataE (key1 protected) , */\
|
||||
{ 0xff05, "fro_trim"}, /* 8 MHz oscillator trim code , */\
|
||||
{ 0xff61, "fro_shortnwell"}, /* Short 4 or 6 n-well resistors , */\
|
||||
{ 0xff81, "fro_boost"}, /* Self bias current selection , */\
|
||||
{ 0xffa4, "calibr_iref_trim"}, /* Trimming control of reference current for OCP , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
enum tfa9878_irq {
|
||||
tfa9878_irq_stvdds = 0,
|
||||
tfa9878_irq_stbstoc = 1,
|
||||
tfa9878_irq_stotds = 2,
|
||||
tfa9878_irq_stocpr = 3,
|
||||
tfa9878_irq_stuvds = 4,
|
||||
tfa9878_irq_stmanalarm = 5,
|
||||
tfa9878_irq_sttdmer = 6,
|
||||
tfa9878_irq_stnoclk = 7,
|
||||
tfa9878_irq_stbodnok = 8,
|
||||
tfa9878_irq_max = 9,
|
||||
tfa9878_irq_all = -1 /* all irqs */};
|
||||
|
||||
#define TFA9878_IRQ_NAMETABLE static tfaIrqName_t Tfa9878IrqNames[]= {\
|
||||
{ 0, "STVDDS"},\
|
||||
{ 1, "STBSTOC"},\
|
||||
{ 2, "STOTDS"},\
|
||||
{ 3, "STOCPR"},\
|
||||
{ 4, "STUVDS"},\
|
||||
{ 5, "STMANALARM"},\
|
||||
{ 6, "STTDMER"},\
|
||||
{ 7, "STNOCLK"},\
|
||||
{ 8, "STBODNOK"},\
|
||||
{ 9, "9"},\
|
||||
};
|
||||
#endif /* _TFA9878_TFAFIELDNAMES_H */
|
||||
72
techpack/audio/asoc/codecs/tfa9874/inc/tfa9887_tfafieldnames.h
Executable file
72
techpack/audio/asoc/codecs/tfa9874/inc/tfa9887_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: Tfa9887_TfaFieldnames.h
|
||||
* This file was generated automatically on 04/14/15 at 10:23:40.
|
||||
* Source file: TFA9897N1B_I2C_list_URT_source_v34_87Only.xls
|
||||
*/
|
||||
#define TFA9887_I2CVERSION 34
|
||||
#define TFA9895_I2CVERSION 34
|
||||
#define TFA9887_NAMETABLE static tfaBfName_t Tfa9887DatasheetNames[]= {\
|
||||
{ 0x402, "I2SF"}, /* I2SFormat data 1 input: , */\
|
||||
{ 0x431, "CHS12"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "CHS3"}, /* ChannelSelection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "CHSA"}, /* Input selection for amplifier , */\
|
||||
{ 0x4b0, "I2SDOE"}, /* Enable data output , */\
|
||||
{ 0x4c3, "I2SSR"}, /* sample rate setting , */\
|
||||
{ 0x500, "BSSBY"}, /* , */\
|
||||
{ 0x511, "BSSCR"}, /* 00 = 0.56 dB/Sample , */\
|
||||
{ 0x532, "BSST"}, /* 000 = 2.92V , */\
|
||||
{ 0x5f0, "I2SDOC"}, /* selection data out , */\
|
||||
{ 0xa02, "DOLS"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "DORS"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "SPKL"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "SPKR"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "DCFG"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0x4134, "PWMDEL"}, /* PWM DelayBits to set the delay , */\
|
||||
{ 0x4180, "PWMSH"}, /* PWM Shape , */\
|
||||
{ 0x4190, "PWMRE"}, /* PWM Bitlength in noise shaper , */\
|
||||
{ 0x48e1, "TCC"}, /* sample & hold track time: , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9887_BITNAMETABLE static tfaBfName_t Tfa9887BitNames[]= {\
|
||||
{ 0x402, "i2s_seti"}, /* I2SFormat data 1 input: , */\
|
||||
{ 0x431, "chan_sel1"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "lr_sw_i2si2"}, /* ChannelSelection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "input_sel"}, /* Input selection for amplifier , */\
|
||||
{ 0x4b0, "enbl_datao"}, /* Enable data output , */\
|
||||
{ 0x4c3, "i2s_fs"}, /* sample rate setting , */\
|
||||
{ 0x500, "bypass_clipper"}, /* , */\
|
||||
{ 0x511, "vbat_prot_attacktime[1:0]"}, /* 00 = 0.56 dB/Sample , */\
|
||||
{ 0x532, "vbat_prot_thlevel[2:0]"}, /* 000 = 2.92V , */\
|
||||
{ 0x5d0, "reset_min_vbat"}, /* to reset the clipper via I2C in case the CF is bypassed, */\
|
||||
{ 0x5f0, "datao_sel"}, /* selection data out , */\
|
||||
{ 0xa02, "sel_i2so_l"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "sel_i2so_r"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "ctrl_spkr_coil"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "ctrl_spr_res"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "ctrl_dcdc_spkr_i_comp_gain"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0xaf0, "ctrl_dcdc_spkr_i_comp_sign"}, /* DCDC speaker current compensation sign , */\
|
||||
{ 0x4100, "bypass_hp"}, /* bypass_hp, to bypass the hp filter byhind the CoolFlux, */\
|
||||
{ 0x4110, "hard_mute"}, /* hard mute setting in HW , */\
|
||||
{ 0x4120, "soft_mute"}, /* Soft mute setting in HW , */\
|
||||
{ 0x4134, "PWM_Delay[4:0]"}, /* PWM DelayBits to set the delay , */\
|
||||
{ 0x4180, "PWM_Shape"}, /* PWM Shape , */\
|
||||
{ 0x4190, "PWM_BitLength"}, /* PWM Bitlength in noise shaper , */\
|
||||
{ 0x4800, "ctrl_negin"}, /* , */\
|
||||
{ 0x4810, "ctrl_cs_sein"}, /* , */\
|
||||
{ 0x4820, "ctrl_coincidencecs"}, /* HIGH => Prevent dcdc switching during clk_cs_clksh, */\
|
||||
{ 0x4876, "delay_se_neg[6:0]"}, /* delayshiftse2 , */\
|
||||
{ 0x48e1, "ctrl_cs_ttrack[1:0]"}, /* sample & hold track time: , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
87
techpack/audio/asoc/codecs/tfa9874/inc/tfa9890_tfafieldnames.h
Executable file
87
techpack/audio/asoc/codecs/tfa9874/inc/tfa9890_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,87 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: Tfa9890_TfaFieldnames.h
|
||||
* This file was generated automatically on 04/07/15 at 14:46:37.
|
||||
* Source file: TFA9897N1B_I2C_list_URT_source_v34_90Only.xls
|
||||
*/
|
||||
#define TFA9890_I2CVERSION 34
|
||||
#define TFA9890_NAMETABLE static tfaBfName_t Tfa9890DatasheetNames[]= {\
|
||||
{ 0x402, "I2SF"}, /* I2SFormat data 1 input: , */\
|
||||
{ 0x431, "CHS12"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "CHS3"}, /* ChannelSelection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "CHSA"}, /* Input selection for amplifier , */\
|
||||
{ 0x481, "I2SDOC"}, /* selection data out , */\
|
||||
{ 0x4a0, "DISP"}, /* idp protection , */\
|
||||
{ 0x4b0, "I2SDOE"}, /* Enable data output , */\
|
||||
{ 0x4c3, "I2SSR"}, /* sample rate setting , */\
|
||||
{ 0x732, "DCMCC"}, /* Max boost coil current - step of 500 mA , */\
|
||||
{ 0x9c0, "CCFD"}, /* Selection CoolFlux Clock , */\
|
||||
{ 0x9d0, "ISEL"}, /* selection input 1 or 2 , */\
|
||||
{ 0xa02, "DOLS"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "DORS"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "SPKL"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "SPKR"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "DCFG"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0xf00, "VDDD"}, /* mask flag_por for interupt generation , */\
|
||||
{ 0xf10, "OTDD"}, /* mask flag_otpok for interupt generation , */\
|
||||
{ 0xf20, "OVDD"}, /* mask flag_ovpok for interupt generation , */\
|
||||
{ 0xf30, "UVDD"}, /* mask flag_uvpok for interupt generation , */\
|
||||
{ 0xf40, "OCDD"}, /* mask flag_ocp_alarm for interupt generation , */\
|
||||
{ 0xf50, "CLKD"}, /* mask flag_clocks_stable for interupt generation , */\
|
||||
{ 0xf60, "DCCD"}, /* mask flag_pwrokbst for interupt generation , */\
|
||||
{ 0xf70, "SPKD"}, /* mask flag_cf_speakererror for interupt generation , */\
|
||||
{ 0xf80, "WDD"}, /* mask flag_watchdog_reset for interupt generation , */\
|
||||
{ 0xf90, "LCLK"}, /* mask flag_lost_clk for interupt generation , */\
|
||||
{ 0xfe0, "INT"}, /* enabling interrupt , */\
|
||||
{ 0xff0, "INTP"}, /* Setting polarity interupt , */\
|
||||
{ 0x8f0f, "VERSION"}, /* (key1 protected) , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9890_BITNAMETABLE static tfaBfName_t Tfa9890BitNames[]= {\
|
||||
{ 0x402, "i2s_seti"}, /* I2SFormat data 1 input: , */\
|
||||
{ 0x431, "chan_sel1"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "lr_sw_i2si2"}, /* ChannelSelection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "input_sel"}, /* Input selection for amplifier , */\
|
||||
{ 0x481, "datao_sel"}, /* selection data out , */\
|
||||
{ 0x4a0, "disable_idp"}, /* idp protection , */\
|
||||
{ 0x4b0, "enbl_datao"}, /* Enable data output , */\
|
||||
{ 0x4c3, "i2s_fs"}, /* sample rate setting , */\
|
||||
{ 0x732, "ctrl_bstcur"}, /* Max boost coil current - step of 500 mA , */\
|
||||
{ 0x9c0, "sel_cf_clk"}, /* Selection CoolFlux Clock , */\
|
||||
{ 0x9d0, "intf_sel"}, /* selection input 1 or 2 , */\
|
||||
{ 0xa02, "sel_i2so_l"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "sel_i2so_r"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "ctrl_spkr_coil"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "ctrl_spr_res"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "ctrl_dcdc_spkr_i_comp_gain"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0xaf0, "ctrl_dcdc_spkr_i_comp_sign"}, /* DCDC speaker current compensation sign , */\
|
||||
{ 0xf00, "flag_por_mask"}, /* mask flag_por for interupt generation , */\
|
||||
{ 0xf10, "flag_otpok_mask"}, /* mask flag_otpok for interupt generation , */\
|
||||
{ 0xf20, "flag_ovpok_mask"}, /* mask flag_ovpok for interupt generation , */\
|
||||
{ 0xf30, "flag_uvpok_mask"}, /* mask flag_uvpok for interupt generation , */\
|
||||
{ 0xf40, "flag_ocp_alarm_mask"}, /* mask flag_ocp_alarm for interupt generation , */\
|
||||
{ 0xf50, "flag_clocks_stable_mask"}, /* mask flag_clocks_stable for interupt generation , */\
|
||||
{ 0xf60, "flag_pwrokbst_mask"}, /* mask flag_pwrokbst for interupt generation , */\
|
||||
{ 0xf70, "flag_cf_speakererror_mask"}, /* mask flag_cf_speakererror for interupt generation , */\
|
||||
{ 0xf80, "flag_watchdog_reset_mask"}, /* mask flag_watchdog_reset for interupt generation , */\
|
||||
{ 0xf90, "flag_lost_clk_mask"}, /* mask flag_lost_clk for interupt generation , */\
|
||||
{ 0xfe0, "enable_interrupt"}, /* enabling interrupt , */\
|
||||
{ 0xff0, "invert_int_polarity"}, /* Setting polarity interupt , */\
|
||||
{ 0x4700, "switch_fb"}, /* switch_fb , */\
|
||||
{ 0x4713, "se_hyst"}, /* se_hyst , */\
|
||||
{ 0x4754, "se_level"}, /* se_level , */\
|
||||
{ 0x47a5, "ktemp"}, /* temperature compensation trimming , */\
|
||||
{ 0x8f0f, "production_data6"}, /* (key1 protected) , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
1136
techpack/audio/asoc/codecs/tfa9874/inc/tfa9891_genregs.h
Executable file
1136
techpack/audio/asoc/codecs/tfa9874/inc/tfa9891_genregs.h
Executable file
File diff suppressed because it is too large
Load diff
526
techpack/audio/asoc/codecs/tfa9874/inc/tfa9891_tfafieldnames.h
Executable file
526
techpack/audio/asoc/codecs/tfa9874/inc/tfa9891_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,526 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* tfa9891_tfafieldnames.h
|
||||
*
|
||||
* Created on: Jul 16, 2015
|
||||
* Author: wim
|
||||
*/
|
||||
|
||||
#ifndef TFA_INC_TFA9891_TFAFIELDNAMES_H_
|
||||
#define TFA_INC_TFA9891_TFAFIELDNAMES_H_
|
||||
|
||||
/** Filename: Tfa9891_TfaFieldnames.h
|
||||
* This file was generated automatically on 07/16/15 at 15:00:02.
|
||||
* Source file: TFA9891_I2C_list_V13.xls
|
||||
*/
|
||||
|
||||
#define TFA9891_I2CVERSION 13
|
||||
|
||||
|
||||
#define TFA9891_NAMETABLE static tfaBfName_t Tfa9891DatasheetNames[]= {\
|
||||
{ 0x0, "VDDS"}, /* POR , */\
|
||||
{ 0x10, "PLLS"}, /* PLL , */\
|
||||
{ 0x20, "OTDS"}, /* OTP , */\
|
||||
{ 0x30, "OVDS"}, /* OVP , */\
|
||||
{ 0x40, "UVDS"}, /* UVP , */\
|
||||
{ 0x50, "OCDS"}, /* OCP , */\
|
||||
{ 0x60, "CLKS"}, /* Clocks , */\
|
||||
{ 0x70, "CLIPS"}, /* CLIP , */\
|
||||
{ 0x80, "MTPB"}, /* MTP , */\
|
||||
{ 0x90, "DCCS"}, /* BOOST , */\
|
||||
{ 0xa0, "SPKS"}, /* Speaker , */\
|
||||
{ 0xb0, "ACS"}, /* cold start flag , */\
|
||||
{ 0xc0, "SWS"}, /* flag engage , */\
|
||||
{ 0xd0, "WDS"}, /* flag watchdog reset , */\
|
||||
{ 0xe0, "AMPS"}, /* amplifier is enabled by manager , */\
|
||||
{ 0xf0, "AREFS"}, /* references are enabled by manager , */\
|
||||
{ 0x109, "BATS"}, /* Battery voltage readout; 0[V]..5.5[V] , */\
|
||||
{ 0x208, "TEMPS"}, /* Temperature readout , */\
|
||||
{ 0x307, "REV"}, /* Device Revision , */\
|
||||
{ 0x402, "I2SF"}, /* I2SFormat data 1 input , */\
|
||||
{ 0x431, "CHS12"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "CHS3"}, /* Channel Selection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "CHSA"}, /* Input selection for amplifier , */\
|
||||
{ 0x481, "I2SDOC"}, /* Selection for I2S data out , */\
|
||||
{ 0x4a0, "DISP"}, /* idp protection , */\
|
||||
{ 0x4b0, "I2SDOE"}, /* Enable data output , */\
|
||||
{ 0x4c3, "I2SSR"}, /* sample rate setting , */\
|
||||
{ 0x501, "BSSCR"}, /* ProtectionAttackTime , */\
|
||||
{ 0x523, "BSST"}, /* ProtectionThreshold , */\
|
||||
{ 0x561, "BSSRL"}, /* ProtectionMaximumReduction , */\
|
||||
{ 0x582, "BSSRR"}, /* Protection Release Timer , */\
|
||||
{ 0x5b1, "BSSHY"}, /* ProtectionHysterese , */\
|
||||
{ 0x5e0, "BSSR"}, /* battery voltage for I2C read out only , */\
|
||||
{ 0x5f0, "BSSBY"}, /* bypass clipper battery protection , */\
|
||||
{ 0x600, "DPSA"}, /* Enable dynamic powerstage activation , */\
|
||||
{ 0x613, "AMPSL"}, /* control slope , */\
|
||||
{ 0x650, "CFSM"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x670, "BSSS"}, /* batsensesteepness , */\
|
||||
{ 0x687, "VOL"}, /* volume control (in CoolFlux) , */\
|
||||
{ 0x702, "DCVO"}, /* Boost voltage , */\
|
||||
{ 0x732, "DCMCC"}, /* Max boost coil current , */\
|
||||
{ 0x7a0, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "DCSR"}, /* Soft RampUp/Down mode for DCDC controller , */\
|
||||
{ 0x800, "TROS"}, /* select external temperature also the ext_temp will be put on the temp read out , */\
|
||||
{ 0x818, "EXTTS"}, /* external temperature setting to be given by host , */\
|
||||
{ 0x900, "PWDN"}, /* ON/OFF , */\
|
||||
{ 0x910, "I2CR"}, /* I2CReset , */\
|
||||
{ 0x920, "CFE"}, /* EnableCoolFlux , */\
|
||||
{ 0x930, "AMPE"}, /* EnableAmplifier , */\
|
||||
{ 0x940, "DCA"}, /* EnableBoost , */\
|
||||
{ 0x950, "SBSL"}, /* Coolflux configured , */\
|
||||
{ 0x960, "AMPC"}, /* Selection on how AmplifierEnabling , */\
|
||||
{ 0x970, "DCDIS"}, /* DCDC not connected , */\
|
||||
{ 0x980, "PSDR"}, /* Iddq test amplifier , */\
|
||||
{ 0x991, "DCCV"}, /* Coil Value , */\
|
||||
{ 0x9b1, "CCFD"}, /* Selection CoolFluxClock , */\
|
||||
{ 0x9d0, "ISEL"}, /* Interface Selection , */\
|
||||
{ 0x9e0, "IPLL"}, /* selection input PLL for lock , */\
|
||||
{ 0xa02, "DOLS"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "DORS"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "SPKL"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "SPKR"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "DCFG"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0xb07, "MTPK"}, /* MTP KEY2 register , */\
|
||||
{ 0xf00, "VDDD"}, /* mask flag_por for interupt generation , */\
|
||||
{ 0xf10, "OTDD"}, /* mask flag_otpok for interupt generation , */\
|
||||
{ 0xf20, "OVDD"}, /* mask flag_ovpok for interupt generation , */\
|
||||
{ 0xf30, "UVDD"}, /* mask flag_uvpok for interupt generation , */\
|
||||
{ 0xf40, "OCDD"}, /* mask flag_ocp_alarm for interupt generation , */\
|
||||
{ 0xf50, "CLKD"}, /* mask flag_clocks_stable for interupt generation , */\
|
||||
{ 0xf60, "DCCD"}, /* mask flag_pwrokbst for interupt generation , */\
|
||||
{ 0xf70, "SPKD"}, /* mask flag_cf_speakererror for interupt generation , */\
|
||||
{ 0xf80, "WDD"}, /* mask flag_watchdog_reset for interupt generation , */\
|
||||
{ 0xfe0, "INT"}, /* enabling interrupt , */\
|
||||
{ 0xff0, "INTP"}, /* Setting polarity interupt , */\
|
||||
{ 0x1000, "PDMSEL"}, /* Audio input interface mode , */\
|
||||
{ 0x1010, "I2SMOUTEN"}, /* I2S Master enable (CLK and WS pads) , */\
|
||||
{ 0x1021, "PDMORSEL"}, /* PDM Output right channel source selection , */\
|
||||
{ 0x1041, "PDMOLSEL"}, /* PDM Output Left/Mono channel source selection , */\
|
||||
{ 0x1061, "PADSEL"}, /* Output interface mode and ball selection , */\
|
||||
{ 0x1100, "PDMOSDEN"}, /* Secure delay Cell , */\
|
||||
{ 0x1110, "PDMOSDCF"}, /* Rising Falling Resync control Mux , */\
|
||||
{ 0x1140, "SAAMEN"}, /* Speaker As a Mic feature ON/OFF , */\
|
||||
{ 0x1150, "SAAMLPEN"}, /* speaker_as_mic low power mode (only in PDM_out mode), */\
|
||||
{ 0x1160, "PDMOINTEN"}, /* PDM output interpolation ratio , */\
|
||||
{ 0x1203, "PDMORG1"}, /* PDM Interpolator Right Channel DS4 G1 Gain Value , */\
|
||||
{ 0x1243, "PDMORG2"}, /* PDM Interpolator Right Channel DS4 G2 Gain Value , */\
|
||||
{ 0x1303, "PDMOLG1"}, /* PDM Interpolator Left Channel DS4 G1 Gain Value , */\
|
||||
{ 0x1343, "PDMOLG2"}, /* PDM Interpolator Left Channel DS4 G2 Gain Value , */\
|
||||
{ 0x2202, "SAAMGAIN"}, /* pga gain , */\
|
||||
{ 0x2250, "SAAMPGACTRL"}, /* 0 = active input common mode voltage source at the attenuator/PGA level, */\
|
||||
{ 0x2500, "PLLCCOSEL"}, /* pll cco frequency , */\
|
||||
{ 0x4600, "CSBYPGC"}, /* bypass_gc, bypasses the CS gain correction , */\
|
||||
{ 0x4900, "CLIP"}, /* Bypass clip control (function depending on digimux clip_x), */\
|
||||
{ 0x4910, "CLIP2"}, /* Bypass clip control (function depending on digimux clip_x), */\
|
||||
{ 0x62b0, "CIMTP"}, /* start copying all the data from i2cregs_mtp to mtp [Key 2 protected], */\
|
||||
{ 0x7000, "RST"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "DMEM"}, /* Target memory for access , */\
|
||||
{ 0x7030, "AIF"}, /* Autoincrement-flag for memory-address , */\
|
||||
{ 0x7040, "CFINT"}, /* Interrupt CoolFlux DSP , */\
|
||||
{ 0x7087, "REQ"}, /* request for access (8 channels) , */\
|
||||
{ 0x710f, "MADD"}, /* memory-address to be accessed , */\
|
||||
{ 0x720f, "MEMA"}, /* activate memory access (24- or 32-bits data is written/read to/from memory, */\
|
||||
{ 0x7307, "ERR"}, /* cf error Flags , */\
|
||||
{ 0x7387, "ACK"}, /* acknowledge of requests (8 channels")" , */\
|
||||
{ 0x8000, "MTPOTC"}, /* Calibration schedule (key2 protected) , */\
|
||||
{ 0x8010, "MTPEX"}, /* (key2 protected) calibration of Ron has been executed, */\
|
||||
{ 0x8045, "SWPROFIL" },\
|
||||
{ 0x80a5, "SWVSTEP" },\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9891_BITNAMETABLE static tfaBfName_t Tfa9891BitNames[]= {\
|
||||
{ 0x0, "POR"}, /* POR , */\
|
||||
{ 0x10, "PLL_LOCK"}, /* PLL , */\
|
||||
{ 0x20, "flag_otpok"}, /* OTP , */\
|
||||
{ 0x30, "flag_ovpok"}, /* OVP , */\
|
||||
{ 0x40, "flag_uvpok"}, /* UVP , */\
|
||||
{ 0x50, "flag_OCP_alarm"}, /* OCP , */\
|
||||
{ 0x60, "flag_clocks_stable"}, /* Clocks , */\
|
||||
{ 0x70, "CLIP"}, /* CLIP , */\
|
||||
{ 0x80, "mtp_busy"}, /* MTP , */\
|
||||
{ 0x90, "flag_pwrokbst"}, /* BOOST , */\
|
||||
{ 0xa0, "flag_cf_speakererror"}, /* Speaker , */\
|
||||
{ 0xb0, "flag_cold_started"}, /* cold start flag , */\
|
||||
{ 0xc0, "flag_engage"}, /* flag engage , */\
|
||||
{ 0xd0, "flag_watchdog_reset"}, /* flag watchdog reset , */\
|
||||
{ 0xe0, "flag_enbl_amp"}, /* amplifier is enabled by manager , */\
|
||||
{ 0xf0, "flag_enbl_ref"}, /* references are enabled by manager , */\
|
||||
{ 0x109, "bat_adc"}, /* Battery voltage readout; 0[V]..5.5[V] , */\
|
||||
{ 0x208, "temp_adc"}, /* Temperature readout , */\
|
||||
{ 0x307, "rev_reg"}, /* Device Revision , */\
|
||||
{ 0x402, "i2s_seti"}, /* I2SFormat data 1 input , */\
|
||||
{ 0x431, "chan_sel1"}, /* ChannelSelection data1 input (In CoolFlux) , */\
|
||||
{ 0x450, "lr_sw_i2si2"}, /* Channel Selection data 2 input (coolflux input, the DCDC converter gets the other signal), */\
|
||||
{ 0x461, "input_sel"}, /* Input selection for amplifier , */\
|
||||
{ 0x481, "datao_sel"}, /* Selection for I2S data out , */\
|
||||
{ 0x4a0, "disable_idp"}, /* idp protection , */\
|
||||
{ 0x4b0, "enbl_datao"}, /* Enable data output , */\
|
||||
{ 0x4c3, "i2s_fs"}, /* sample rate setting , */\
|
||||
{ 0x501, "vbat_prot_attacktime"}, /* ProtectionAttackTime , */\
|
||||
{ 0x523, "vbat_prot_thlevel"}, /* ProtectionThreshold , */\
|
||||
{ 0x561, "vbat_prot_max_reduct"}, /* ProtectionMaximumReduction , */\
|
||||
{ 0x582, "vbat_prot_release_t"}, /* Protection Release Timer , */\
|
||||
{ 0x5b1, "vbat_prot_hysterese"}, /* ProtectionHysterese , */\
|
||||
{ 0x5d0, "reset_min_vbat"}, /* reset clipper , */\
|
||||
{ 0x5e0, "sel_vbat"}, /* battery voltage for I2C read out only , */\
|
||||
{ 0x5f0, "bypass_clipper"}, /* bypass clipper battery protection , */\
|
||||
{ 0x600, "dpsa"}, /* Enable dynamic powerstage activation , */\
|
||||
{ 0x613, "ctrl_slope"}, /* control slope , */\
|
||||
{ 0x650, "cf_mute"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x660, "sel_other_vamp"}, /* Input selection for the second channel of the DCDC inteligent mode detector, */\
|
||||
{ 0x670, "ctrl_batsensesteepness"}, /* batsensesteepness , */\
|
||||
{ 0x687, "vol"}, /* volume control (in CoolFlux) , */\
|
||||
{ 0x702, "ctrl_bstvolt"}, /* Boost voltage , */\
|
||||
{ 0x732, "ctrl_bstcur"}, /* Max boost coil current , */\
|
||||
{ 0x761, "ctrl_slopebst_1_0"}, /* Setting for the slope of the boost converter power stage, */\
|
||||
{ 0x781, "ctrl_slopebst_3_2"}, /* Setting for the part of the power transistor voltage to be used in peak current mode control, */\
|
||||
{ 0x7a0, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "boost_speed"}, /* Soft RampUp/Down mode for DCDC controller , */\
|
||||
{ 0x7c1, "ctrl_delay_comp_dcdc"}, /* delay compensation in current patg compared to delay in the audio path (relative) , */\
|
||||
{ 0x7e0, "boost_input"}, /* Selection intelligent boost detector input , */\
|
||||
{ 0x7f0, "ctrl_supplysense"}, /* ADC10 input selection , */\
|
||||
{ 0x800, "ext_temp_sel"}, /* select external temperature also the ext_temp will be put on the temp read out , */\
|
||||
{ 0x818, "ext_temp"}, /* external temperature setting to be given by host , */\
|
||||
{ 0x8a0, "ctrl_spk_coilpvp_bst"}, /* Peak voltage protection boost converter , */\
|
||||
{ 0x8b2, "ctrl_dcdc_synchronisation"}, /* DCDC synchronisation off + 7 positions , */\
|
||||
{ 0x8e0, "ctrl_cs_samplevalid"}, /* sample valid moment for CS in single sample moment mode, */\
|
||||
{ 0x900, "PowerDown"}, /* ON/OFF , */\
|
||||
{ 0x910, "reset"}, /* I2CReset , */\
|
||||
{ 0x920, "enbl_coolflux"}, /* EnableCoolFlux , */\
|
||||
{ 0x930, "enbl_amplifier"}, /* EnableAmplifier , */\
|
||||
{ 0x940, "enbl_boost"}, /* EnableBoost , */\
|
||||
{ 0x950, "cf_configured"}, /* Coolflux configured , */\
|
||||
{ 0x960, "sel_enbl_amplifier"}, /* Selection on how AmplifierEnabling , */\
|
||||
{ 0x970, "dcdcoff_mode"}, /* DCDC not connected , */\
|
||||
{ 0x980, "cttr_iddqtest"}, /* Iddq test amplifier , */\
|
||||
{ 0x991, "ctrl_coil_value"}, /* Coil Value , */\
|
||||
{ 0x9b1, "ctrl_sel_cf_clock"}, /* Selection CoolFluxClock , */\
|
||||
{ 0x9d0, "intf_sel"}, /* Interface Selection , */\
|
||||
{ 0x9e0, "sel_ws_bck"}, /* selection input PLL for lock , */\
|
||||
{ 0xa02, "sel_i2so_l"}, /* Output selection dataout left channel , */\
|
||||
{ 0xa32, "sel_i2so_r"}, /* Output selection dataout right channel , */\
|
||||
{ 0xa62, "ctrl_spkr_coil"}, /* Selection speaker induction , */\
|
||||
{ 0xa91, "ctrl_spr_res"}, /* Selection speaker impedance , */\
|
||||
{ 0xab3, "ctrl_dcdc_spkr_i_comp_gain"}, /* DCDC speaker current compensation gain , */\
|
||||
{ 0xaf0, "ctrl_dcdc_spkr_i_comp_sign"}, /* DCDC speaker current compensation sign , */\
|
||||
{ 0xb07, "MTP_key2"}, /* MTP KEY2 register , */\
|
||||
{ 0xc0c, "clk_sync_delay"}, /* Delay count for clock synchronisation , */\
|
||||
{ 0xcf0, "enbl_clk_sync"}, /* Enable CGU clock synchronisation , */\
|
||||
{ 0xd0c, "adc_sync_delay"}, /* Delay count for ADC synchronisation , */\
|
||||
{ 0xdf0, "enable_adc_sync"}, /* Enable ADC synchronisation , */\
|
||||
{ 0xe00, "bypass_dcdc_curr_prot"}, /* to switch off dcdc reduction with bat prot , */\
|
||||
{ 0xe24, "ctrl_digtoana6_2"}, /* for extra connections digital to analog , */\
|
||||
{ 0xe70, "switch_on_icomp"}, /* icomp dem switch , */\
|
||||
{ 0xe87, "reserve_reg_1_7_0"}, /* reserved , */\
|
||||
{ 0xf00, "flag_por_mask"}, /* mask flag_por for interupt generation , */\
|
||||
{ 0xf10, "flag_otpok_mask"}, /* mask flag_otpok for interupt generation , */\
|
||||
{ 0xf20, "flag_ovpok_mask"}, /* mask flag_ovpok for interupt generation , */\
|
||||
{ 0xf30, "flag_uvpok_mask"}, /* mask flag_uvpok for interupt generation , */\
|
||||
{ 0xf40, "flag_ocp_alarm_mask"}, /* mask flag_ocp_alarm for interupt generation , */\
|
||||
{ 0xf50, "flag_clocks_stable_mask"}, /* mask flag_clocks_stable for interupt generation , */\
|
||||
{ 0xf60, "flag_pwrokbst_mask"}, /* mask flag_pwrokbst for interupt generation , */\
|
||||
{ 0xf70, "flag_cf_speakererror_mask"}, /* mask flag_cf_speakererror for interupt generation , */\
|
||||
{ 0xf80, "flag_watchdog_reset_mask"}, /* mask flag_watchdog_reset for interupt generation , */\
|
||||
{ 0xf90, "flag_lost_clk_mask"}, /* mask flag_lost_clk for interupt generation , */\
|
||||
{ 0xfe0, "enable_interrupt"}, /* enabling interrupt , */\
|
||||
{ 0xff0, "invert_int_polarity"}, /* Setting polarity interupt , */\
|
||||
{ 0x1000, "pdm_i2s_input"}, /* Audio input interface mode , */\
|
||||
{ 0x1010, "I2S_master_ena"}, /* I2S Master enable (CLK and WS pads) , */\
|
||||
{ 0x1021, "pdm_out_sel_r"}, /* PDM Output right channel source selection , */\
|
||||
{ 0x1041, "pdm_out_sel_l"}, /* PDM Output Left/Mono channel source selection , */\
|
||||
{ 0x1061, "micdat_out_sel"}, /* Output interface mode and ball selection , */\
|
||||
{ 0x1100, "secure_dly"}, /* Secure delay Cell , */\
|
||||
{ 0x1110, "d_out_valid_rf_mux"}, /* Rising Falling Resync control Mux , */\
|
||||
{ 0x1140, "Speak_As_Mic_en"}, /* Speaker As a Mic feature ON/OFF , */\
|
||||
{ 0x1150, "speak_as_mic_lp_mode"}, /* speaker_as_mic low power mode (only in PDM_out mode), */\
|
||||
{ 0x1160, "pdm_out_rate"}, /* PDM output interpolation ratio , */\
|
||||
{ 0x1203, "ds4_g1_r"}, /* PDM Interpolator Right Channel DS4 G1 Gain Value , */\
|
||||
{ 0x1243, "ds4_g2_r"}, /* PDM Interpolator Right Channel DS4 G2 Gain Value , */\
|
||||
{ 0x1303, "ds4_g1_l"}, /* PDM Interpolator Left Channel DS4 G1 Gain Value , */\
|
||||
{ 0x1343, "ds4_g2_l"}, /* PDM Interpolator Left Channel DS4 G2 Gain Value , */\
|
||||
{ 0x1400, "clk_secure_dly"}, /* Secure delay Cell on clock path , */\
|
||||
{ 0x1410, "data_secure_dly"}, /* Secure delay Cell enable on PDM data path , */\
|
||||
{ 0x2202, "Ctrl_saam_pga_gain"}, /* pga gain , */\
|
||||
{ 0x2250, "ctrl_saam_pga_src"}, /* 0 = active input common mode voltage source at the attenuator/PGA level, */\
|
||||
{ 0x2300, "flag_saam_spare"}, /* spare flag , */\
|
||||
{ 0x2400, "ctrl_saam_pga_tm"}, /* enables PGA test mode , */\
|
||||
{ 0x2500, "pll_fcco"}, /* pll cco frequency , */\
|
||||
{ 0x3000, "flag_hi_small"}, /* positive small window dcdc converter , */\
|
||||
{ 0x3010, "flag_hi_large"}, /* positive large window dcdc converter , */\
|
||||
{ 0x3020, "flag_lo_small"}, /* negative small window dcdc converter , */\
|
||||
{ 0x3030, "flag_lo_large"}, /* negative large window dcdc converter , */\
|
||||
{ 0x3040, "flag_voutcomp"}, /* flag_voutcomp, indication Vset is larger than Vbat, */\
|
||||
{ 0x3050, "flag_voutcomp93"}, /* flag_voutcomp93, indication Vset is larger than 1.07* Vbat , */\
|
||||
{ 0x3060, "flag_voutcomp86"}, /* flag_voutcomp86, indication Vset is larger than 1.14* Vbat , */\
|
||||
{ 0x3070, "flag_hiz"}, /* flag_hiz, indication Vbst is larger than Vbat , */\
|
||||
{ 0x3080, "flag_hi_peak"}, /* flag_hi_peak, indication hi_peak , */\
|
||||
{ 0x3090, "flag_ocpokbst"}, /* flag_ocpokbst, indication no over current in boost converter pmos switch, */\
|
||||
{ 0x30a0, "flag_peakcur"}, /* flag_peakcur, indication current is max in dcdc converter, */\
|
||||
{ 0x30b0, "flag_ocpokap"}, /* flag_ocpokap, indication no over current in amplifier "a" pmos output stage, */\
|
||||
{ 0x30c0, "flag_ocpokan"}, /* flag_ocpokan, indication no over current in amplifier "a" nmos output stage, */\
|
||||
{ 0x30d0, "flag_ocpokbp"}, /* flag_ocpokbp, indication no over current in amplifier "b" pmos output stage, */\
|
||||
{ 0x30e0, "flag_ocpokbn"}, /* flag_ocpokbn, indication no over current in amplifier"b" nmos output stage, */\
|
||||
{ 0x30f0, "lost_clk"}, /* lost_clk, lost clock indication CGU , */\
|
||||
{ 0x310f, "mtp_man_data_out"}, /* single word read from MTP (manual copy) , */\
|
||||
{ 0x3200, "key01_locked"}, /* key01_locked, indication key 1 is locked , */\
|
||||
{ 0x3210, "key02_locked"}, /* key02_locked, indication key 2 is locked , */\
|
||||
{ 0x3225, "mtp_ecc_tcout"}, /* mtp_ecc_tcout , */\
|
||||
{ 0x3280, "mtpctrl_valid_test_rd"}, /* mtp test readout for read , */\
|
||||
{ 0x3290, "mtpctrl_valid_test_wr"}, /* mtp test readout for write , */\
|
||||
{ 0x32a0, "flag_in_alarm_state"}, /* alarm state , */\
|
||||
{ 0x32b0, "mtp_ecc_err2"}, /* two or more bit errors detected in MTP, can not reconstruct value, */\
|
||||
{ 0x32c0, "mtp_ecc_err1"}, /* one bit error detected in MTP, reconstructed value, */\
|
||||
{ 0x32d0, "mtp_mtp_hvf"}, /* high voltage ready flag for MTP , */\
|
||||
{ 0x32f0, "mtp_zero_check_fail"}, /* zero check failed (tbd) for MTP , */\
|
||||
{ 0x3300, "flag_adc10_ready"}, /* flag_adc10_ready, indication adc10 is ready , */\
|
||||
{ 0x3310, "flag_clipa_high"}, /* flag_clipa_high, indication pmos amplifier "a" is clipping, */\
|
||||
{ 0x3320, "flag_clipa_low"}, /* flag_clipa_low, indication nmos amplifier "a" is clipping, */\
|
||||
{ 0x3330, "flag_clipb_high"}, /* flag_clipb_high, indication pmos amplifier "b" is clipping, */\
|
||||
{ 0x3340, "flag_clipb_low"}, /* flag_clipb_low, indication nmos amplifier "b" is clipping, */\
|
||||
{ 0x3359, "data_adc10_tempbat"}, /* adc 10 data output for testing , */\
|
||||
{ 0x33f0, "flag_vddd_comp_nok"}, /* power switch flag 2 for testing , */\
|
||||
{ 0x400f, "hid_code"}, /* hidden code , */\
|
||||
{ 0x4100, "bypass_hp"}, /* Bypass_High Pass Filter , */\
|
||||
{ 0x4110, "hard_mute"}, /* Hard Mute , */\
|
||||
{ 0x4120, "soft_mute"}, /* Soft Mute , */\
|
||||
{ 0x4134, "PWM_Delay"}, /* PWM DelayBits to set the delay , */\
|
||||
{ 0x4180, "PWM_Shape"}, /* PWM Shape , */\
|
||||
{ 0x4190, "PWM_BitLength"}, /* PWM Bitlength in noise shaper , */\
|
||||
{ 0x4207, "ctrl_drive"}, /* drive bits to select amount of power stages amplifier, */\
|
||||
{ 0x4281, "dpsalevel"}, /* DPSA Threshold level , */\
|
||||
{ 0x42a1, "dpsa_release"}, /* DPSA Release time , */\
|
||||
{ 0x42c0, "ctrl_coincidence"}, /* Prevent simultaneously switching of output stage , */\
|
||||
{ 0x42d0, "ctrl_kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x42e0, "ctrl_test_sdeltaoffset"}, /* ctrl_test_sdeltaoffset , */\
|
||||
{ 0x42f0, "ctrl_test_sdeltaclk"}, /* ctrl_test_sdeltaclk , */\
|
||||
{ 0x4309, "ctrl_drivebst"}, /* Drive bits to select the powertransistor sections boost converter, */\
|
||||
{ 0x43a0, "ctrl_ocptestbst"}, /* Boost OCP. , */\
|
||||
{ 0x43c0, "enbl_hi_peak"}, /* enable for high peak comparator , */\
|
||||
{ 0x43d0, "test_abistfft_enbl"}, /* FFT coolflux , */\
|
||||
{ 0x43e0, "ctrl_sensetest_amp"}, /* sensetest amplifier , */\
|
||||
{ 0x43f0, "test_bcontrol"}, /* test _bcontrol , */\
|
||||
{ 0x4400, "ctrl_reversebst"}, /* OverCurrent Protection selection of power stage boost converter, */\
|
||||
{ 0x4410, "ctrl_sensetest"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0x4420, "enbl_engagebst"}, /* Enable power stage dcdc controller , */\
|
||||
{ 0x4430, "enbl_hi_small"}, /* Enable bit of hi (small) comparator , */\
|
||||
{ 0x4440, "enbl_hi_large"}, /* Enable bit of hi (large) comparator , */\
|
||||
{ 0x4450, "enbl_lo_small"}, /* Enable bit of lo (small) comparator , */\
|
||||
{ 0x4460, "enbl_lo_large"}, /* Enable bit of lo (large) comparator , */\
|
||||
{ 0x4470, "enbl_slopecur"}, /* Enable bit of max-current dac , */\
|
||||
{ 0x4480, "enbl_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x4490, "enbl_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x44a0, "enbl_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x44b0, "enbl_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x44c0, "enbl_pcdac"}, /* Enable peak current dac , */\
|
||||
{ 0x44d0, "enbl_pccomp"}, /* Enable peak current comparator , */\
|
||||
{ 0x44e0, "enbl_windac"}, /* Enable window dac , */\
|
||||
{ 0x44f0, "enbl_powerbst"}, /* Enable line of the powerstage , */\
|
||||
{ 0x4507, "ocp_thr"}, /* ocp_thr threshold level for OCP , */\
|
||||
{ 0x4580, "bypass_glitchfilter"}, /* Bypass glitchfilter , */\
|
||||
{ 0x4590, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0x45a0, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0x45b0, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0x45c0, "bypass_ocp"}, /* Bypass OCP , */\
|
||||
{ 0x45d0, "bypass_ocpcounter"}, /* BypassOCPCounter , */\
|
||||
{ 0x45e0, "bypass_lost_clk"}, /* Bypasslost_clk detector , */\
|
||||
{ 0x45f0, "vpalarm"}, /* vpalarm (uvp ovp handling) , */\
|
||||
{ 0x4600, "bypass_gc"}, /* bypass_gc, bypasses the CS gain correction , */\
|
||||
{ 0x4610, "cs_gain_control"}, /* gain control by means of MTP or i2c , */\
|
||||
{ 0x4627, "cs_gain"}, /* + / - 128 steps in steps of 1/4 % 2's compliment , */\
|
||||
{ 0x46a0, "bypass_lp"}, /* bypass Low-Pass filter in temperature sensor , */\
|
||||
{ 0x46b0, "bypass_pwmcounter"}, /* bypass_pwmcounter , */\
|
||||
{ 0x46c0, "ctrl_cs_negfixed"}, /* does not switch to neg , */\
|
||||
{ 0x46d2, "ctrl_cs_neghyst"}, /* switches to neg depending on level , */\
|
||||
{ 0x4700, "switch_fb"}, /* switch_fb , */\
|
||||
{ 0x4713, "se_hyst"}, /* se_hyst , */\
|
||||
{ 0x4754, "se_level"}, /* se_level , */\
|
||||
{ 0x47a5, "ktemp"}, /* temperature compensation trimming , */\
|
||||
{ 0x4800, "ctrl_negin"}, /* negin , */\
|
||||
{ 0x4810, "ctrl_cs_sein"}, /* cs_sein , */\
|
||||
{ 0x4820, "ctrl_coincidencecs"}, /* Coincidence current sense , */\
|
||||
{ 0x4830, "ctrl_iddqtestbst"}, /* for iddq testing in powerstage of boost convertor , */\
|
||||
{ 0x4840, "ctrl_coincidencebst"}, /* Switch protection on to prevent simultaniously switching power stages bst and amp, */\
|
||||
{ 0x4851, "clock_sh_sel"}, /* Clock SH selection , */\
|
||||
{ 0x4876, "delay_se_neg"}, /* delay of se and neg , */\
|
||||
{ 0x48e1, "ctrl_cs_ttrack"}, /* sample & hold track time , */\
|
||||
{ 0x4900, "ctrl_bypassclip"}, /* Bypass clip control (function depending on digimux clip_x), */\
|
||||
{ 0x4910, "ctrl_bypassclip2"}, /* Bypass clip control (function depending on digimux clip_x), */\
|
||||
{ 0x4920, "ctrl_clkgateCFoff"}, /* to disable clock gating in the coolflux , */\
|
||||
{ 0x4930, "ctrl_testabst"}, /* testabst , */\
|
||||
{ 0x4940, "ctrl_clipfast"}, /* clock switch for battery protection clipper, it switches back to old frequency, */\
|
||||
{ 0x4950, "ctrl_cs_8ohm"}, /* 8 ohm mode for current sense (gain mode) , */\
|
||||
{ 0x4960, "reserved"}, /* reserved , */\
|
||||
{ 0x4974, "delay_clock_sh"}, /* delay_sh, tunes S7H delay , */\
|
||||
{ 0x49c0, "inv_clksh"}, /* Invert the sample/hold clock for current sense ADC, */\
|
||||
{ 0x49d0, "inv_neg"}, /* Invert neg signal , */\
|
||||
{ 0x49e0, "inv_se"}, /* Invert se signal , */\
|
||||
{ 0x49f0, "setse"}, /* switches between Single Ende and differentail mode, */\
|
||||
{ 0x4a12, "ctrl_adc10_sel"}, /* select the input to convert the 10b ADC , */\
|
||||
{ 0x4a60, "ctrl_adc10_reset"}, /* Global asynchronous reset (active HIGH) 10 bit ADC, */\
|
||||
{ 0x4a81, "ctrl_adc10_test"}, /* Test mode selection signal 10 bit ADC , */\
|
||||
{ 0x4aa0, "ctrl_bypass_lp_vbat"}, /* lp filter in batt sensor , */\
|
||||
{ 0x4ae0, "ctrl_dc_offset"}, /* switch offset control on/off, is decimator offset control, */\
|
||||
{ 0x4af0, "ctrl_tsense_hibias"}, /* bit to set the biasing in temp sensor to high , */\
|
||||
{ 0x4b00, "ctrl_adc13_iset"}, /* Micadc Setting of current consumption. Debug use only, */\
|
||||
{ 0x4b14, "ctrl_adc13_gain"}, /* Micadc gain setting (2-compl) , */\
|
||||
{ 0x4b61, "ctrl_adc13_slowdel"}, /* Micadc Delay setting for internal clock. Debug use only, */\
|
||||
{ 0x4b83, "ctrl_adc13_offset"}, /* Micadc ADC offset setting , */\
|
||||
{ 0x4bc0, "ctrl_adc13_bsoinv"}, /* Micadc bit stream output invert mode for test , */\
|
||||
{ 0x4bd0, "ctrl_adc13_resonator_enable"}, /* Micadc Give extra SNR with less stability. Debug use only, */\
|
||||
{ 0x4be0, "ctrl_testmicadc"}, /* Mux at input of MICADC for test purpose , */\
|
||||
{ 0x4c0f, "ctrl_offset"}, /* offset control for ABIST testing , */\
|
||||
{ 0x4d05, "ctrl_windac"}, /* for testing direct control windac , */\
|
||||
{ 0x4d65, "ctrl_peakcur"}, /* Control peakcur , */\
|
||||
{ 0x4dc3, "pwm_dcc_cnt"}, /* control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0x4e04, "ctrl_slopecur"}, /* for testing direct control slopecur , */\
|
||||
{ 0x4e53, "ctrl_dem"}, /* dyn element matching control, rest of codes are optional, */\
|
||||
{ 0x4e93, "ctrl_demmismatch"}, /* dyn element matching add offset , */\
|
||||
{ 0x4ed0, "enbl_pwm_dcc"}, /* to enable direct control of pwm duty cycle , */\
|
||||
{ 0x5007, "gain"}, /* gain setting of the gain multiplier gain need to increase with factor 1.41 (3dB), */\
|
||||
{ 0x5081, "ctrl_sourceb"}, /* Set OUTB to , */\
|
||||
{ 0x50a1, "ctrl_sourcea"}, /* Set OUTA to , */\
|
||||
{ 0x50c1, "ctrl_sourcebst"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0x50e1, "ctrl_test_mono"}, /* ABIST mode to add both amplifier halfs as stereo or one amplifier half as mono, */\
|
||||
{ 0x5104, "pulselengthbst"}, /* pulselength setting test input for boost converter , */\
|
||||
{ 0x5150, "ctrl_bypasslatchbst"}, /* bypass_latch in boost converter , */\
|
||||
{ 0x5160, "invertbst"}, /* invert pwmbst test signal , */\
|
||||
{ 0x5174, "pulselength"}, /* pulselength setting test input for amplifier , */\
|
||||
{ 0x51c0, "ctrl_bypasslatch"}, /* bypass_latch in boost convert , */\
|
||||
{ 0x51d0, "invertb"}, /* invert pwmb test signal , */\
|
||||
{ 0x51e0, "inverta"}, /* invert pwma test signal , */\
|
||||
{ 0x51f0, "ctrl_bypass_ctrlloop"}, /* bypass_ctrlloop bypasses the control loop of the amplifier, */\
|
||||
{ 0x5200, "ctrl_test_discrete"}, /* tbd for rdson testing , */\
|
||||
{ 0x5210, "ctrl_test_rdsona"}, /* tbd for rdson testing , */\
|
||||
{ 0x5220, "ctrl_test_rdsonb"}, /* tbd for rdson testing , */\
|
||||
{ 0x5230, "ctrl_test_rdsonbst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5240, "ctrl_test_cvia"}, /* tbd for rdson testing , */\
|
||||
{ 0x5250, "ctrl_test_cvib"}, /* tbd for rdson testing , */\
|
||||
{ 0x5260, "ctrl_test_cvibst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5290, "test_bypass_pwmdiscretea"}, /* for testing ( ABIST) , */\
|
||||
{ 0x52a0, "test_bypass_pwmdiscreteb"}, /* for testing ( ABIST) , */\
|
||||
{ 0x52b0, "ctrl_clipc_forcehigh"}, /* test signal for clipcontrol , */\
|
||||
{ 0x52c0, "ctrl_clipc_forcelow"}, /* test signal for clipcontrol , */\
|
||||
{ 0x52d0, "ctrl_test_sdelta"}, /* for testing ( ABIST) , */\
|
||||
{ 0x52e0, "ctrl_test_swhvp"}, /* for testing ( ABIST) , */\
|
||||
{ 0x52f0, "test_gain_reduction"}, /* test gain reduction , */\
|
||||
{ 0x5303, "ctrl_digimux_out_test1"}, /* Digimux TEST1 out , */\
|
||||
{ 0x5343, "ctrl_digimux_out_test2"}, /* Digimux TEST2 out. output flag_clipa_low depending on cntr_bypassclip setting, */\
|
||||
{ 0x5383, "ctrl_digimux_out_data1"}, /* Digimux DATA1 out (output flag_clipb_high depending on cntr_bypassclip setting), */\
|
||||
{ 0x53c3, "ctrl_digimux_out_data3"}, /* Digimux DATA3 out (output flag_clipx_x depending on cntr_bypassclip setting), */\
|
||||
{ 0x5400, "hs_mode"}, /* hs_mode, high speed mode I2C bus , */\
|
||||
{ 0x5412, "test_parametric_io"}, /* test_parametric_io for testing pads , */\
|
||||
{ 0x5440, "enbl_ringo"}, /* enbl_ringo, for test purpose to check with ringo , */\
|
||||
{ 0x5480, "ctrl_cliplevel"}, /* Clip level , */\
|
||||
{ 0x5491, "ctrl_anamux_sel"}, /* anamux selection , */\
|
||||
{ 0x54b0, "test_vdddsw_dio"}, /* to overrule the power switches for memory , */\
|
||||
{ 0x54c0, "ctrl_bypass_diosw_ovp"}, /* To disable the overvoltage protection of vddd_dio_sw, */\
|
||||
{ 0x54d0, "test_vddd_sw"}, /* test vdd sw , */\
|
||||
{ 0x54e0, "test_vddd_sw_comp"}, /* test vdd sw comp , */\
|
||||
{ 0x550e, "enbl_amp"}, /* enbl_amp for testing to enable all analoge blocks in amplifier, */\
|
||||
{ 0x55f0, "fr_fsp"}, /* extr free running clock mode for testing , */\
|
||||
{ 0x5600, "use_direct_ctrls"}, /* use_direct_ctrls, to overrule several functions direct for testing, */\
|
||||
{ 0x5610, "rst_datapath"}, /* rst_datapath, datapath reset , */\
|
||||
{ 0x5620, "rst_cgu"}, /* rst_cgu, cgu reset , */\
|
||||
{ 0x5637, "enbl_ref"}, /* for testing to enable all analoge blocks in references, */\
|
||||
{ 0x56b0, "enbl_engage"}, /* Enable output stage amplifier , */\
|
||||
{ 0x56c0, "use_direct_clk_ctrl"}, /* use_direct_clk_ctrl, to overrule several functions direct for testing, */\
|
||||
{ 0x56d0, "use_direct_pll_ctrl"}, /* use_direct_pll_ctrl, to overrule several functions direct for test, */\
|
||||
{ 0x56e0, "use_direct_ctrls_2"}, /* use_direct_sourseamp_ctrls, to overrule several functions direct for testing, */\
|
||||
{ 0x5707, "ctrl_anamux_out_test1"}, /* Anamux control , */\
|
||||
{ 0x5782, "ctrl_zero"}, /* Bandwith control feedbackloop , */\
|
||||
{ 0x57b0, "enbl_ldo_stress"}, /* LDO stress function frinch capacitors , */\
|
||||
{ 0x57c0, "ctrl_ocptest"}, /* ctrl_ocptest, deactivates the over current protection in the power stages of the amplifier. The ocp flag signals stay active., */\
|
||||
{ 0x57e0, "ctrl_otptest"}, /* otptest, test mode otp amplifier , */\
|
||||
{ 0x57f0, "ctrl_reverse"}, /* CTRL revers , */\
|
||||
{ 0x5802, "pll_mdec_msb"}, /* most significant bits pll_mdec , */\
|
||||
{ 0x5833, "pll_selr"}, /* pll_selr , */\
|
||||
{ 0x5874, "pll_selp"}, /* pll_selp , */\
|
||||
{ 0x58c3, "pll_seli"}, /* pll_seli , */\
|
||||
{ 0x5900, "pll_psel"}, /* pll_psel , */\
|
||||
{ 0x5910, "use_direct_pll_psel"}, /* use_direct_pll_psel , */\
|
||||
{ 0x5923, "nbck"}, /* NBCK , */\
|
||||
{ 0x5960, "auto_nbck"}, /* AUTO_NBCK , */\
|
||||
{ 0x5970, "pll_frm"}, /* pll_frm , */\
|
||||
{ 0x5980, "pll_directi"}, /* pll_directi , */\
|
||||
{ 0x5990, "pll_directo"}, /* pll_directo , */\
|
||||
{ 0x59a0, "enbl_PLL"}, /* enbl_PLL , */\
|
||||
{ 0x59b0, "sel_clkout"}, /* SEL_CLKOUT , */\
|
||||
{ 0x59e0, "fr_lost_clk"}, /* fr_lost_clk , */\
|
||||
{ 0x59f0, "pll_bypass"}, /* pll_bypass , */\
|
||||
{ 0x5a0f, "tsig_freq"}, /* tsig_freq, internal sinus test generator, frequency control, */\
|
||||
{ 0x5b02, "tsig_freq_msb"}, /* select internal sinus test generator, frequency control msb bits, */\
|
||||
{ 0x5b30, "inject_tsig"}, /* inject_tsig, control bit to switch to internal sinus test generator, */\
|
||||
{ 0x5b44, "ctrl_adc10_prog_sample"}, /* control ADC10 , */\
|
||||
{ 0x5c01, "pll_ndec_msb"}, /* most significant bits of pll_ndec , */\
|
||||
{ 0x5c2d, "pll_mdec"}, /* bits 13..0 of pll_mdec , */\
|
||||
{ 0x5d06, "pll_pdec"}, /* pll_pdec , */\
|
||||
{ 0x5d87, "pll_ndec"}, /* bits 7..0 of pll_ndec , */\
|
||||
{ 0x5e00, "pdm_ch_sel_reg"}, /* PDM channel selection , */\
|
||||
{ 0x5e10, "pdm_iis_rst_reg"}, /* PDM Interface reset , */\
|
||||
{ 0x5e20, "clk_src_sel_reg"}, /* WS Source Selection , */\
|
||||
{ 0x5e70, "pdm_resync_bypass"}, /* PDM resynchronization bypass , */\
|
||||
{ 0x6007, "MTP_key1"}, /* MTP Key1 , */\
|
||||
{ 0x6185, "mtp_ecc_tcin"}, /* Mtp_ecc_tcin , */\
|
||||
{ 0x6203, "mtp_man_address_in"}, /* address from i2cregs for writing one word single mtp, */\
|
||||
{ 0x6260, "mtp_ecc_eeb"}, /* enable code bit generation (active low!) , */\
|
||||
{ 0x6270, "mtp_ecc_ecb"}, /* enable correction signal (active low!) , */\
|
||||
{ 0x6280, "man_copy_mtp_to_iic"}, /* start copying single word from mtp to i2cregs_mtp , */\
|
||||
{ 0x6290, "man_copy_iic_to_mtp"}, /* start copying single word from i2cregs_mtp to mtp [Key 1 protected], */\
|
||||
{ 0x62a0, "auto_copy_mtp_to_iic"}, /* start copying all the data from mtp to i2cregs_mtp, */\
|
||||
{ 0x62b0, "auto_copy_iic_to_mtp"}, /* start copying all the data from i2cregs_mtp to mtp [Key 2 protected], */\
|
||||
{ 0x62d2, "mtp_speed_mode"}, /* Speed mode , */\
|
||||
{ 0x6340, "mtp_dircet_enable"}, /* mtp_direct_enable (key1 protected) , */\
|
||||
{ 0x6350, "mtp_direct_wr"}, /* mtp_direct_wr (key1 protected) direct value for mtp pin wr. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x6360, "mtp_direct_rd"}, /* mtp_direct_rd (key1 protected) direct value for mtp pin rd. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x6370, "mtp_direct_rst"}, /* mtp_direct_rst (key1 protected) direct value for mtp pin rst. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x6380, "mtp_direct_ers"}, /* mtp_direct_ers (key1 protected) direct value for mtp pin ers. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x6390, "mtp_direct_prg"}, /* mtp_direct_prg (key1 protected) direct value for mtp pin prg. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x63a0, "mtp_direct_epp"}, /* mtp_direct_epp (key1 protected) direct value for mtp pin epp. To be enabled via iic2mtp_mtp_direct_enable, */\
|
||||
{ 0x63b4, "mtp_direct_test"}, /* mtp_direct_test (key1 protected) , */\
|
||||
{ 0x640f, "mtp_man_data_in"}, /* single wordt be written to MTP (manual copy) , */\
|
||||
{ 0x7000, "cf_rst_dsp"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "cf_dmem"}, /* Target memory for access , */\
|
||||
{ 0x7030, "cf_aif"}, /* Autoincrement-flag for memory-address , */\
|
||||
{ 0x7040, "cf_int"}, /* Interrupt CoolFlux DSP , */\
|
||||
{ 0x7087, "cf_req"}, /* request for access (8 channels) , */\
|
||||
{ 0x710f, "cf_madd"}, /* memory-address to be accessed , */\
|
||||
{ 0x720f, "cf_mema"}, /* activate memory access (24- or 32-bits data is written/read to/from memory, */\
|
||||
{ 0x7307, "cf_err"}, /* cf error Flags , */\
|
||||
{ 0x7387, "cf_ack"}, /* acknowledge of requests (8 channels")" , */\
|
||||
{ 0x8000, "calibration_onetime"}, /* Calibration schedule (key2 protected) , */\
|
||||
{ 0x8010, "calibr_ron_done"}, /* (key2 protected) calibration of Ron has been executed, */\
|
||||
{ 0x8105, "calibr_vout_offset"}, /* calibr_vout_offset (DCDCoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8163, "calibr_delta_gain"}, /* delta gain for vamp (alpha) 2's compliment (key1 protected), */\
|
||||
{ 0x81a5, "calibr_offs_amp"}, /* offset for vamp (Ampoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8207, "calibr_gain_cs"}, /* gain current sense (Imeasalpha) 2's compliment (key1 protected), */\
|
||||
{ 0x8284, "calibr_temp_offset"}, /* temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0x82d2, "calibr_temp_gain"}, /* temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0x830f, "calibr_ron"}, /* Ron resistance of coil (key1 protected) , */\
|
||||
{ 0x8406, "ctrl_offset_a"}, /* Offset of amplifier level shifter , */\
|
||||
{ 0x8486, "ctrl_offset_b"}, /* Offset of amplifier level shifter , */\
|
||||
{ 0x850f, "type_bits_HW"}, /* HW Bits , */\
|
||||
{ 0x860f, "type_bits1_SW"}, /* MTP-control SW1 , */\
|
||||
{ 0x870f, "type_bits2_SW"}, /* MTP-control SW2 , */\
|
||||
{ 0x8a0f, "production_data1"}, /* (key1 protected) , */\
|
||||
{ 0x8b0f, "production_data2"}, /* (key1 protected) , */\
|
||||
{ 0x8c0f, "production_data3"}, /* (key1 protected) , */\
|
||||
{ 0x8d0f, "production_data4"}, /* (key1 protected) , */\
|
||||
{ 0x8e0f, "production_data5"}, /* (key1 protected) , */\
|
||||
{ 0x8f0f, "production_data6"}, /* (key1 protected) , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
|
||||
#endif /* TFA_INC_TFA9891_TFAFIELDNAMES_H_ */
|
||||
1079
techpack/audio/asoc/codecs/tfa9874/inc/tfa9894_tfafieldnames.h
Executable file
1079
techpack/audio/asoc/codecs/tfa9874/inc/tfa9894_tfafieldnames.h
Executable file
File diff suppressed because it is too large
Load diff
1130
techpack/audio/asoc/codecs/tfa9874/inc/tfa9894_tfafieldnames_N2.h
Executable file
1130
techpack/audio/asoc/codecs/tfa9874/inc/tfa9894_tfafieldnames_N2.h
Executable file
File diff suppressed because it is too large
Load diff
930
techpack/audio/asoc/codecs/tfa9874/inc/tfa9896_tfafieldnames.h
Executable file
930
techpack/audio/asoc/codecs/tfa9874/inc/tfa9896_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,930 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/** Filename: tfa9896_tfafieldnames.h
|
||||
* This file was generated automatically on 08/15/16 at 09:43:38.
|
||||
* Source file: TFA9896_N1B1_I2C_regmap_V16.xlsx
|
||||
*/
|
||||
|
||||
#ifndef _TFA9896_TFAFIELDNAMES_H
|
||||
#define _TFA9896_TFAFIELDNAMES_H
|
||||
|
||||
|
||||
#define TFA9896_I2CVERSION 16
|
||||
|
||||
typedef enum TFA9896BfEnumList {
|
||||
TFA9896_BF_VDDS = 0x0000, /*!< Power-on-reset flag (auto clear by reading) */
|
||||
TFA9896_BF_PLLS = 0x0010, /*!< PLL lock to programmed frequency */
|
||||
TFA9896_BF_OTDS = 0x0020, /*!< Over Temperature Protection alarm */
|
||||
TFA9896_BF_OVDS = 0x0030, /*!< Over Voltage Protection alarm */
|
||||
TFA9896_BF_UVDS = 0x0040, /*!< Under Voltage Protection alarm */
|
||||
TFA9896_BF_OCDS = 0x0050, /*!< Over Current Protection alarm */
|
||||
TFA9896_BF_CLKS = 0x0060, /*!< Clocks stable flag */
|
||||
TFA9896_BF_CLIPS = 0x0070, /*!< Amplifier clipping */
|
||||
TFA9896_BF_MTPB = 0x0080, /*!< MTP busy copying data to/from I2C registers */
|
||||
TFA9896_BF_NOCLK = 0x0090, /*!< lost clock detection (reference input clock) */
|
||||
TFA9896_BF_SPKS = 0x00a0, /*!< Speaker error */
|
||||
TFA9896_BF_ACS = 0x00b0, /*!< Cold Start required */
|
||||
TFA9896_BF_SWS = 0x00c0, /*!< Amplifier engage (Amp Switching) */
|
||||
TFA9896_BF_WDS = 0x00d0, /*!< watchdog reset (activates reset) */
|
||||
TFA9896_BF_AMPS = 0x00e0, /*!< Amplifier is enabled by manager */
|
||||
TFA9896_BF_AREFS = 0x00f0, /*!< References are enabled by manager */
|
||||
TFA9896_BF_BATS = 0x0109, /*!< Battery voltage from ADC readout */
|
||||
TFA9896_BF_TEMPS = 0x0208, /*!< Temperature readout from the temperature sensor ( C) */
|
||||
TFA9896_BF_REV = 0x030f, /*!< Device revision information */
|
||||
TFA9896_BF_RCV = 0x0420, /*!< Enable receiver mode */
|
||||
TFA9896_BF_CHS12 = 0x0431, /*!< Channel Selection TDM input for Coolflux */
|
||||
TFA9896_BF_INPLVL= 0x0450, /*!< Input level selection attenuator ( */
|
||||
TFA9896_BF_CHSA = 0x0461, /*!< Input selection for amplifier */
|
||||
TFA9896_BF_AUDFS = 0x04c3, /*!< Audio sample rate setting */
|
||||
TFA9896_BF_BSSCR = 0x0501, /*!< Batteery protection attack time */
|
||||
TFA9896_BF_BSST = 0x0523, /*!< Battery protection threshold level */
|
||||
TFA9896_BF_BSSRL = 0x0561, /*!< Battery protection maximum reduction */
|
||||
TFA9896_BF_BSSRR = 0x0582, /*!< Battery protection release time */
|
||||
TFA9896_BF_BSSHY = 0x05b1, /*!< Battery Protection Hysteresis */
|
||||
TFA9896_BF_BSSR = 0x05e0, /*!< Battery voltage value for read out (only) */
|
||||
TFA9896_BF_BSSBY = 0x05f0, /*!< Bypass clipper battery protection */
|
||||
TFA9896_BF_DPSA = 0x0600, /*!< Enable dynamic powerstage activation (DPSA) */
|
||||
TFA9896_BF_ATTEN = 0x0613, /*!< Gain attenuation setting */
|
||||
TFA9896_BF_CFSM = 0x0650, /*!< Soft mute in CoolFlux */
|
||||
TFA9896_BF_BSSS = 0x0670, /*!< Battery sense steepness */
|
||||
TFA9896_BF_VOL = 0x0687, /*!< Coolflux volume control */
|
||||
TFA9896_BF_DCVO2 = 0x0702, /*!< Second Boost Voltage */
|
||||
TFA9896_BF_DCMCC = 0x0733, /*!< Max boost coil current - step of 175 mA */
|
||||
TFA9896_BF_DCVO1 = 0x0772, /*!< First Boost Voltage */
|
||||
TFA9896_BF_DCIE = 0x07a0, /*!< Adaptive boost mode */
|
||||
TFA9896_BF_DCSR = 0x07b0, /*!< Soft Rampup/down mode for DCDC controller */
|
||||
TFA9896_BF_DCPAVG= 0x07c0, /*!< ctrl_peak2avg for analog part of DCDC */
|
||||
TFA9896_BF_DCPWM = 0x07d0, /*!< DCDC PWM only mode */
|
||||
TFA9896_BF_TROS = 0x0800, /*!< Selection ambient temperature for speaker calibration */
|
||||
TFA9896_BF_EXTTS = 0x0818, /*!< External temperature for speaker calibration (C) */
|
||||
TFA9896_BF_PWDN = 0x0900, /*!< powerdown selection */
|
||||
TFA9896_BF_I2CR = 0x0910, /*!< All I2C registers reset to default */
|
||||
TFA9896_BF_CFE = 0x0920, /*!< Enable CoolFlux */
|
||||
TFA9896_BF_AMPE = 0x0930, /*!< Enable Amplifier */
|
||||
TFA9896_BF_DCA = 0x0940, /*!< Enable DCDC Boost converter */
|
||||
TFA9896_BF_SBSL = 0x0950, /*!< Coolflux configured */
|
||||
TFA9896_BF_AMPC = 0x0960, /*!< Selection if Coolflux enables amplifier */
|
||||
TFA9896_BF_DCDIS = 0x0970, /*!< DCDC boost converter not connected */
|
||||
TFA9896_BF_PSDR = 0x0980, /*!< IDDQ amplifier test selection */
|
||||
TFA9896_BF_INTPAD= 0x09c1, /*!< INT pad (interrupt bump output) configuration */
|
||||
TFA9896_BF_IPLL = 0x09e0, /*!< PLL input reference clock selection */
|
||||
TFA9896_BF_DCTRIP= 0x0a04, /*!< Adaptive boost trip levels (effective only when boost_intel is set to 1) */
|
||||
TFA9896_BF_DCHOLD= 0x0a54, /*!< Hold time for DCDC booster (effective only when boost_intel is set to 1) */
|
||||
TFA9896_BF_MTPK = 0x0b07, /*!< KEY2 to access key2 protected registers (default for engineering) */
|
||||
TFA9896_BF_CVFDLY= 0x0c25, /*!< Fractional delay adjustment between current and voltage sense */
|
||||
TFA9896_BF_OPENMTP= 0x0ec0, /*!< Enable programming of the MTP memory */
|
||||
TFA9896_BF_TDMPRF= 0x1011, /*!< TDM usecase selection control */
|
||||
TFA9896_BF_TDMEN = 0x1030, /*!< TDM interface enable */
|
||||
TFA9896_BF_TDMCKINV= 0x1040, /*!< TDM clock inversion, receive on */
|
||||
TFA9896_BF_TDMFSLN= 0x1053, /*!< TDM FS length */
|
||||
TFA9896_BF_TDMFSPOL= 0x1090, /*!< TDM FS polarity (start frame) */
|
||||
TFA9896_BF_TDMSAMSZ= 0x10a4, /*!< TDM sample size for all TDM sinks and sources */
|
||||
TFA9896_BF_TDMSLOTS= 0x1103, /*!< TDM number of slots */
|
||||
TFA9896_BF_TDMSLLN= 0x1144, /*!< TDM slot length */
|
||||
TFA9896_BF_TDMBRMG= 0x1194, /*!< TDM bits remaining after the last slot */
|
||||
TFA9896_BF_TDMDDEL= 0x11e0, /*!< TDM data delay */
|
||||
TFA9896_BF_TDMDADJ= 0x11f0, /*!< TDM data adjustment */
|
||||
TFA9896_BF_TDMTXFRM= 0x1201, /*!< TDM TXDATA format */
|
||||
TFA9896_BF_TDMUUS0= 0x1221, /*!< TDM TXDATA format unused slot SD0 */
|
||||
TFA9896_BF_TDMUUS1= 0x1241, /*!< TDM TXDATA format unused slot SD1 */
|
||||
TFA9896_BF_TDMSI0EN= 0x1270, /*!< TDM sink0 enable */
|
||||
TFA9896_BF_TDMSI1EN= 0x1280, /*!< TDM sink1 enable */
|
||||
TFA9896_BF_TDMSI2EN= 0x1290, /*!< TDM sink2 enable */
|
||||
TFA9896_BF_TDMSO0EN= 0x12a0, /*!< TDM source0 enable */
|
||||
TFA9896_BF_TDMSO1EN= 0x12b0, /*!< TDM source1 enable */
|
||||
TFA9896_BF_TDMSO2EN= 0x12c0, /*!< TDM source2 enable */
|
||||
TFA9896_BF_TDMSI0IO= 0x12d0, /*!< TDM sink0 IO selection */
|
||||
TFA9896_BF_TDMSI1IO= 0x12e0, /*!< TDM sink1 IO selection */
|
||||
TFA9896_BF_TDMSI2IO= 0x12f0, /*!< TDM sink2 IO selection */
|
||||
TFA9896_BF_TDMSO0IO= 0x1300, /*!< TDM source0 IO selection */
|
||||
TFA9896_BF_TDMSO1IO= 0x1310, /*!< TDM source1 IO selection */
|
||||
TFA9896_BF_TDMSO2IO= 0x1320, /*!< TDM source2 IO selection */
|
||||
TFA9896_BF_TDMSI0SL= 0x1333, /*!< TDM sink0 slot position [GAIN IN] */
|
||||
TFA9896_BF_TDMSI1SL= 0x1373, /*!< TDM sink1 slot position [CH1 IN] */
|
||||
TFA9896_BF_TDMSI2SL= 0x13b3, /*!< TDM sink2 slot position [CH2 IN] */
|
||||
TFA9896_BF_TDMSO0SL= 0x1403, /*!< TDM source0 slot position [GAIN OUT] */
|
||||
TFA9896_BF_TDMSO1SL= 0x1443, /*!< TDM source1 slot position [Voltage Sense] */
|
||||
TFA9896_BF_TDMSO2SL= 0x1483, /*!< TDM source2 slot position [Current Sense] */
|
||||
TFA9896_BF_NBCK = 0x14c3, /*!< TDM NBCK bit clock ratio */
|
||||
TFA9896_BF_INTOVDDS= 0x2000, /*!< flag_por_int_out */
|
||||
TFA9896_BF_INTOPLLS= 0x2010, /*!< flag_pll_lock_int_out */
|
||||
TFA9896_BF_INTOOTDS= 0x2020, /*!< flag_otpok_int_out */
|
||||
TFA9896_BF_INTOOVDS= 0x2030, /*!< flag_ovpok_int_out */
|
||||
TFA9896_BF_INTOUVDS= 0x2040, /*!< flag_uvpok_int_out */
|
||||
TFA9896_BF_INTOOCDS= 0x2050, /*!< flag_ocp_alarm_int_out */
|
||||
TFA9896_BF_INTOCLKS= 0x2060, /*!< flag_clocks_stable_int_out */
|
||||
TFA9896_BF_INTOCLIPS= 0x2070, /*!< flag_clip_int_out */
|
||||
TFA9896_BF_INTOMTPB= 0x2080, /*!< mtp_busy_int_out */
|
||||
TFA9896_BF_INTONOCLK= 0x2090, /*!< flag_lost_clk_int_out */
|
||||
TFA9896_BF_INTOSPKS= 0x20a0, /*!< flag_cf_speakererror_int_out */
|
||||
TFA9896_BF_INTOACS= 0x20b0, /*!< flag_cold_started_int_out */
|
||||
TFA9896_BF_INTOSWS= 0x20c0, /*!< flag_engage_int_out */
|
||||
TFA9896_BF_INTOWDS= 0x20d0, /*!< flag_watchdog_reset_int_out */
|
||||
TFA9896_BF_INTOAMPS= 0x20e0, /*!< flag_enbl_amp_int_out */
|
||||
TFA9896_BF_INTOAREFS= 0x20f0, /*!< flag_enbl_ref_int_out */
|
||||
TFA9896_BF_INTOERR= 0x2200, /*!< flag_cfma_err_int_out */
|
||||
TFA9896_BF_INTOACK= 0x2210, /*!< flag_cfma_ack_int_out */
|
||||
TFA9896_BF_INTIVDDS= 0x2300, /*!< flag_por_int_in */
|
||||
TFA9896_BF_INTIPLLS= 0x2310, /*!< flag_pll_lock_int_in */
|
||||
TFA9896_BF_INTIOTDS= 0x2320, /*!< flag_otpok_int_in */
|
||||
TFA9896_BF_INTIOVDS= 0x2330, /*!< flag_ovpok_int_in */
|
||||
TFA9896_BF_INTIUVDS= 0x2340, /*!< flag_uvpok_int_in */
|
||||
TFA9896_BF_INTIOCDS= 0x2350, /*!< flag_ocp_alarm_int_in */
|
||||
TFA9896_BF_INTICLKS= 0x2360, /*!< flag_clocks_stable_int_in */
|
||||
TFA9896_BF_INTICLIPS= 0x2370, /*!< flag_clip_int_in */
|
||||
TFA9896_BF_INTIMTPB= 0x2380, /*!< mtp_busy_int_in */
|
||||
TFA9896_BF_INTINOCLK= 0x2390, /*!< flag_lost_clk_int_in */
|
||||
TFA9896_BF_INTISPKS= 0x23a0, /*!< flag_cf_speakererror_int_in */
|
||||
TFA9896_BF_INTIACS= 0x23b0, /*!< flag_cold_started_int_in */
|
||||
TFA9896_BF_INTISWS= 0x23c0, /*!< flag_engage_int_in */
|
||||
TFA9896_BF_INTIWDS= 0x23d0, /*!< flag_watchdog_reset_int_in */
|
||||
TFA9896_BF_INTIAMPS= 0x23e0, /*!< flag_enbl_amp_int_in */
|
||||
TFA9896_BF_INTIAREFS= 0x23f0, /*!< flag_enbl_ref_int_in */
|
||||
TFA9896_BF_INTIERR= 0x2500, /*!< flag_cfma_err_int_in */
|
||||
TFA9896_BF_INTIACK= 0x2510, /*!< flag_cfma_ack_int_in */
|
||||
TFA9896_BF_INTENVDDS= 0x2600, /*!< flag_por_int_enable */
|
||||
TFA9896_BF_INTENPLLS= 0x2610, /*!< flag_pll_lock_int_enable */
|
||||
TFA9896_BF_INTENOTDS= 0x2620, /*!< flag_otpok_int_enable */
|
||||
TFA9896_BF_INTENOVDS= 0x2630, /*!< flag_ovpok_int_enable */
|
||||
TFA9896_BF_INTENUVDS= 0x2640, /*!< flag_uvpok_int_enable */
|
||||
TFA9896_BF_INTENOCDS= 0x2650, /*!< flag_ocp_alarm_int_enable */
|
||||
TFA9896_BF_INTENCLKS= 0x2660, /*!< flag_clocks_stable_int_enable */
|
||||
TFA9896_BF_INTENCLIPS= 0x2670, /*!< flag_clip_int_enable */
|
||||
TFA9896_BF_INTENMTPB= 0x2680, /*!< mtp_busy_int_enable */
|
||||
TFA9896_BF_INTENNOCLK= 0x2690, /*!< flag_lost_clk_int_enable */
|
||||
TFA9896_BF_INTENSPKS= 0x26a0, /*!< flag_cf_speakererror_int_enable */
|
||||
TFA9896_BF_INTENACS= 0x26b0, /*!< flag_cold_started_int_enable */
|
||||
TFA9896_BF_INTENSWS= 0x26c0, /*!< flag_engage_int_enable */
|
||||
TFA9896_BF_INTENWDS= 0x26d0, /*!< flag_watchdog_reset_int_enable */
|
||||
TFA9896_BF_INTENAMPS= 0x26e0, /*!< flag_enbl_amp_int_enable */
|
||||
TFA9896_BF_INTENAREFS= 0x26f0, /*!< flag_enbl_ref_int_enable */
|
||||
TFA9896_BF_INTENERR= 0x2800, /*!< flag_cfma_err_int_enable */
|
||||
TFA9896_BF_INTENACK= 0x2810, /*!< flag_cfma_ack_int_enable */
|
||||
TFA9896_BF_INTPOLVDDS= 0x2900, /*!< flag_por_int_pol */
|
||||
TFA9896_BF_INTPOLPLLS= 0x2910, /*!< flag_pll_lock_int_pol */
|
||||
TFA9896_BF_INTPOLOTDS= 0x2920, /*!< flag_otpok_int_pol */
|
||||
TFA9896_BF_INTPOLOVDS= 0x2930, /*!< flag_ovpok_int_pol */
|
||||
TFA9896_BF_INTPOLUVDS= 0x2940, /*!< flag_uvpok_int_pol */
|
||||
TFA9896_BF_INTPOLOCDS= 0x2950, /*!< flag_ocp_alarm_int_pol */
|
||||
TFA9896_BF_INTPOLCLKS= 0x2960, /*!< flag_clocks_stable_int_pol */
|
||||
TFA9896_BF_INTPOLCLIPS= 0x2970, /*!< flag_clip_int_pol */
|
||||
TFA9896_BF_INTPOLMTPB= 0x2980, /*!< mtp_busy_int_pol */
|
||||
TFA9896_BF_INTPOLNOCLK= 0x2990, /*!< flag_lost_clk_int_pol */
|
||||
TFA9896_BF_INTPOLSPKS= 0x29a0, /*!< flag_cf_speakererror_int_pol */
|
||||
TFA9896_BF_INTPOLACS= 0x29b0, /*!< flag_cold_started_int_pol */
|
||||
TFA9896_BF_INTPOLSWS= 0x29c0, /*!< flag_engage_int_pol */
|
||||
TFA9896_BF_INTPOLWDS= 0x29d0, /*!< flag_watchdog_reset_int_pol */
|
||||
TFA9896_BF_INTPOLAMPS= 0x29e0, /*!< flag_enbl_amp_int_pol */
|
||||
TFA9896_BF_INTPOLAREFS= 0x29f0, /*!< flag_enbl_ref_int_pol */
|
||||
TFA9896_BF_INTPOLERR= 0x2b00, /*!< flag_cfma_err_int_pol */
|
||||
TFA9896_BF_INTPOLACK= 0x2b10, /*!< flag_cfma_ack_int_pol */
|
||||
TFA9896_BF_CLIP = 0x4900, /*!< Bypass clip control */
|
||||
TFA9896_BF_CIMTP = 0x62b0, /*!< Start copying data from I2C mtp registers to mtp */
|
||||
TFA9896_BF_RST = 0x7000, /*!< Reset CoolFlux DSP */
|
||||
TFA9896_BF_DMEM = 0x7011, /*!< Target memory for access */
|
||||
TFA9896_BF_AIF = 0x7030, /*!< Auto increment flag for memory-address */
|
||||
TFA9896_BF_CFINT = 0x7040, /*!< CF Interrupt - auto clear */
|
||||
TFA9896_BF_REQ = 0x7087, /*!< CF request for accessing the 8 channels */
|
||||
TFA9896_BF_MADD = 0x710f, /*!< Memory address */
|
||||
TFA9896_BF_MEMA = 0x720f, /*!< Activate memory access */
|
||||
TFA9896_BF_ERR = 0x7307, /*!< CF error flags */
|
||||
TFA9896_BF_ACK = 0x7387, /*!< CF acknowledgement of the requests channels */
|
||||
TFA9896_BF_MTPOTC= 0x8000, /*!< Calibration schedule selection */
|
||||
TFA9896_BF_MTPEX = 0x8010, /*!< Calibration of RON status bit */
|
||||
} TFA9896BfEnumList_t;
|
||||
#define TFA9896_NAMETABLE static tfaBfName_t Tfa9896DatasheetNames[]= {\
|
||||
{ 0x0, "VDDS"}, /* Power-on-reset flag (auto clear by reading) , */\
|
||||
{ 0x10, "PLLS"}, /* PLL lock to programmed frequency , */\
|
||||
{ 0x20, "OTDS"}, /* Over Temperature Protection alarm , */\
|
||||
{ 0x30, "OVDS"}, /* Over Voltage Protection alarm , */\
|
||||
{ 0x40, "UVDS"}, /* Under Voltage Protection alarm , */\
|
||||
{ 0x50, "OCDS"}, /* Over Current Protection alarm , */\
|
||||
{ 0x60, "CLKS"}, /* Clocks stable flag , */\
|
||||
{ 0x70, "CLIPS"}, /* Amplifier clipping , */\
|
||||
{ 0x80, "MTPB"}, /* MTP busy copying data to/from I2C registers , */\
|
||||
{ 0x90, "NOCLK"}, /* lost clock detection (reference input clock) , */\
|
||||
{ 0xa0, "SPKS"}, /* Speaker error , */\
|
||||
{ 0xb0, "ACS"}, /* Cold Start required , */\
|
||||
{ 0xc0, "SWS"}, /* Amplifier engage (Amp Switching) , */\
|
||||
{ 0xd0, "WDS"}, /* watchdog reset (activates reset) , */\
|
||||
{ 0xe0, "AMPS"}, /* Amplifier is enabled by manager , */\
|
||||
{ 0xf0, "AREFS"}, /* References are enabled by manager , */\
|
||||
{ 0x109, "BATS"}, /* Battery voltage from ADC readout , */\
|
||||
{ 0x208, "TEMPS"}, /* Temperature readout from the temperature sensor ( C), */\
|
||||
{ 0x30f, "REV"}, /* Device revision information , */\
|
||||
{ 0x420, "RCV"}, /* Enable receiver mode , */\
|
||||
{ 0x431, "CHS12"}, /* Channel Selection TDM input for Coolflux , */\
|
||||
{ 0x450, "INPLVL"}, /* Input level selection attenuator ( , */\
|
||||
{ 0x461, "CHSA"}, /* Input selection for amplifier , */\
|
||||
{ 0x4c3, "AUDFS"}, /* Audio sample rate setting , */\
|
||||
{ 0x501, "BSSCR"}, /* Batteery protection attack time , */\
|
||||
{ 0x523, "BSST"}, /* Battery protection threshold level , */\
|
||||
{ 0x561, "BSSRL"}, /* Battery protection maximum reduction , */\
|
||||
{ 0x582, "BSSRR"}, /* Battery protection release time , */\
|
||||
{ 0x5b1, "BSSHY"}, /* Battery Protection Hysteresis , */\
|
||||
{ 0x5e0, "BSSR"}, /* Battery voltage value for read out (only) , */\
|
||||
{ 0x5f0, "BSSBY"}, /* Bypass clipper battery protection , */\
|
||||
{ 0x600, "DPSA"}, /* Enable dynamic powerstage activation (DPSA) , */\
|
||||
{ 0x613, "ATTEN"}, /* Gain attenuation setting , */\
|
||||
{ 0x650, "CFSM"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x670, "BSSS"}, /* Battery sense steepness , */\
|
||||
{ 0x687, "VOL"}, /* Coolflux volume control , */\
|
||||
{ 0x702, "DCVO2"}, /* Second Boost Voltage , */\
|
||||
{ 0x733, "DCMCC"}, /* Max boost coil current - step of 175 mA , */\
|
||||
{ 0x772, "DCVO1"}, /* First Boost Voltage , */\
|
||||
{ 0x7a0, "DCIE"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "DCSR"}, /* Soft Rampup/down mode for DCDC controller , */\
|
||||
{ 0x7c0, "DCPAVG"}, /* ctrl_peak2avg for analog part of DCDC , */\
|
||||
{ 0x7d0, "DCPWM"}, /* DCDC PWM only mode , */\
|
||||
{ 0x800, "TROS"}, /* Selection ambient temperature for speaker calibration , */\
|
||||
{ 0x818, "EXTTS"}, /* External temperature for speaker calibration (C) , */\
|
||||
{ 0x900, "PWDN"}, /* powerdown selection , */\
|
||||
{ 0x910, "I2CR"}, /* All I2C registers reset to default , */\
|
||||
{ 0x920, "CFE"}, /* Enable CoolFlux , */\
|
||||
{ 0x930, "AMPE"}, /* Enable Amplifier , */\
|
||||
{ 0x940, "DCA"}, /* Enable DCDC Boost converter , */\
|
||||
{ 0x950, "SBSL"}, /* Coolflux configured , */\
|
||||
{ 0x960, "AMPC"}, /* Selection if Coolflux enables amplifier , */\
|
||||
{ 0x970, "DCDIS"}, /* DCDC boost converter not connected , */\
|
||||
{ 0x980, "PSDR"}, /* IDDQ amplifier test selection , */\
|
||||
{ 0x9c1, "INTPAD"}, /* INT pad (interrupt bump output) configuration , */\
|
||||
{ 0x9e0, "IPLL"}, /* PLL input reference clock selection , */\
|
||||
{ 0xa04, "DCTRIP"}, /* Adaptive boost trip levels (effective only when boost_intel is set to 1), */\
|
||||
{ 0xa54, "DCHOLD"}, /* Hold time for DCDC booster (effective only when boost_intel is set to 1), */\
|
||||
{ 0xb07, "MTPK"}, /* KEY2 to access key2 protected registers (default for engineering), */\
|
||||
{ 0xc25, "CVFDLY"}, /* Fractional delay adjustment between current and voltage sense, */\
|
||||
{ 0xec0, "OPENMTP"}, /* Enable programming of the MTP memory , */\
|
||||
{ 0x1011, "TDMPRF"}, /* TDM usecase selection control , */\
|
||||
{ 0x1030, "TDMEN"}, /* TDM interface enable , */\
|
||||
{ 0x1040, "TDMCKINV"}, /* TDM clock inversion, receive on , */\
|
||||
{ 0x1053, "TDMFSLN"}, /* TDM FS length , */\
|
||||
{ 0x1090, "TDMFSPOL"}, /* TDM FS polarity (start frame) , */\
|
||||
{ 0x10a4, "TDMSAMSZ"}, /* TDM sample size for all TDM sinks and sources , */\
|
||||
{ 0x1103, "TDMSLOTS"}, /* TDM number of slots , */\
|
||||
{ 0x1144, "TDMSLLN"}, /* TDM slot length , */\
|
||||
{ 0x1194, "TDMBRMG"}, /* TDM bits remaining after the last slot , */\
|
||||
{ 0x11e0, "TDMDDEL"}, /* TDM data delay , */\
|
||||
{ 0x11f0, "TDMDADJ"}, /* TDM data adjustment , */\
|
||||
{ 0x1201, "TDMTXFRM"}, /* TDM TXDATA format , */\
|
||||
{ 0x1221, "TDMUUS0"}, /* TDM TXDATA format unused slot SD0 , */\
|
||||
{ 0x1241, "TDMUUS1"}, /* TDM TXDATA format unused slot SD1 , */\
|
||||
{ 0x1270, "TDMSI0EN"}, /* TDM sink0 enable , */\
|
||||
{ 0x1280, "TDMSI1EN"}, /* TDM sink1 enable , */\
|
||||
{ 0x1290, "TDMSI2EN"}, /* TDM sink2 enable , */\
|
||||
{ 0x12a0, "TDMSO0EN"}, /* TDM source0 enable , */\
|
||||
{ 0x12b0, "TDMSO1EN"}, /* TDM source1 enable , */\
|
||||
{ 0x12c0, "TDMSO2EN"}, /* TDM source2 enable , */\
|
||||
{ 0x12d0, "TDMSI0IO"}, /* TDM sink0 IO selection , */\
|
||||
{ 0x12e0, "TDMSI1IO"}, /* TDM sink1 IO selection , */\
|
||||
{ 0x12f0, "TDMSI2IO"}, /* TDM sink2 IO selection , */\
|
||||
{ 0x1300, "TDMSO0IO"}, /* TDM source0 IO selection , */\
|
||||
{ 0x1310, "TDMSO1IO"}, /* TDM source1 IO selection , */\
|
||||
{ 0x1320, "TDMSO2IO"}, /* TDM source2 IO selection , */\
|
||||
{ 0x1333, "TDMSI0SL"}, /* TDM sink0 slot position [GAIN IN] , */\
|
||||
{ 0x1373, "TDMSI1SL"}, /* TDM sink1 slot position [CH1 IN] , */\
|
||||
{ 0x13b3, "TDMSI2SL"}, /* TDM sink2 slot position [CH2 IN] , */\
|
||||
{ 0x1403, "TDMSO0SL"}, /* TDM source0 slot position [GAIN OUT] , */\
|
||||
{ 0x1443, "TDMSO1SL"}, /* TDM source1 slot position [Voltage Sense] , */\
|
||||
{ 0x1483, "TDMSO2SL"}, /* TDM source2 slot position [Current Sense] , */\
|
||||
{ 0x14c3, "NBCK"}, /* TDM NBCK bit clock ratio , */\
|
||||
{ 0x2000, "INTOVDDS"}, /* flag_por_int_out , */\
|
||||
{ 0x2010, "INTOPLLS"}, /* flag_pll_lock_int_out , */\
|
||||
{ 0x2020, "INTOOTDS"}, /* flag_otpok_int_out , */\
|
||||
{ 0x2030, "INTOOVDS"}, /* flag_ovpok_int_out , */\
|
||||
{ 0x2040, "INTOUVDS"}, /* flag_uvpok_int_out , */\
|
||||
{ 0x2050, "INTOOCDS"}, /* flag_ocp_alarm_int_out , */\
|
||||
{ 0x2060, "INTOCLKS"}, /* flag_clocks_stable_int_out , */\
|
||||
{ 0x2070, "INTOCLIPS"}, /* flag_clip_int_out , */\
|
||||
{ 0x2080, "INTOMTPB"}, /* mtp_busy_int_out , */\
|
||||
{ 0x2090, "INTONOCLK"}, /* flag_lost_clk_int_out , */\
|
||||
{ 0x20a0, "INTOSPKS"}, /* flag_cf_speakererror_int_out , */\
|
||||
{ 0x20b0, "INTOACS"}, /* flag_cold_started_int_out , */\
|
||||
{ 0x20c0, "INTOSWS"}, /* flag_engage_int_out , */\
|
||||
{ 0x20d0, "INTOWDS"}, /* flag_watchdog_reset_int_out , */\
|
||||
{ 0x20e0, "INTOAMPS"}, /* flag_enbl_amp_int_out , */\
|
||||
{ 0x20f0, "INTOAREFS"}, /* flag_enbl_ref_int_out , */\
|
||||
{ 0x2200, "INTOERR"}, /* flag_cfma_err_int_out , */\
|
||||
{ 0x2210, "INTOACK"}, /* flag_cfma_ack_int_out , */\
|
||||
{ 0x2300, "INTIVDDS"}, /* flag_por_int_in , */\
|
||||
{ 0x2310, "INTIPLLS"}, /* flag_pll_lock_int_in , */\
|
||||
{ 0x2320, "INTIOTDS"}, /* flag_otpok_int_in , */\
|
||||
{ 0x2330, "INTIOVDS"}, /* flag_ovpok_int_in , */\
|
||||
{ 0x2340, "INTIUVDS"}, /* flag_uvpok_int_in , */\
|
||||
{ 0x2350, "INTIOCDS"}, /* flag_ocp_alarm_int_in , */\
|
||||
{ 0x2360, "INTICLKS"}, /* flag_clocks_stable_int_in , */\
|
||||
{ 0x2370, "INTICLIPS"}, /* flag_clip_int_in , */\
|
||||
{ 0x2380, "INTIMTPB"}, /* mtp_busy_int_in , */\
|
||||
{ 0x2390, "INTINOCLK"}, /* flag_lost_clk_int_in , */\
|
||||
{ 0x23a0, "INTISPKS"}, /* flag_cf_speakererror_int_in , */\
|
||||
{ 0x23b0, "INTIACS"}, /* flag_cold_started_int_in , */\
|
||||
{ 0x23c0, "INTISWS"}, /* flag_engage_int_in , */\
|
||||
{ 0x23d0, "INTIWDS"}, /* flag_watchdog_reset_int_in , */\
|
||||
{ 0x23e0, "INTIAMPS"}, /* flag_enbl_amp_int_in , */\
|
||||
{ 0x23f0, "INTIAREFS"}, /* flag_enbl_ref_int_in , */\
|
||||
{ 0x2500, "INTIERR"}, /* flag_cfma_err_int_in , */\
|
||||
{ 0x2510, "INTIACK"}, /* flag_cfma_ack_int_in , */\
|
||||
{ 0x2600, "INTENVDDS"}, /* flag_por_int_enable , */\
|
||||
{ 0x2610, "INTENPLLS"}, /* flag_pll_lock_int_enable , */\
|
||||
{ 0x2620, "INTENOTDS"}, /* flag_otpok_int_enable , */\
|
||||
{ 0x2630, "INTENOVDS"}, /* flag_ovpok_int_enable , */\
|
||||
{ 0x2640, "INTENUVDS"}, /* flag_uvpok_int_enable , */\
|
||||
{ 0x2650, "INTENOCDS"}, /* flag_ocp_alarm_int_enable , */\
|
||||
{ 0x2660, "INTENCLKS"}, /* flag_clocks_stable_int_enable , */\
|
||||
{ 0x2670, "INTENCLIPS"}, /* flag_clip_int_enable , */\
|
||||
{ 0x2680, "INTENMTPB"}, /* mtp_busy_int_enable , */\
|
||||
{ 0x2690, "INTENNOCLK"}, /* flag_lost_clk_int_enable , */\
|
||||
{ 0x26a0, "INTENSPKS"}, /* flag_cf_speakererror_int_enable , */\
|
||||
{ 0x26b0, "INTENACS"}, /* flag_cold_started_int_enable , */\
|
||||
{ 0x26c0, "INTENSWS"}, /* flag_engage_int_enable , */\
|
||||
{ 0x26d0, "INTENWDS"}, /* flag_watchdog_reset_int_enable , */\
|
||||
{ 0x26e0, "INTENAMPS"}, /* flag_enbl_amp_int_enable , */\
|
||||
{ 0x26f0, "INTENAREFS"}, /* flag_enbl_ref_int_enable , */\
|
||||
{ 0x2800, "INTENERR"}, /* flag_cfma_err_int_enable , */\
|
||||
{ 0x2810, "INTENACK"}, /* flag_cfma_ack_int_enable , */\
|
||||
{ 0x2900, "INTPOLVDDS"}, /* flag_por_int_pol , */\
|
||||
{ 0x2910, "INTPOLPLLS"}, /* flag_pll_lock_int_pol , */\
|
||||
{ 0x2920, "INTPOLOTDS"}, /* flag_otpok_int_pol , */\
|
||||
{ 0x2930, "INTPOLOVDS"}, /* flag_ovpok_int_pol , */\
|
||||
{ 0x2940, "INTPOLUVDS"}, /* flag_uvpok_int_pol , */\
|
||||
{ 0x2950, "INTPOLOCDS"}, /* flag_ocp_alarm_int_pol , */\
|
||||
{ 0x2960, "INTPOLCLKS"}, /* flag_clocks_stable_int_pol , */\
|
||||
{ 0x2970, "INTPOLCLIPS"}, /* flag_clip_int_pol , */\
|
||||
{ 0x2980, "INTPOLMTPB"}, /* mtp_busy_int_pol , */\
|
||||
{ 0x2990, "INTPOLNOCLK"}, /* flag_lost_clk_int_pol , */\
|
||||
{ 0x29a0, "INTPOLSPKS"}, /* flag_cf_speakererror_int_pol , */\
|
||||
{ 0x29b0, "INTPOLACS"}, /* flag_cold_started_int_pol , */\
|
||||
{ 0x29c0, "INTPOLSWS"}, /* flag_engage_int_pol , */\
|
||||
{ 0x29d0, "INTPOLWDS"}, /* flag_watchdog_reset_int_pol , */\
|
||||
{ 0x29e0, "INTPOLAMPS"}, /* flag_enbl_amp_int_pol , */\
|
||||
{ 0x29f0, "INTPOLAREFS"}, /* flag_enbl_ref_int_pol , */\
|
||||
{ 0x2b00, "INTPOLERR"}, /* flag_cfma_err_int_pol , */\
|
||||
{ 0x2b10, "INTPOLACK"}, /* flag_cfma_ack_int_pol , */\
|
||||
{ 0x4900, "CLIP"}, /* Bypass clip control , */\
|
||||
{ 0x62b0, "CIMTP"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0x7000, "RST"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "DMEM"}, /* Target memory for access , */\
|
||||
{ 0x7030, "AIF"}, /* Auto increment flag for memory-address , */\
|
||||
{ 0x7040, "CFINT"}, /* CF Interrupt - auto clear , */\
|
||||
{ 0x7087, "REQ"}, /* CF request for accessing the 8 channels , */\
|
||||
{ 0x710f, "MADD"}, /* Memory address , */\
|
||||
{ 0x720f, "MEMA"}, /* Activate memory access , */\
|
||||
{ 0x7307, "ERR"}, /* CF error flags , */\
|
||||
{ 0x7387, "ACK"}, /* CF acknowledgement of the requests channels , */\
|
||||
{ 0x8000, "MTPOTC"}, /* Calibration schedule selection , */\
|
||||
{ 0x8010, "MTPEX"}, /* Calibration of RON status bit , */\
|
||||
{ 0x8045, "SWPROFIL" },\
|
||||
{ 0x80a5, "SWVSTEP" },\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
#define TFA9896_BITNAMETABLE static tfaBfName_t Tfa9896BitNames[]= {\
|
||||
{ 0x0, "flag_por"}, /* Power-on-reset flag (auto clear by reading) , */\
|
||||
{ 0x10, "flag_pll_lock"}, /* PLL lock to programmed frequency , */\
|
||||
{ 0x20, "flag_otpok"}, /* Over Temperature Protection alarm , */\
|
||||
{ 0x30, "flag_ovpok"}, /* Over Voltage Protection alarm , */\
|
||||
{ 0x40, "flag_uvpok"}, /* Under Voltage Protection alarm , */\
|
||||
{ 0x50, "flag_ocp_alarm"}, /* Over Current Protection alarm , */\
|
||||
{ 0x60, "flag_clocks_stable"}, /* Clocks stable flag , */\
|
||||
{ 0x70, "flag_clip"}, /* Amplifier clipping , */\
|
||||
{ 0x80, "mtp_busy"}, /* MTP busy copying data to/from I2C registers , */\
|
||||
{ 0x90, "flag_lost_clk"}, /* lost clock detection (reference input clock) , */\
|
||||
{ 0xa0, "flag_cf_speakererror"}, /* Speaker error , */\
|
||||
{ 0xb0, "flag_cold_started"}, /* Cold Start required , */\
|
||||
{ 0xc0, "flag_engage"}, /* Amplifier engage (Amp Switching) , */\
|
||||
{ 0xd0, "flag_watchdog_reset"}, /* watchdog reset (activates reset) , */\
|
||||
{ 0xe0, "flag_enbl_amp"}, /* Amplifier is enabled by manager , */\
|
||||
{ 0xf0, "flag_enbl_ref"}, /* References are enabled by manager , */\
|
||||
{ 0x109, "bat_adc"}, /* Battery voltage from ADC readout , */\
|
||||
{ 0x208, "temp_adc"}, /* Temperature readout from the temperature sensor ( C), */\
|
||||
{ 0x30f, "device_rev"}, /* Device revision information , */\
|
||||
{ 0x420, "ctrl_rcv"}, /* Enable receiver mode , */\
|
||||
{ 0x431, "chan_sel"}, /* Channel Selection TDM input for Coolflux , */\
|
||||
{ 0x450, "input_level"}, /* Input level selection attenuator ( , */\
|
||||
{ 0x461, "vamp_sel"}, /* Input selection for amplifier , */\
|
||||
{ 0x4c3, "audio_fs"}, /* Audio sample rate setting , */\
|
||||
{ 0x501, "vbat_prot_attacktime"}, /* Batteery protection attack time , */\
|
||||
{ 0x523, "vbat_prot_thlevel"}, /* Battery protection threshold level , */\
|
||||
{ 0x561, "vbat_prot_max_reduct"}, /* Battery protection maximum reduction , */\
|
||||
{ 0x582, "vbat_prot_release_t"}, /* Battery protection release time , */\
|
||||
{ 0x5b1, "vbat_prot_hysterese"}, /* Battery Protection Hysteresis , */\
|
||||
{ 0x5d0, "reset_min_vbat"}, /* Battery supply safeguard clipper reset ( if CF_DSP is bypassed), */\
|
||||
{ 0x5e0, "sel_vbat"}, /* Battery voltage value for read out (only) , */\
|
||||
{ 0x5f0, "bypass_clipper"}, /* Bypass clipper battery protection , */\
|
||||
{ 0x600, "dpsa"}, /* Enable dynamic powerstage activation (DPSA) , */\
|
||||
{ 0x613, "ctrl_att"}, /* Gain attenuation setting , */\
|
||||
{ 0x650, "cf_mute"}, /* Soft mute in CoolFlux , */\
|
||||
{ 0x670, "batsense_steepness"}, /* Battery sense steepness , */\
|
||||
{ 0x687, "vol"}, /* Coolflux volume control , */\
|
||||
{ 0x702, "scnd_boost_voltage"}, /* Second Boost Voltage , */\
|
||||
{ 0x733, "boost_cur"}, /* Max boost coil current - step of 175 mA , */\
|
||||
{ 0x772, "frst_boost_voltage"}, /* First Boost Voltage , */\
|
||||
{ 0x7a0, "boost_intel"}, /* Adaptive boost mode , */\
|
||||
{ 0x7b0, "boost_speed"}, /* Soft Rampup/down mode for DCDC controller , */\
|
||||
{ 0x7c0, "boost_peak2avg"}, /* ctrl_peak2avg for analog part of DCDC , */\
|
||||
{ 0x7d0, "dcdc_pwmonly"}, /* DCDC PWM only mode , */\
|
||||
{ 0x7e0, "ignore_flag_voutcomp86"}, /* Ignore flag_voutcomp86 (flag from analog) , */\
|
||||
{ 0x800, "ext_temp_sel"}, /* Selection ambient temperature for speaker calibration , */\
|
||||
{ 0x818, "ext_temp"}, /* External temperature for speaker calibration (C) , */\
|
||||
{ 0x900, "powerdown"}, /* powerdown selection , */\
|
||||
{ 0x910, "reset"}, /* All I2C registers reset to default , */\
|
||||
{ 0x920, "enbl_coolflux"}, /* Enable CoolFlux , */\
|
||||
{ 0x930, "enbl_amplifier"}, /* Enable Amplifier , */\
|
||||
{ 0x940, "enbl_boost"}, /* Enable DCDC Boost converter , */\
|
||||
{ 0x950, "coolflux_configured"}, /* Coolflux configured , */\
|
||||
{ 0x960, "sel_enbl_amplifier"}, /* Selection if Coolflux enables amplifier , */\
|
||||
{ 0x970, "dcdcoff_mode"}, /* DCDC boost converter not connected , */\
|
||||
{ 0x980, "iddqtest"}, /* IDDQ amplifier test selection , */\
|
||||
{ 0x9c1, "int_pad_io"}, /* INT pad (interrupt bump output) configuration , */\
|
||||
{ 0x9e0, "sel_fs_bck"}, /* PLL input reference clock selection , */\
|
||||
{ 0x9f0, "sel_scl_cf_clock"}, /* Coolflux sub-system clock selection , */\
|
||||
{ 0xa04, "boost_trip_lvl"}, /* Adaptive boost trip levels (effective only when boost_intel is set to 1), */\
|
||||
{ 0xa54, "boost_hold_time"}, /* Hold time for DCDC booster (effective only when boost_intel is set to 1), */\
|
||||
{ 0xaa1, "bst_slpcmplvl"}, /* Slope compensation current, represents LxF (inductance x frequency) value , */\
|
||||
{ 0xb07, "mtpkey2"}, /* KEY2 to access key2 protected registers (default for engineering), */\
|
||||
{ 0xc00, "enbl_volt_sense"}, /* Voltage sense enabling control bit , */\
|
||||
{ 0xc10, "vsense_pwm_sel"}, /* Voltage sense source selection , */\
|
||||
{ 0xc25, "vi_frac_delay"}, /* Fractional delay adjustment between current and voltage sense, */\
|
||||
{ 0xc80, "sel_voltsense_out"}, /* TDM output data selection for AEC , */\
|
||||
{ 0xc90, "vsense_bypass_avg"}, /* Voltage sense average block bypass , */\
|
||||
{ 0xd05, "cf_frac_delay"}, /* Fractional delay adjustment between current and voltage sense by firmware, */\
|
||||
{ 0xe00, "bypass_dcdc_curr_prot"}, /* Control to switch off dcdc current reduction with bat protection, */\
|
||||
{ 0xe10, "bypass_ocp"}, /* Bypass OCP (digital IP block) , */\
|
||||
{ 0xe20, "ocptest"}, /* ocptest (analog IP block) enable , */\
|
||||
{ 0xe80, "disable_clock_sh_prot"}, /* Disable clock_sh protection , */\
|
||||
{ 0xe92, "reserve_reg_15_09"}, /* Spare control bits for future usage , */\
|
||||
{ 0xec0, "unprotect_mtp"}, /* Enable programming of the MTP memory , */\
|
||||
{ 0xed2, "reserve_reg_15_13"}, /* Spare control bits for future usage , */\
|
||||
{ 0xf00, "dcdc_pfm20khz_limit"}, /* DCDC in PFM mode forcing each 50us a pwm pulse , */\
|
||||
{ 0xf11, "dcdc_ctrl_maxzercnt"}, /* DCDC number of zero current flags required to go to pfm mode, */\
|
||||
{ 0xf36, "dcdc_vbat_delta_detect"}, /* DCDC threshold required on a delta Vbat (in PFM mode) switching to PWM mode, */\
|
||||
{ 0xfa0, "dcdc_ignore_vbat"}, /* Ignore an increase on Vbat , */\
|
||||
{ 0x1011, "tdm_usecase"}, /* TDM usecase selection control , */\
|
||||
{ 0x1030, "tdm_enable"}, /* TDM interface enable , */\
|
||||
{ 0x1040, "tdm_clk_inversion"}, /* TDM clock inversion, receive on , */\
|
||||
{ 0x1053, "tdm_fs_ws_length"}, /* TDM FS length , */\
|
||||
{ 0x1090, "tdm_fs_ws_polarity"}, /* TDM FS polarity (start frame) , */\
|
||||
{ 0x10a4, "tdm_sample_size"}, /* TDM sample size for all TDM sinks and sources , */\
|
||||
{ 0x1103, "tdm_nb_of_slots"}, /* TDM number of slots , */\
|
||||
{ 0x1144, "tdm_slot_length"}, /* TDM slot length , */\
|
||||
{ 0x1194, "tdm_bits_remaining"}, /* TDM bits remaining after the last slot , */\
|
||||
{ 0x11e0, "tdm_data_delay"}, /* TDM data delay , */\
|
||||
{ 0x11f0, "tdm_data_adjustment"}, /* TDM data adjustment , */\
|
||||
{ 0x1201, "tdm_txdata_format"}, /* TDM TXDATA format , */\
|
||||
{ 0x1221, "tdm_txdata_format_unused_slot_sd0"}, /* TDM TXDATA format unused slot SD0 , */\
|
||||
{ 0x1241, "tdm_txdata_format_unused_slot_sd1"}, /* TDM TXDATA format unused slot SD1 , */\
|
||||
{ 0x1270, "tdm_sink0_enable"}, /* TDM sink0 enable , */\
|
||||
{ 0x1280, "tdm_sink1_enable"}, /* TDM sink1 enable , */\
|
||||
{ 0x1290, "tdm_sink2_enable"}, /* TDM sink2 enable , */\
|
||||
{ 0x12a0, "tdm_source0_enable"}, /* TDM source0 enable , */\
|
||||
{ 0x12b0, "tdm_source1_enable"}, /* TDM source1 enable , */\
|
||||
{ 0x12c0, "tdm_source2_enable"}, /* TDM source2 enable , */\
|
||||
{ 0x12d0, "tdm_sink0_io"}, /* TDM sink0 IO selection , */\
|
||||
{ 0x12e0, "tdm_sink1_io"}, /* TDM sink1 IO selection , */\
|
||||
{ 0x12f0, "tdm_sink2_io"}, /* TDM sink2 IO selection , */\
|
||||
{ 0x1300, "tdm_source0_io"}, /* TDM source0 IO selection , */\
|
||||
{ 0x1310, "tdm_source1_io"}, /* TDM source1 IO selection , */\
|
||||
{ 0x1320, "tdm_source2_io"}, /* TDM source2 IO selection , */\
|
||||
{ 0x1333, "tdm_sink0_slot"}, /* TDM sink0 slot position [GAIN IN] , */\
|
||||
{ 0x1373, "tdm_sink1_slot"}, /* TDM sink1 slot position [CH1 IN] , */\
|
||||
{ 0x13b3, "tdm_sink2_slot"}, /* TDM sink2 slot position [CH2 IN] , */\
|
||||
{ 0x1403, "tdm_source0_slot"}, /* TDM source0 slot position [GAIN OUT] , */\
|
||||
{ 0x1443, "tdm_source1_slot"}, /* TDM source1 slot position [Voltage Sense] , */\
|
||||
{ 0x1483, "tdm_source2_slot"}, /* TDM source2 slot position [Current Sense] , */\
|
||||
{ 0x14c3, "tdm_nbck"}, /* TDM NBCK bit clock ratio , */\
|
||||
{ 0x1500, "flag_tdm_lut_error"}, /* TDM LUT error flag , */\
|
||||
{ 0x1512, "flag_tdm_status"}, /* TDM interface status bits , */\
|
||||
{ 0x1540, "flag_tdm_error"}, /* TDM interface error indicator , */\
|
||||
{ 0x1551, "status_bst_mode"}, /* DCDC mode status bits , */\
|
||||
{ 0x2000, "flag_por_int_out"}, /* flag_por_int_out , */\
|
||||
{ 0x2010, "flag_pll_lock_int_out"}, /* flag_pll_lock_int_out , */\
|
||||
{ 0x2020, "flag_otpok_int_out"}, /* flag_otpok_int_out , */\
|
||||
{ 0x2030, "flag_ovpok_int_out"}, /* flag_ovpok_int_out , */\
|
||||
{ 0x2040, "flag_uvpok_int_out"}, /* flag_uvpok_int_out , */\
|
||||
{ 0x2050, "flag_ocp_alarm_int_out"}, /* flag_ocp_alarm_int_out , */\
|
||||
{ 0x2060, "flag_clocks_stable_int_out"}, /* flag_clocks_stable_int_out , */\
|
||||
{ 0x2070, "flag_clip_int_out"}, /* flag_clip_int_out , */\
|
||||
{ 0x2080, "mtp_busy_int_out"}, /* mtp_busy_int_out , */\
|
||||
{ 0x2090, "flag_lost_clk_int_out"}, /* flag_lost_clk_int_out , */\
|
||||
{ 0x20a0, "flag_cf_speakererror_int_out"}, /* flag_cf_speakererror_int_out , */\
|
||||
{ 0x20b0, "flag_cold_started_int_out"}, /* flag_cold_started_int_out , */\
|
||||
{ 0x20c0, "flag_engage_int_out"}, /* flag_engage_int_out , */\
|
||||
{ 0x20d0, "flag_watchdog_reset_int_out"}, /* flag_watchdog_reset_int_out , */\
|
||||
{ 0x20e0, "flag_enbl_amp_int_out"}, /* flag_enbl_amp_int_out , */\
|
||||
{ 0x20f0, "flag_enbl_ref_int_out"}, /* flag_enbl_ref_int_out , */\
|
||||
{ 0x2100, "flag_voutcomp_int_out"}, /* flag_voutcomp_int_out , */\
|
||||
{ 0x2110, "flag_voutcomp93_int_out"}, /* flag_voutcomp93_int_out , */\
|
||||
{ 0x2120, "flag_voutcomp86_int_out"}, /* flag_voutcomp86_int_out , */\
|
||||
{ 0x2130, "flag_hiz_int_out"}, /* flag_hiz_int_out , */\
|
||||
{ 0x2140, "flag_ocpokbst_int_out"}, /* flag_ocpokbst_int_out , */\
|
||||
{ 0x2150, "flag_peakcur_int_out"}, /* flag_peakcur_int_out , */\
|
||||
{ 0x2160, "flag_ocpokap_int_out"}, /* flag_ocpokap_int_out , */\
|
||||
{ 0x2170, "flag_ocpokan_int_out"}, /* flag_ocpokan_int_out , */\
|
||||
{ 0x2180, "flag_ocpokbp_int_out"}, /* flag_ocpokbp_int_out , */\
|
||||
{ 0x2190, "flag_ocpokbn_int_out"}, /* flag_ocpokbn_int_out , */\
|
||||
{ 0x21a0, "flag_adc10_ready_int_out"}, /* flag_adc10_ready_int_out , */\
|
||||
{ 0x21b0, "flag_clipa_high_int_out"}, /* flag_clipa_high_int_out , */\
|
||||
{ 0x21c0, "flag_clipa_low_int_out"}, /* flag_clipa_low_int_out , */\
|
||||
{ 0x21d0, "flag_clipb_high_int_out"}, /* flag_clipb_high_int_out , */\
|
||||
{ 0x21e0, "flag_clipb_low_int_out"}, /* flag_clipb_low_int_out , */\
|
||||
{ 0x21f0, "flag_tdm_error_int_out"}, /* flag_tdm_error_int_out , */\
|
||||
{ 0x2200, "flag_cfma_err_int_out"}, /* flag_cfma_err_int_out , */\
|
||||
{ 0x2210, "flag_cfma_ack_int_out"}, /* flag_cfma_ack_int_out , */\
|
||||
{ 0x2300, "flag_por_int_in"}, /* flag_por_int_in , */\
|
||||
{ 0x2310, "flag_pll_lock_int_in"}, /* flag_pll_lock_int_in , */\
|
||||
{ 0x2320, "flag_otpok_int_in"}, /* flag_otpok_int_in , */\
|
||||
{ 0x2330, "flag_ovpok_int_in"}, /* flag_ovpok_int_in , */\
|
||||
{ 0x2340, "flag_uvpok_int_in"}, /* flag_uvpok_int_in , */\
|
||||
{ 0x2350, "flag_ocp_alarm_int_in"}, /* flag_ocp_alarm_int_in , */\
|
||||
{ 0x2360, "flag_clocks_stable_int_in"}, /* flag_clocks_stable_int_in , */\
|
||||
{ 0x2370, "flag_clip_int_in"}, /* flag_clip_int_in , */\
|
||||
{ 0x2380, "mtp_busy_int_in"}, /* mtp_busy_int_in , */\
|
||||
{ 0x2390, "flag_lost_clk_int_in"}, /* flag_lost_clk_int_in , */\
|
||||
{ 0x23a0, "flag_cf_speakererror_int_in"}, /* flag_cf_speakererror_int_in , */\
|
||||
{ 0x23b0, "flag_cold_started_int_in"}, /* flag_cold_started_int_in , */\
|
||||
{ 0x23c0, "flag_engage_int_in"}, /* flag_engage_int_in , */\
|
||||
{ 0x23d0, "flag_watchdog_reset_int_in"}, /* flag_watchdog_reset_int_in , */\
|
||||
{ 0x23e0, "flag_enbl_amp_int_in"}, /* flag_enbl_amp_int_in , */\
|
||||
{ 0x23f0, "flag_enbl_ref_int_in"}, /* flag_enbl_ref_int_in , */\
|
||||
{ 0x2400, "flag_voutcomp_int_in"}, /* flag_voutcomp_int_in , */\
|
||||
{ 0x2410, "flag_voutcomp93_int_in"}, /* flag_voutcomp93_int_in , */\
|
||||
{ 0x2420, "flag_voutcomp86_int_in"}, /* flag_voutcomp86_int_in , */\
|
||||
{ 0x2430, "flag_hiz_int_in"}, /* flag_hiz_int_in , */\
|
||||
{ 0x2440, "flag_ocpokbst_int_in"}, /* flag_ocpokbst_int_in , */\
|
||||
{ 0x2450, "flag_peakcur_int_in"}, /* flag_peakcur_int_in , */\
|
||||
{ 0x2460, "flag_ocpokap_int_in"}, /* flag_ocpokap_int_in , */\
|
||||
{ 0x2470, "flag_ocpokan_int_in"}, /* flag_ocpokan_int_in , */\
|
||||
{ 0x2480, "flag_ocpokbp_int_in"}, /* flag_ocpokbp_int_in , */\
|
||||
{ 0x2490, "flag_ocpokbn_int_in"}, /* flag_ocpokbn_int_in , */\
|
||||
{ 0x24a0, "flag_adc10_ready_int_in"}, /* flag_adc10_ready_int_in , */\
|
||||
{ 0x24b0, "flag_clipa_high_int_in"}, /* flag_clipa_high_int_in , */\
|
||||
{ 0x24c0, "flag_clipa_low_int_in"}, /* flag_clipa_low_int_in , */\
|
||||
{ 0x24d0, "flag_clipb_high_int_in"}, /* flag_clipb_high_int_in , */\
|
||||
{ 0x24e0, "flag_clipb_low_int_in"}, /* flag_clipb_low_int_in , */\
|
||||
{ 0x24f0, "flag_tdm_error_int_in"}, /* flag_tdm_error_int_in , */\
|
||||
{ 0x2500, "flag_cfma_err_int_in"}, /* flag_cfma_err_int_in , */\
|
||||
{ 0x2510, "flag_cfma_ack_int_in"}, /* flag_cfma_ack_int_in , */\
|
||||
{ 0x2600, "flag_por_int_enable"}, /* flag_por_int_enable , */\
|
||||
{ 0x2610, "flag_pll_lock_int_enable"}, /* flag_pll_lock_int_enable , */\
|
||||
{ 0x2620, "flag_otpok_int_enable"}, /* flag_otpok_int_enable , */\
|
||||
{ 0x2630, "flag_ovpok_int_enable"}, /* flag_ovpok_int_enable , */\
|
||||
{ 0x2640, "flag_uvpok_int_enable"}, /* flag_uvpok_int_enable , */\
|
||||
{ 0x2650, "flag_ocp_alarm_int_enable"}, /* flag_ocp_alarm_int_enable , */\
|
||||
{ 0x2660, "flag_clocks_stable_int_enable"}, /* flag_clocks_stable_int_enable , */\
|
||||
{ 0x2670, "flag_clip_int_enable"}, /* flag_clip_int_enable , */\
|
||||
{ 0x2680, "mtp_busy_int_enable"}, /* mtp_busy_int_enable , */\
|
||||
{ 0x2690, "flag_lost_clk_int_enable"}, /* flag_lost_clk_int_enable , */\
|
||||
{ 0x26a0, "flag_cf_speakererror_int_enable"}, /* flag_cf_speakererror_int_enable , */\
|
||||
{ 0x26b0, "flag_cold_started_int_enable"}, /* flag_cold_started_int_enable , */\
|
||||
{ 0x26c0, "flag_engage_int_enable"}, /* flag_engage_int_enable , */\
|
||||
{ 0x26d0, "flag_watchdog_reset_int_enable"}, /* flag_watchdog_reset_int_enable , */\
|
||||
{ 0x26e0, "flag_enbl_amp_int_enable"}, /* flag_enbl_amp_int_enable , */\
|
||||
{ 0x26f0, "flag_enbl_ref_int_enable"}, /* flag_enbl_ref_int_enable , */\
|
||||
{ 0x2700, "flag_voutcomp_int_enable"}, /* flag_voutcomp_int_enable , */\
|
||||
{ 0x2710, "flag_voutcomp93_int_enable"}, /* flag_voutcomp93_int_enable , */\
|
||||
{ 0x2720, "flag_voutcomp86_int_enable"}, /* flag_voutcomp86_int_enable , */\
|
||||
{ 0x2730, "flag_hiz_int_enable"}, /* flag_hiz_int_enable , */\
|
||||
{ 0x2740, "flag_ocpokbst_int_enable"}, /* flag_ocpokbst_int_enable , */\
|
||||
{ 0x2750, "flag_peakcur_int_enable"}, /* flag_peakcur_int_enable , */\
|
||||
{ 0x2760, "flag_ocpokap_int_enable"}, /* flag_ocpokap_int_enable , */\
|
||||
{ 0x2770, "flag_ocpokan_int_enable"}, /* flag_ocpokan_int_enable , */\
|
||||
{ 0x2780, "flag_ocpokbp_int_enable"}, /* flag_ocpokbp_int_enable , */\
|
||||
{ 0x2790, "flag_ocpokbn_int_enable"}, /* flag_ocpokbn_int_enable , */\
|
||||
{ 0x27a0, "flag_adc10_ready_int_enable"}, /* flag_adc10_ready_int_enable , */\
|
||||
{ 0x27b0, "flag_clipa_high_int_enable"}, /* flag_clipa_high_int_enable , */\
|
||||
{ 0x27c0, "flag_clipa_low_int_enable"}, /* flag_clipa_low_int_enable , */\
|
||||
{ 0x27d0, "flag_clipb_high_int_enable"}, /* flag_clipb_high_int_enable , */\
|
||||
{ 0x27e0, "flag_clipb_low_int_enable"}, /* flag_clipb_low_int_enable , */\
|
||||
{ 0x27f0, "flag_tdm_error_int_enable"}, /* flag_tdm_error_int_enable , */\
|
||||
{ 0x2800, "flag_cfma_err_int_enable"}, /* flag_cfma_err_int_enable , */\
|
||||
{ 0x2810, "flag_cfma_ack_int_enable"}, /* flag_cfma_ack_int_enable , */\
|
||||
{ 0x2900, "flag_por_int_pol"}, /* flag_por_int_pol , */\
|
||||
{ 0x2910, "flag_pll_lock_int_pol"}, /* flag_pll_lock_int_pol , */\
|
||||
{ 0x2920, "flag_otpok_int_pol"}, /* flag_otpok_int_pol , */\
|
||||
{ 0x2930, "flag_ovpok_int_pol"}, /* flag_ovpok_int_pol , */\
|
||||
{ 0x2940, "flag_uvpok_int_pol"}, /* flag_uvpok_int_pol , */\
|
||||
{ 0x2950, "flag_ocp_alarm_int_pol"}, /* flag_ocp_alarm_int_pol , */\
|
||||
{ 0x2960, "flag_clocks_stable_int_pol"}, /* flag_clocks_stable_int_pol , */\
|
||||
{ 0x2970, "flag_clip_int_pol"}, /* flag_clip_int_pol , */\
|
||||
{ 0x2980, "mtp_busy_int_pol"}, /* mtp_busy_int_pol , */\
|
||||
{ 0x2990, "flag_lost_clk_int_pol"}, /* flag_lost_clk_int_pol , */\
|
||||
{ 0x29a0, "flag_cf_speakererror_int_pol"}, /* flag_cf_speakererror_int_pol , */\
|
||||
{ 0x29b0, "flag_cold_started_int_pol"}, /* flag_cold_started_int_pol , */\
|
||||
{ 0x29c0, "flag_engage_int_pol"}, /* flag_engage_int_pol , */\
|
||||
{ 0x29d0, "flag_watchdog_reset_int_pol"}, /* flag_watchdog_reset_int_pol , */\
|
||||
{ 0x29e0, "flag_enbl_amp_int_pol"}, /* flag_enbl_amp_int_pol , */\
|
||||
{ 0x29f0, "flag_enbl_ref_int_pol"}, /* flag_enbl_ref_int_pol , */\
|
||||
{ 0x2a00, "flag_voutcomp_int_pol"}, /* flag_voutcomp_int_pol , */\
|
||||
{ 0x2a10, "flag_voutcomp93_int_pol"}, /* flag_voutcomp93_int_pol , */\
|
||||
{ 0x2a20, "flag_voutcomp86_int_pol"}, /* flag_voutcomp86_int_pol , */\
|
||||
{ 0x2a30, "flag_hiz_int_pol"}, /* flag_hiz_int_pol , */\
|
||||
{ 0x2a40, "flag_ocpokbst_int_pol"}, /* flag_ocpokbst_int_pol , */\
|
||||
{ 0x2a50, "flag_peakcur_int_pol"}, /* flag_peakcur_int_pol , */\
|
||||
{ 0x2a60, "flag_ocpokap_int_pol"}, /* flag_ocpokap_int_pol , */\
|
||||
{ 0x2a70, "flag_ocpokan_int_pol"}, /* flag_ocpokan_int_pol , */\
|
||||
{ 0x2a80, "flag_ocpokbp_int_pol"}, /* flag_ocpokbp_int_pol , */\
|
||||
{ 0x2a90, "flag_ocpokbn_int_pol"}, /* flag_ocpokbn_int_pol , */\
|
||||
{ 0x2aa0, "flag_adc10_ready_int_pol"}, /* flag_adc10_ready_int_pol , */\
|
||||
{ 0x2ab0, "flag_clipa_high_int_pol"}, /* flag_clipa_high_int_pol , */\
|
||||
{ 0x2ac0, "flag_clipa_low_int_pol"}, /* flag_clipa_low_int_pol , */\
|
||||
{ 0x2ad0, "flag_clipb_high_int_pol"}, /* flag_clipb_high_int_pol , */\
|
||||
{ 0x2ae0, "flag_clipb_low_int_pol"}, /* flag_clipb_low_int_pol , */\
|
||||
{ 0x2af0, "flag_tdm_error_int_pol"}, /* flag_tdm_error_int_pol , */\
|
||||
{ 0x2b00, "flag_cfma_err_int_pol"}, /* flag_cfma_err_int_pol , */\
|
||||
{ 0x2b10, "flag_cfma_ack_int_pol"}, /* flag_cfma_ack_int_pol , */\
|
||||
{ 0x3000, "flag_voutcomp"}, /* Status flag_voutcomp, indication Vset is larger than Vbat, */\
|
||||
{ 0x3010, "flag_voutcomp93"}, /* Status flag_voutcomp93, indication Vset is larger than 1.07 x Vbat, */\
|
||||
{ 0x3020, "flag_voutcomp86"}, /* Status flag voutcomp86, indication Vset is larger than 1.14 x Vbat, */\
|
||||
{ 0x3030, "flag_hiz"}, /* Status flag_hiz, indication Vbst is larger than Vbat, */\
|
||||
{ 0x3040, "flag_ocpokbst"}, /* Status flag_ocpokbst, indication no over current in boost converter PMOS switch, */\
|
||||
{ 0x3050, "flag_peakcur"}, /* Status flag_peakcur, indication current is max in dcdc converter, */\
|
||||
{ 0x3060, "flag_ocpokap"}, /* Status flag_ocpokap, indication no over current in amplifier A PMOS output stage, */\
|
||||
{ 0x3070, "flag_ocpokan"}, /* Status flag_ocpokan, indication no over current in amplifier A NMOS output stage, */\
|
||||
{ 0x3080, "flag_ocpokbp"}, /* Status flag_ocpokbp, indication no over current in amplifier B PMOS output stage, */\
|
||||
{ 0x3090, "flag_ocpokbn"}, /* Status flag_ocpokbn, indication no over current in amplifier B NMOS output stage, */\
|
||||
{ 0x30a0, "flag_adc10_ready"}, /* Status flag_adc10_ready, indication adc10 is ready, */\
|
||||
{ 0x30b0, "flag_clipa_high"}, /* Status flag_clipa_high, indication pmos amplifier A is clipping, */\
|
||||
{ 0x30c0, "flag_clipa_low"}, /* Status flag_clipa_low, indication nmos amplifier A is clipping, */\
|
||||
{ 0x30d0, "flag_clipb_high"}, /* Status flag_clipb_high, indication pmos amplifier B is clipping, */\
|
||||
{ 0x30e0, "flag_clipb_low"}, /* Status flag_clipb_low, indication nmos amplifier B is clipping, */\
|
||||
{ 0x310f, "mtp_man_data_out"}, /* MTP manual read out data , */\
|
||||
{ 0x3200, "key01_locked"}, /* Indicates KEY1 is locked , */\
|
||||
{ 0x3210, "key02_locked"}, /* Indicates KEY2 is locked , */\
|
||||
{ 0x3225, "mtp_ecc_tcout"}, /* MTP error correction test data out , */\
|
||||
{ 0x3280, "mtpctrl_valid_test_rd"}, /* MTP test readout for read , */\
|
||||
{ 0x3290, "mtpctrl_valid_test_wr"}, /* MTP test readout for write , */\
|
||||
{ 0x32a0, "flag_in_alarm_state"}, /* Flag alarm state , */\
|
||||
{ 0x32b0, "mtp_ecc_err2"}, /* Two or more bit errors detected in MTP, can not reconstruct value, */\
|
||||
{ 0x32c0, "mtp_ecc_err1"}, /* One bit error detected in MTP, reconstructed value, */\
|
||||
{ 0x32d0, "mtp_mtp_hvf"}, /* High voltage ready flag for MTP , */\
|
||||
{ 0x32f0, "mtp_zero_check_fail"}, /* Zero check failed for MTP , */\
|
||||
{ 0x3309, "data_adc10_tempbat"}, /* ADC10 data output for testing battery voltage and temperature, */\
|
||||
{ 0x400f, "hid_code"}, /* 5A6Bh, 23147d to access hidden registers (default for engineering), */\
|
||||
{ 0x4100, "bypass_hp"}, /* Bypass High Pass Filter , */\
|
||||
{ 0x4110, "hard_mute"}, /* Hard Mute , */\
|
||||
{ 0x4120, "soft_mute"}, /* Soft Mute , */\
|
||||
{ 0x4134, "pwm_delay"}, /* PWM delay setting , */\
|
||||
{ 0x4180, "pwm_shape"}, /* PWM Shape , */\
|
||||
{ 0x4190, "pwm_bitlength"}, /* PWM Bitlength in noise shaper , */\
|
||||
{ 0x4203, "drive"}, /* Drive bits to select number of amplifier power stages, */\
|
||||
{ 0x4240, "reclock_pwm"}, /* Control for enabling reclocking of PWM signal , */\
|
||||
{ 0x4250, "reclock_voltsense"}, /* Control for enabling reclocking of voltage sense signal, */\
|
||||
{ 0x4281, "dpsalevel"}, /* DPSA threshold level , */\
|
||||
{ 0x42a1, "dpsa_release"}, /* DPSA release time , */\
|
||||
{ 0x42c0, "coincidence"}, /* Prevent simultaneously switching of output stage , */\
|
||||
{ 0x42d0, "kickback"}, /* Prevent double pulses of output stage , */\
|
||||
{ 0x4306, "drivebst"}, /* Drive bits to select the power transistor sections boost converter, */\
|
||||
{ 0x4370, "boost_alg"}, /* Control for boost adaptive loop gain , */\
|
||||
{ 0x4381, "boost_loopgain"}, /* DCDC boost loopgain setting , */\
|
||||
{ 0x43a0, "ocptestbst"}, /* Boost OCP. For old ocp (ctrl_reversebst is 0); For new ocp (ctrl_reversebst is 1), */\
|
||||
{ 0x43d0, "test_abistfft_enbl"}, /* FFT Coolflux , */\
|
||||
{ 0x43e0, "bst_dcmbst"}, /* DCM mode control for DCDC during I2C direct control mode, */\
|
||||
{ 0x43f0, "test_bcontrol"}, /* test_bcontrol , */\
|
||||
{ 0x4400, "reversebst"}, /* OverCurrent Protection selection of power stage boost converter, */\
|
||||
{ 0x4410, "sensetest"}, /* Test option for the sense NMOS in booster for current mode control., */\
|
||||
{ 0x4420, "enbl_engagebst"}, /* Enable power stage of dcdc controller , */\
|
||||
{ 0x4470, "enbl_slopecur"}, /* Enable bit of max-current dac , */\
|
||||
{ 0x4480, "enbl_voutcomp"}, /* Enable vout comparators , */\
|
||||
{ 0x4490, "enbl_voutcomp93"}, /* Enable vout-93 comparators , */\
|
||||
{ 0x44a0, "enbl_voutcomp86"}, /* Enable vout-86 comparators , */\
|
||||
{ 0x44b0, "enbl_hizcom"}, /* Enable hiz comparator , */\
|
||||
{ 0x44c0, "enbl_peakcur"}, /* Enable peak current , */\
|
||||
{ 0x44d0, "bypass_ovpglitch"}, /* Bypass OVP Glitch Filter , */\
|
||||
{ 0x44e0, "enbl_windac"}, /* Enable window dac , */\
|
||||
{ 0x44f0, "enbl_powerbst"}, /* Enable line of the powerstage , */\
|
||||
{ 0x4507, "ocp_thr"}, /* OCP threshold level , */\
|
||||
{ 0x4580, "bypass_glitchfilter"}, /* Bypass glitch filter , */\
|
||||
{ 0x4590, "bypass_ovp"}, /* Bypass OVP , */\
|
||||
{ 0x45a0, "bypass_uvp"}, /* Bypass UVP , */\
|
||||
{ 0x45b0, "bypass_otp"}, /* Bypass OTP , */\
|
||||
{ 0x45d0, "bypass_ocpcounter"}, /* Bypass OCP counter , */\
|
||||
{ 0x45e0, "bypass_lost_clk"}, /* Bypass lost clock detector , */\
|
||||
{ 0x45f0, "vpalarm"}, /* vpalarm (UVP/OUP handling) , */\
|
||||
{ 0x4600, "bypass_gc"}, /* Bypasses the CS gain correction , */\
|
||||
{ 0x4610, "cs_gain_control"}, /* Current sense gain control , */\
|
||||
{ 0x4627, "cs_gain"}, /* Current sense gain , */\
|
||||
{ 0x46a0, "bypass_lp"}, /* Bypass the low power filter inside temperature sensor, */\
|
||||
{ 0x46b0, "bypass_pwmcounter"}, /* Bypass PWM Counter , */\
|
||||
{ 0x46c0, "cs_negfixed"}, /* Current sense does not switch to neg , */\
|
||||
{ 0x46d2, "cs_neghyst"}, /* Current sense switches to neg depending on hyseteris level, */\
|
||||
{ 0x4700, "switch_fb"}, /* Current sense control switch_fb , */\
|
||||
{ 0x4713, "se_hyst"}, /* Current sense control se_hyst , */\
|
||||
{ 0x4754, "se_level"}, /* Current sense control se_level , */\
|
||||
{ 0x47a5, "ktemp"}, /* Current sense control temperature compensation trimming, */\
|
||||
{ 0x4800, "cs_negin"}, /* Current sense control negin , */\
|
||||
{ 0x4810, "cs_sein"}, /* Current sense control cs_sein , */\
|
||||
{ 0x4820, "cs_coincidence"}, /* Coincidence current sense , */\
|
||||
{ 0x4830, "iddqtestbst"}, /* IDDQ testing in powerstage of DCDC boost converter, */\
|
||||
{ 0x4840, "coincidencebst"}, /* Switch protection on to prevent simultaneously switching power stages bst and amp, */\
|
||||
{ 0x4876, "delay_se_neg"}, /* delay of se and neg , */\
|
||||
{ 0x48e1, "cs_ttrack"}, /* Sample and hold track time , */\
|
||||
{ 0x4900, "bypass_clip"}, /* Bypass clip control , */\
|
||||
{ 0x4920, "cf_cgate_off"}, /* Disable clock gating in the coolflux , */\
|
||||
{ 0x4940, "clipfast"}, /* Clock selection for HW clipper for battery safeguard, */\
|
||||
{ 0x4950, "cs_8ohm"}, /* 8 ohm mode for current sense (gain mode) , */\
|
||||
{ 0x4974, "delay_clock_sh"}, /* delay_sh, tunes S7H delay , */\
|
||||
{ 0x49c0, "inv_clksh"}, /* Invert the sample/hold clock for current sense ADC, */\
|
||||
{ 0x49d0, "inv_neg"}, /* Invert neg signal , */\
|
||||
{ 0x49e0, "inv_se"}, /* Invert se signal , */\
|
||||
{ 0x49f0, "setse"}, /* Switches between Single Ended and differential mode; 1 is single ended, */\
|
||||
{ 0x4a12, "adc10_sel"}, /* Select the input to convert the 10b ADC , */\
|
||||
{ 0x4a60, "adc10_reset"}, /* Reset for ADC10 - I2C direct control mode , */\
|
||||
{ 0x4a81, "adc10_test"}, /* Test mode selection signal for ADC10 - I2C direct control mode, */\
|
||||
{ 0x4aa0, "bypass_lp_vbat"}, /* LP filter in batt sensor , */\
|
||||
{ 0x4ae0, "dc_offset"}, /* Current sense decimator offset control , */\
|
||||
{ 0x4af0, "tsense_hibias"}, /* Bit to set the biasing in temp sensor to high , */\
|
||||
{ 0x4b00, "adc13_iset"}, /* MICADC setting of current consumption (debug use only), */\
|
||||
{ 0x4b14, "adc13_gain"}, /* MICADC gain setting (two's complement format) , */\
|
||||
{ 0x4b61, "adc13_slowdel"}, /* MICADC delay setting for internal clock (debug use only), */\
|
||||
{ 0x4b83, "adc13_offset"}, /* MICADC offset setting , */\
|
||||
{ 0x4bc0, "adc13_bsoinv"}, /* MICADC bit stream output invert mode for test , */\
|
||||
{ 0x4bd0, "adc13_resonator_enable"}, /* MICADC give extra SNR with less stability (debug use only), */\
|
||||
{ 0x4be0, "testmicadc"}, /* Mux at input of MICADC for test purpose , */\
|
||||
{ 0x4c0f, "abist_offset"}, /* Offset control for ABIST testing , */\
|
||||
{ 0x4d05, "windac"}, /* For testing direct control windac , */\
|
||||
{ 0x4dc3, "pwm_dcc_cnt"}, /* control pwm duty cycle when enbl_pwm_dcc is 1 , */\
|
||||
{ 0x4e04, "slopecur"}, /* For testing direct control slopecur , */\
|
||||
{ 0x4e50, "ctrl_dem"}, /* Dynamic element matching control, rest of codes are optional, */\
|
||||
{ 0x4ed0, "enbl_pwm_dcc"}, /* Enable direct control of pwm duty cycle , */\
|
||||
{ 0x4f00, "bst_bypass_bstcur"}, /* Bypass control for boost current settings , */\
|
||||
{ 0x4f10, "bst_bypass_bstfoldback"}, /* Bypass control for boost foldback , */\
|
||||
{ 0x4f20, "bst_ctrl_azbst"}, /* Control of auto-zeroing of zero current comparator, */\
|
||||
{ 0x5007, "gain"}, /* Gain setting of the gain multiplier , */\
|
||||
{ 0x5081, "sourceb"}, /* PWM OUTB selection control , */\
|
||||
{ 0x50a1, "sourcea"}, /* PWM OUTA selection control , */\
|
||||
{ 0x50c1, "sourcebst"}, /* Sets the source of the pwmbst output to boost converter input for testing, */\
|
||||
{ 0x50e0, "tdm_enable_loopback"}, /* TDM loopback test , */\
|
||||
{ 0x5104, "pulselengthbst"}, /* Pulse length setting test input for boost converter, */\
|
||||
{ 0x5150, "bypasslatchbst"}, /* Bypass latch in boost converter , */\
|
||||
{ 0x5160, "invertbst"}, /* Invert pwmbst test signal , */\
|
||||
{ 0x5174, "pulselength"}, /* Pulse length setting test input for amplifier , */\
|
||||
{ 0x51c0, "bypasslatch"}, /* Bypass latch in PWM source selection module , */\
|
||||
{ 0x51d0, "invertb"}, /* invert pwmb test signal , */\
|
||||
{ 0x51e0, "inverta"}, /* invert pwma test signal , */\
|
||||
{ 0x51f0, "bypass_ctrlloop"}, /* bypass_ctrlloop bypasses the control loop of the amplifier, */\
|
||||
{ 0x5210, "test_rdsona"}, /* tbd for rdson testing , */\
|
||||
{ 0x5220, "test_rdsonb"}, /* tbd for rdson testing , */\
|
||||
{ 0x5230, "test_rdsonbst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5240, "test_cvia"}, /* tbd for rdson testing , */\
|
||||
{ 0x5250, "test_cvib"}, /* tbd for rdson testing , */\
|
||||
{ 0x5260, "test_cvibst"}, /* tbd for rdson testing , */\
|
||||
{ 0x5306, "digimuxa_sel"}, /* DigimuxA input selection control (see Digimux list for details), */\
|
||||
{ 0x5376, "digimuxb_sel"}, /* DigimuxB input selection control (see Digimux list for details), */\
|
||||
{ 0x5400, "hs_mode"}, /* I2C high speed mode selection control , */\
|
||||
{ 0x5412, "test_parametric_io"}, /* Control for parametric tests of IO cells , */\
|
||||
{ 0x5440, "enbl_ringo"}, /* Enable ring oscillator control, for test purpose to check with ringo, */\
|
||||
{ 0x5456, "digimuxc_sel"}, /* DigimuxC input selection control (see Digimux list for details), */\
|
||||
{ 0x54c0, "dio_ehs"}, /* Slew control for DIO in output mode , */\
|
||||
{ 0x54d0, "gainio_ehs"}, /* Slew control for GAINIO in output mode , */\
|
||||
{ 0x550d, "enbl_amp"}, /* enbl_amp for testing to enable all analoge blocks in amplifier, */\
|
||||
{ 0x5600, "use_direct_ctrls"}, /* Use direct controls to overrule several functions for testing - I2C direct control mode, */\
|
||||
{ 0x5610, "rst_datapath"}, /* Reset datapath during direct control mode , */\
|
||||
{ 0x5620, "rst_cgu"}, /* Reset CGU during durect control mode , */\
|
||||
{ 0x5637, "enbl_ref"}, /* For testing to enable all analoge blocks in references, */\
|
||||
{ 0x56b0, "enbl_engage"}, /* Enable output stage amplifier , */\
|
||||
{ 0x56c0, "use_direct_clk_ctrl"}, /* use_direct_clk_ctrl, to overrule several functions direct for testing, */\
|
||||
{ 0x56d0, "use_direct_pll_ctrl"}, /* use_direct_pll_ctrl, to overrule several functions direct for testing, */\
|
||||
{ 0x5707, "anamux"}, /* Anamux control , */\
|
||||
{ 0x57e0, "otptest"}, /* otptest, test mode otp amplifier , */\
|
||||
{ 0x57f0, "reverse"}, /* 1b = Normal mode, slope is controlled , */\
|
||||
{ 0x5813, "pll_selr"}, /* PLL pll_selr , */\
|
||||
{ 0x5854, "pll_selp"}, /* PLL pll_selp , */\
|
||||
{ 0x58a5, "pll_seli"}, /* PLL pll_seli , */\
|
||||
{ 0x5950, "pll_mdec_msb"}, /* Most significant bits of pll_mdec[16] , */\
|
||||
{ 0x5960, "pll_ndec_msb"}, /* Most significant bits of pll_ndec[9] , */\
|
||||
{ 0x5970, "pll_frm"}, /* PLL pll_frm , */\
|
||||
{ 0x5980, "pll_directi"}, /* PLL pll_directi , */\
|
||||
{ 0x5990, "pll_directo"}, /* PLL pll_directo , */\
|
||||
{ 0x59a0, "enbl_pll"}, /* PLL enbl_pll , */\
|
||||
{ 0x59f0, "pll_bypass"}, /* PLL bypass , */\
|
||||
{ 0x5a0f, "tsig_freq"}, /* Internal sinus test generator frequency control LSB bits, */\
|
||||
{ 0x5b02, "tsig_freq_msb"}, /* Select internal sine wave generator, frequency control MSB bits, */\
|
||||
{ 0x5b30, "inject_tsig"}, /* Control bit to switch to internal sinus test generator, */\
|
||||
{ 0x5b44, "adc10_prog_sample"}, /* ADC10 program sample setting - I2C direct control mode, */\
|
||||
{ 0x5c0f, "pll_mdec"}, /* PLL MDEC - I2C direct PLL control mode only , */\
|
||||
{ 0x5d06, "pll_pdec"}, /* PLL PDEC - I2C direct PLL control mode only , */\
|
||||
{ 0x5d78, "pll_ndec"}, /* PLL NDEC - I2C direct PLL control mode only , */\
|
||||
{ 0x6007, "mtpkey1"}, /* 5Ah, 90d To access KEY1_Protected registers (Default for engineering), */\
|
||||
{ 0x6185, "mtp_ecc_tcin"}, /* MTP ECC TCIN data , */\
|
||||
{ 0x6203, "mtp_man_address_in"}, /* MTP address from I2C register for read/writing mtp in manual single word mode, */\
|
||||
{ 0x6260, "mtp_ecc_eeb"}, /* Enable code bit generation (active low!) , */\
|
||||
{ 0x6270, "mtp_ecc_ecb"}, /* Enable correction signal (active low!) , */\
|
||||
{ 0x6280, "man_copy_mtp_to_iic"}, /* Start copying single word from mtp to I2C mtp register, */\
|
||||
{ 0x6290, "man_copy_iic_to_mtp"}, /* Start copying single word from I2C mtp register to mtp, */\
|
||||
{ 0x62a0, "auto_copy_mtp_to_iic"}, /* Start copying all the data from mtp to I2C mtp registers, */\
|
||||
{ 0x62b0, "auto_copy_iic_to_mtp"}, /* Start copying data from I2C mtp registers to mtp , */\
|
||||
{ 0x62d2, "mtp_speed_mode"}, /* MTP speed mode , */\
|
||||
{ 0x6340, "mtp_direct_enable"}, /* mtp_direct_enable , */\
|
||||
{ 0x6350, "mtp_direct_wr"}, /* mtp_direct_wr , */\
|
||||
{ 0x6360, "mtp_direct_rd"}, /* mtp_direct_rd , */\
|
||||
{ 0x6370, "mtp_direct_rst"}, /* mtp_direct_rst , */\
|
||||
{ 0x6380, "mtp_direct_ers"}, /* mtp_direct_ers , */\
|
||||
{ 0x6390, "mtp_direct_prg"}, /* mtp_direct_prg , */\
|
||||
{ 0x63a0, "mtp_direct_epp"}, /* mtp_direct_epp , */\
|
||||
{ 0x63b4, "mtp_direct_test"}, /* mtp_direct_test , */\
|
||||
{ 0x640f, "mtp_man_data_in"}, /* Write data for MTP manual write , */\
|
||||
{ 0x7000, "cf_rst_dsp"}, /* Reset CoolFlux DSP , */\
|
||||
{ 0x7011, "cf_dmem"}, /* Target memory for access , */\
|
||||
{ 0x7030, "cf_aif"}, /* Auto increment flag for memory-address , */\
|
||||
{ 0x7040, "cf_int"}, /* CF Interrupt - auto clear , */\
|
||||
{ 0x7087, "cf_req"}, /* CF request for accessing the 8 channels , */\
|
||||
{ 0x710f, "cf_madd"}, /* Memory address , */\
|
||||
{ 0x720f, "cf_mema"}, /* Activate memory access , */\
|
||||
{ 0x7307, "cf_err"}, /* CF error flags , */\
|
||||
{ 0x7387, "cf_ack"}, /* CF acknowledgement of the requests channels , */\
|
||||
{ 0x8000, "calibration_onetime"}, /* Calibration schedule selection , */\
|
||||
{ 0x8010, "calibr_ron_done"}, /* Calibration of RON status bit , */\
|
||||
{ 0x8105, "calibr_vout_offset"}, /* calibr_vout_offset (DCDCoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8163, "calibr_delta_gain"}, /* delta gain for vamp (alpha) 2's compliment (key1 protected), */\
|
||||
{ 0x81a5, "calibr_offs_amp"}, /* offset for vamp (Ampoffset) 2's compliment (key1 protected), */\
|
||||
{ 0x8207, "calibr_gain_cs"}, /* gain current sense (Imeasalpha) 2's compliment (key1 protected), */\
|
||||
{ 0x8284, "calibr_temp_offset"}, /* temperature offset 2's compliment (key1 protected), */\
|
||||
{ 0x82d2, "calibr_temp_gain"}, /* temperature gain 2's compliment (key1 protected) , */\
|
||||
{ 0x830f, "calibr_ron"}, /* calibration value of the RON resistance of the coil, */\
|
||||
{ 0x8505, "type_bits_hw"}, /* bit0 = disable function dcdcoff_mode ($09[7]) , */\
|
||||
{ 0x8601, "type_bits_1_0_sw"}, /* MTP control SW , */\
|
||||
{ 0x8681, "type_bits_9_8_sw"}, /* MTP control SW , */\
|
||||
{ 0x870f, "type_bits2_sw"}, /* MTP-control SW2 , */\
|
||||
{ 0x8806, "htol_iic_addr"}, /* 7-bit I2C address to be used during HTOL testing , */\
|
||||
{ 0x8870, "htol_iic_addr_en"}, /* HTOL I2C_Address_Enable , */\
|
||||
{ 0x8881, "ctrl_ovp_response"}, /* OVP response control , */\
|
||||
{ 0x88a0, "disable_ovp_alarm_state"}, /* OVP alarm state control , */\
|
||||
{ 0x88b0, "enbl_stretch_ovp"}, /* OVP alram strech control , */\
|
||||
{ 0x88c0, "cf_debug_mode"}, /* Coolflux debug mode , */\
|
||||
{ 0x8a0f, "production_data1"}, /* production_data1 , */\
|
||||
{ 0x8b0f, "production_data2"}, /* production_data2 , */\
|
||||
{ 0x8c0f, "production_data3"}, /* production_data3 , */\
|
||||
{ 0x8d0f, "production_data4"}, /* production_data4 , */\
|
||||
{ 0x8e0f, "production_data5"}, /* production_data5 , */\
|
||||
{ 0x8f0f, "production_data6"}, /* production_data6 , */\
|
||||
{ 0xffff,"Unknown bitfield enum" } /* not found */\
|
||||
};
|
||||
|
||||
enum TFA9896_irq {
|
||||
TFA9896_irq_vdds = 0,
|
||||
TFA9896_irq_plls = 1,
|
||||
TFA9896_irq_ds = 2,
|
||||
TFA9896_irq_vds = 3,
|
||||
TFA9896_irq_uvds = 4,
|
||||
TFA9896_irq_cds = 5,
|
||||
TFA9896_irq_clks = 6,
|
||||
TFA9896_irq_clips = 7,
|
||||
TFA9896_irq_mtpb = 8,
|
||||
TFA9896_irq_clk = 9,
|
||||
TFA9896_irq_spks = 10,
|
||||
TFA9896_irq_acs = 11,
|
||||
TFA9896_irq_sws = 12,
|
||||
TFA9896_irq_wds = 13,
|
||||
TFA9896_irq_amps = 14,
|
||||
TFA9896_irq_arefs = 15,
|
||||
TFA9896_irq_err = 32,
|
||||
TFA9896_irq_ack = 33,
|
||||
TFA9896_irq_max = 34,
|
||||
TFA9896_irq_all = -1 /* all irqs */};
|
||||
|
||||
#define TFA9896_IRQ_NAMETABLE static tfaIrqName_t TFA9896IrqNames[]= {\
|
||||
{ 0, "VDDS"},\
|
||||
{ 1, "PLLS"},\
|
||||
{ 2, "DS"},\
|
||||
{ 3, "VDS"},\
|
||||
{ 4, "UVDS"},\
|
||||
{ 5, "CDS"},\
|
||||
{ 6, "CLKS"},\
|
||||
{ 7, "CLIPS"},\
|
||||
{ 8, "MTPB"},\
|
||||
{ 9, "CLK"},\
|
||||
{ 10, "SPKS"},\
|
||||
{ 11, "ACS"},\
|
||||
{ 12, "SWS"},\
|
||||
{ 13, "WDS"},\
|
||||
{ 14, "AMPS"},\
|
||||
{ 15, "AREFS"},\
|
||||
{ 16, "16"},\
|
||||
{ 17, "17"},\
|
||||
{ 18, "18"},\
|
||||
{ 19, "19"},\
|
||||
{ 20, "20"},\
|
||||
{ 21, "21"},\
|
||||
{ 22, "22"},\
|
||||
{ 23, "23"},\
|
||||
{ 24, "24"},\
|
||||
{ 25, "25"},\
|
||||
{ 26, "26"},\
|
||||
{ 27, "27"},\
|
||||
{ 28, "28"},\
|
||||
{ 29, "29"},\
|
||||
{ 30, "30"},\
|
||||
{ 31, "31"},\
|
||||
{ 32, "ERR"},\
|
||||
{ 33, "ACK"},\
|
||||
{ 34, "34"},\
|
||||
};
|
||||
#endif /* _TFA9896_TFAFIELDNAMES_H */
|
||||
184
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx.h
Executable file
184
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx.h
Executable file
|
|
@ -0,0 +1,184 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __TFA98XX_INC__
|
||||
#define __TFA98XX_INC__
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/miscdevice.h>
|
||||
|
||||
#include "tfa_device.h"
|
||||
#include "tfa_container.h"
|
||||
#include "config.h"
|
||||
|
||||
/* max. length of a alsa mixer control name */
|
||||
#define MAX_CONTROL_NAME 48
|
||||
|
||||
#define TFA98XX_MAX_REGISTER 0xff
|
||||
|
||||
#define TFA98XX_FLAG_SKIP_INTERRUPTS (1 << 0)
|
||||
#define TFA98XX_FLAG_SAAM_AVAILABLE (1 << 1)
|
||||
#define TFA98XX_FLAG_STEREO_DEVICE (1 << 2)
|
||||
#define TFA98XX_FLAG_MULTI_MIC_INPUTS (1 << 3)
|
||||
#define TFA98XX_FLAG_TAPDET_AVAILABLE (1 << 4)
|
||||
#define TFA98XX_FLAG_CALIBRATION_CTL (1 << 5)
|
||||
#define TFA98XX_FLAG_REMOVE_PLOP_NOISE (1 << 6)
|
||||
#define TFA98XX_FLAG_LP_MODES (1 << 7)
|
||||
#define TFA98XX_FLAG_TDM_DEVICE (1 << 8)
|
||||
#define TFA98XX_FLAG_ADAPT_NOISE_MODE (1 << 9)
|
||||
|
||||
#define TFA98XX_NUM_RATES 10
|
||||
|
||||
/* DSP init status */
|
||||
enum tfa98xx_dsp_init_state {
|
||||
TFA98XX_DSP_INIT_STOPPED, /* DSP not running */
|
||||
TFA98XX_DSP_INIT_RECOVER, /* DSP error detected at runtime */
|
||||
TFA98XX_DSP_INIT_FAIL, /* DSP init failed */
|
||||
TFA98XX_DSP_INIT_PENDING, /* DSP start requested */
|
||||
TFA98XX_DSP_INIT_DONE, /* DSP running */
|
||||
TFA98XX_DSP_INIT_INVALIDATED, /* DSP was running, requires re-init */
|
||||
};
|
||||
|
||||
enum tfa98xx_dsp_fw_state {
|
||||
TFA98XX_DSP_FW_NONE = 0,
|
||||
TFA98XX_DSP_FW_PENDING,
|
||||
TFA98XX_DSP_FW_FAIL,
|
||||
TFA98XX_DSP_FW_OK,
|
||||
};
|
||||
|
||||
enum tfa98xx_misc_device_id {
|
||||
MISC_DEVICE_TFA98XX_REG,
|
||||
MISC_DEVICE_TFA98XX_RW,
|
||||
MISC_DEVICE_TFA98XX_RPC,
|
||||
MISC_DEVICE_TFA98XX_PROFILE,
|
||||
MISC_DEVICE_TFA98XX_IOCTL,
|
||||
MISC_DEVICE_MAX
|
||||
};
|
||||
|
||||
struct tfa98xx_miscdevice_info {
|
||||
char devicename[255];
|
||||
struct file_operations operations;
|
||||
};
|
||||
|
||||
enum TFA_DEVICE_MUTE{
|
||||
TFA98XX_DEVICE_MUTE_OFF = 0,
|
||||
TFA98XX_DEVICE_MUTE_ON,
|
||||
};
|
||||
|
||||
enum {
|
||||
IOCTL_CMD_GET_MEMTRACK_DATA = 0,
|
||||
IOCTL_CMD_GET_CNT_VERSION,
|
||||
};
|
||||
|
||||
enum {
|
||||
TFA_KCONTROL_VALUE_DISABLED = 0,
|
||||
TFA_KCONTROL_VALUE_ENABLED
|
||||
};
|
||||
|
||||
struct livedata_cfg {
|
||||
int address;
|
||||
int track;
|
||||
int scaler;
|
||||
};
|
||||
|
||||
struct tfa98xx_firmware {
|
||||
void *base;
|
||||
struct tfa98xx_device *dev;
|
||||
char name[9]; //TODO get length from tfa parameter defs
|
||||
};
|
||||
|
||||
struct tfa98xx_baseprofile {
|
||||
char basename[MAX_CONTROL_NAME]; /* profile basename */
|
||||
int len; /* profile length */
|
||||
int item_id; /* profile id */
|
||||
int sr_rate_sup[TFA98XX_NUM_RATES]; /* sample rates supported by this profile */
|
||||
struct list_head list; /* list of all profiles */
|
||||
};
|
||||
enum tfa_reset_polarity{
|
||||
LOW=0,
|
||||
HIGH=1
|
||||
};
|
||||
struct tfa98xx {
|
||||
struct regmap *regmap;
|
||||
struct i2c_client *i2c;
|
||||
struct regulator *vdd;
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,18,0)
|
||||
struct snd_soc_component *component;
|
||||
#else
|
||||
struct snd_soc_codec *codec;
|
||||
#endif
|
||||
struct workqueue_struct *tfa98xx_wq;
|
||||
struct delayed_work init_work;
|
||||
struct delayed_work monitor_work;
|
||||
struct delayed_work interrupt_work;
|
||||
struct delayed_work tapdet_work;
|
||||
struct delayed_work nmodeupdate_work;
|
||||
struct mutex dsp_lock;
|
||||
int dsp_init;
|
||||
int dsp_fw_state;
|
||||
int sysclk;
|
||||
int rst_gpio;
|
||||
u16 rev;
|
||||
int audio_mode;
|
||||
struct tfa98xx_firmware fw;
|
||||
char *fw_name;
|
||||
int rate;
|
||||
wait_queue_head_t wq;
|
||||
struct device *dev;
|
||||
unsigned int init_count;
|
||||
int pstream;
|
||||
int cstream;
|
||||
struct input_dev *input;
|
||||
bool tapdet_enabled; /* service enabled */
|
||||
bool tapdet_open; /* device file opened */
|
||||
unsigned int tapdet_profiles; /* tapdet profile bitfield */
|
||||
bool tapdet_poll; /* tapdet running on polling mode */
|
||||
|
||||
unsigned int rate_constraint_list[TFA98XX_NUM_RATES];
|
||||
struct snd_pcm_hw_constraint_list rate_constraint;
|
||||
|
||||
int reset_gpio;
|
||||
int power_gpio;
|
||||
int irq_gpio;
|
||||
int spk_sw_gpio;
|
||||
enum tfa_reset_polarity reset_polarity;
|
||||
struct list_head list;
|
||||
struct tfa_device *tfa;
|
||||
int vstep;
|
||||
int profile;
|
||||
int prof_vsteps[TFACONT_MAXPROFS]; /* store vstep per profile (single device) */
|
||||
|
||||
#ifdef CONFIG_DEBUG_FS
|
||||
struct dentry *dbg_dir;
|
||||
#endif
|
||||
u8 reg;
|
||||
unsigned int flags;
|
||||
bool set_mtp_cal;
|
||||
uint16_t cal_data;
|
||||
enum TFA_DEVICE_MUTE tfa_mute_mode;
|
||||
|
||||
struct device_node *spk_id_gpio_p;
|
||||
|
||||
struct miscdevice tfa98xx_reg;
|
||||
struct miscdevice tfa98xx_rw;
|
||||
struct miscdevice tfa98xx_rpc;
|
||||
struct miscdevice tfa98xx_profile;
|
||||
struct miscdevice tfa98xx_control;
|
||||
};
|
||||
|
||||
/*for furture, we will move it to DTS to mark left and right channel*/
|
||||
#define TFA_LEFT_DEVICE_ADDRESS (0x34)
|
||||
#define TFA_RIGHT_DEVICE_ADDRESS (0x35)
|
||||
|
||||
|
||||
#endif /* __TFA98XX_INC__ */
|
||||
|
||||
3864
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_genregs_N1C.h
Executable file
3864
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_genregs_N1C.h
Executable file
File diff suppressed because it is too large
Load diff
736
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_parameters.h
Executable file
736
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_parameters.h
Executable file
|
|
@ -0,0 +1,736 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* tfa98xx_parameters.h
|
||||
*
|
||||
* Created on: Jul 22, 2013
|
||||
* Author: NLV02095
|
||||
*/
|
||||
|
||||
#ifndef TFA98XXPARAMETERS_H_
|
||||
#define TFA98XXPARAMETERS_H_
|
||||
|
||||
//#include "config.h"
|
||||
// workaround for Visual Studio:
|
||||
// fatal error C1083: Cannot open include file: 'config.h': No such file or directory
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/types.h>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "tfa_service.h"
|
||||
|
||||
#if (defined(WIN32) || defined(_X64))
|
||||
/* These warnings are disabled because it is only given by Windows and there is no easy fix */
|
||||
#pragma warning(disable:4200)
|
||||
#pragma warning(disable:4214)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* profiles & volumesteps
|
||||
*
|
||||
*/
|
||||
#define TFA_MAX_PROFILES (64)
|
||||
#define TFA_MAX_VSTEPS (64)
|
||||
#define TFA_MAX_VSTEP_MSG_MARKER (100) /* This marker is used to indicate if all msgs need to be written to the device */
|
||||
#define TFA_MAX_MSGS (10)
|
||||
|
||||
// the pack pragma is required to make that the size in memory
|
||||
// matches the actual variable lenghts
|
||||
// This is to assure that the binary files can be transported between
|
||||
// different platforms.
|
||||
#pragma pack (push, 1)
|
||||
|
||||
/*
|
||||
* typedef for 24 bit value using 3 bytes
|
||||
*/
|
||||
typedef struct uint24 {
|
||||
uint8_t b[3];
|
||||
} uint24_t;
|
||||
/*
|
||||
* the generic header
|
||||
* all char types are in ASCII
|
||||
*/
|
||||
typedef struct TfaHeader {
|
||||
uint16_t id;
|
||||
char version[2]; // "V_" : V=version, vv=subversion
|
||||
char subversion[2]; // "vv" : vv=subversion
|
||||
uint16_t size; // data size in bytes following CRC
|
||||
uint32_t CRC; // 32-bits CRC for following data
|
||||
char customer[8]; // “name of customer”
|
||||
char application[8]; // “application name”
|
||||
char type[8]; // “application type name”
|
||||
} TfaHeader_t;
|
||||
|
||||
typedef enum TfaSamplerate {
|
||||
fs_8k, // 8kHz
|
||||
fs_11k025, // 11.025kHz
|
||||
fs_12k, // 12kHz
|
||||
fs_16k, // 16kHz
|
||||
fs_22k05, // 22.05kHz
|
||||
fs_24k, // 24kHz
|
||||
fs_32k, // 32kHz
|
||||
fs_44k1, // 44.1kHz
|
||||
fs_48k, // 48kHz
|
||||
fs_96k, // 96kHz
|
||||
fs_count // Should always be last item.
|
||||
} TfaSamplerate_t;
|
||||
|
||||
// Keep in sync with TfaSamplerate_t !
|
||||
static const int TfaSamplerateHz[fs_count] = { 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 96000 };
|
||||
|
||||
|
||||
/*
|
||||
* coolflux direct memory access
|
||||
*/
|
||||
typedef struct TfaDspMem {
|
||||
uint8_t type; /* 0--3: p, x, y, iomem */
|
||||
uint16_t address; /* target address */
|
||||
uint8_t size; /* data size in words */
|
||||
int words[]; /* payload in signed 32bit integer (two's complement) */
|
||||
} TfaDspMem_t;
|
||||
|
||||
/*
|
||||
* the biquad coefficients for the API together with index in filter
|
||||
* the biquad_index is the actual index in the equalizer +1
|
||||
*/
|
||||
#define BIQUAD_COEFF_SIZE 6
|
||||
|
||||
/*
|
||||
* Output fixed point coeffs structure
|
||||
*/
|
||||
typedef struct {
|
||||
int a2;
|
||||
int a1;
|
||||
int b2;
|
||||
int b1;
|
||||
int b0;
|
||||
}TfaBiquad_t;
|
||||
|
||||
typedef struct TfaBiquadOld {
|
||||
uint8_t bytes[BIQUAD_COEFF_SIZE*sizeof(uint24_t)];
|
||||
}TfaBiquadOld_t;
|
||||
|
||||
typedef struct TfaBiquadFloat {
|
||||
float headroom;
|
||||
float b0;
|
||||
float b1;
|
||||
float b2;
|
||||
float a1;
|
||||
float a2;
|
||||
} TfaBiquadFloat_t;
|
||||
|
||||
/*
|
||||
* EQ filter definitions
|
||||
* Note: This is not in line with smartstudio (JV: 12/12/2016)
|
||||
*/
|
||||
typedef enum TfaFilterType {
|
||||
fCustom, //User defined biquad coefficients
|
||||
fFlat, //Vary only gain
|
||||
fLowpass, //2nd order Butterworth low pass
|
||||
fHighpass, //2nd order Butterworth high pass
|
||||
fLowshelf,
|
||||
fHighshelf,
|
||||
fNotch,
|
||||
fPeak,
|
||||
fBandpass,
|
||||
f1stLP,
|
||||
f1stHP,
|
||||
fElliptic
|
||||
} TfaFilterType_t;
|
||||
|
||||
/*
|
||||
* filter parameters for biquad (re-)calculation
|
||||
*/
|
||||
typedef struct TfaFilter {
|
||||
TfaBiquadOld_t biquad;
|
||||
uint8_t enabled;
|
||||
uint8_t type; // (== enum FilterTypes, assure 8bits length)
|
||||
float frequency;
|
||||
float Q;
|
||||
float gain;
|
||||
} TfaFilter_t ; //8 * float + int32 + byte == 37
|
||||
|
||||
/*
|
||||
* biquad params for calculation
|
||||
*/
|
||||
|
||||
#define TFA_BQ_EQ_INDEX 0
|
||||
#define TFA_BQ_ANTI_ALIAS_INDEX 10
|
||||
#define TFA_BQ_INTEGRATOR_INDEX 13
|
||||
|
||||
/*
|
||||
* Loudspeaker Compensation filter definitions
|
||||
*/
|
||||
typedef struct TfaLsCompensationFilter {
|
||||
TfaBiquad_t biquad;
|
||||
uint8_t lsCompOn; // Loudspeaker compensation on/off; when 'off', the DSP code doesn't apply the bwExt => bwExtOn GUI flag should be gray to avoid confusion
|
||||
uint8_t bwExtOn; // Bandwidth extension on/off
|
||||
float fRes; // [Hz] speaker resonance frequency
|
||||
float Qt; // Speaker resonance Q-factor
|
||||
float fBwExt; // [Hz] Band width extension frequency
|
||||
float samplingFreq;// [Hz] Sampling frequency
|
||||
} TfaLsCompensationFilter_t;
|
||||
|
||||
/*
|
||||
* Anti Aliasing Elliptic filter definitions
|
||||
*/
|
||||
typedef struct TfaAntiAliasFilter {
|
||||
TfaBiquad_t biquad; /**< Output results fixed point coeffs */
|
||||
uint8_t enabled;
|
||||
float cutOffFreq; // cut off frequency
|
||||
float samplingFreq; // sampling frequency
|
||||
float rippleDb; // range: [0.1 3.0]
|
||||
float rolloff; // range: [-1.0 1.0]
|
||||
} TfaAntiAliasFilter_t;
|
||||
|
||||
/**
|
||||
* Integrator filter input definitions
|
||||
*/
|
||||
typedef struct TfaIntegratorFilter {
|
||||
TfaBiquad_t biquad; /**< Output results fixed point coeffs */
|
||||
uint8_t type; /**< Butterworth filter type: high or low pass */
|
||||
float cutOffFreq; /**< cut off frequency in Hertz; range: [100.0 4000.0] */
|
||||
float samplingFreq; /**< sampling frequency in Hertz */
|
||||
float leakage; /**< leakage factor; range [0.0 1.0] */
|
||||
} TfaIntegratorFilter_t;
|
||||
|
||||
|
||||
typedef struct TfaEqFilter {
|
||||
TfaBiquad_t biquad;
|
||||
uint8_t enabled;
|
||||
uint8_t type; // (== enum FilterTypes, assure 8bits length)
|
||||
float cutOffFreq; // cut off frequency, // range: [100.0 4000.0]
|
||||
float samplingFreq; // sampling frequency
|
||||
float Q; // range: [0.5 5.0]
|
||||
float gainDb; // range: [-10.0 10.0]
|
||||
} TfaEqFilter_t ; //8 * float + int32 + byte == 37
|
||||
|
||||
typedef struct TfaContAntiAlias {
|
||||
int8_t index; /**< index determines destination type; anti-alias, integrator,eq */
|
||||
uint8_t type;
|
||||
float cutOffFreq; // cut off frequency
|
||||
float samplingFreq;
|
||||
float rippleDb; // integrator leakage
|
||||
float rolloff;
|
||||
uint8_t bytes[5*3]; // payload 5*24buts coeffs
|
||||
}TfaContAntiAlias_t;
|
||||
|
||||
typedef struct TfaContIntegrator {
|
||||
int8_t index; /**< index determines destination type; anti-alias, integrator,eq */
|
||||
uint8_t type;
|
||||
float cutOffFreq; // cut off frequency
|
||||
float samplingFreq;
|
||||
float leakage; // integrator leakage
|
||||
float reserved;
|
||||
uint8_t bytes[5*3]; // payload 5*24buts coeffs
|
||||
}TfaContIntegrator_t;
|
||||
|
||||
typedef struct TfaContEq {
|
||||
int8_t index;
|
||||
uint8_t type; // (== enum FilterTypes, assure 8bits length)
|
||||
float cutOffFreq; // cut off frequency, // range: [100.0 4000.0]
|
||||
float samplingFreq; // sampling frequency
|
||||
float Q; // range: [0.5 5.0]
|
||||
float gainDb; // range: [-10.0 10.0]
|
||||
uint8_t bytes[5*3]; // payload 5*24buts coeffs
|
||||
} TfaContEq_t ; //8 * float + int32 + byte == 37
|
||||
|
||||
typedef union TfaContBiquad {
|
||||
TfaContEq_t eq;
|
||||
TfaContAntiAlias_t aa;
|
||||
TfaContIntegrator_t in;
|
||||
}TfaContBiquad_t;
|
||||
|
||||
#define TFA_BQ_EQ_INDEX 0
|
||||
#define TFA_BQ_ANTI_ALIAS_INDEX 10
|
||||
#define TFA_BQ_INTEGRATOR_INDEX 13
|
||||
#define TFA98XX_MAX_EQ 10
|
||||
|
||||
typedef struct TfaEqualizer {
|
||||
TfaFilter_t filter[TFA98XX_MAX_EQ];
|
||||
} TfaEqualizer_t;
|
||||
|
||||
/*
|
||||
* files
|
||||
*/
|
||||
#define HDR(c1,c2) (c2<<8|c1) // little endian
|
||||
typedef enum TfaHeaderType {
|
||||
paramsHdr = HDR('P','M'), /* containter file */
|
||||
volstepHdr = HDR('V','P'),
|
||||
patchHdr = HDR('P','A'),
|
||||
speakerHdr = HDR('S','P'),
|
||||
presetHdr = HDR('P','R'),
|
||||
configHdr = HDR('C','O'),
|
||||
equalizerHdr = HDR('E','Q'),
|
||||
drcHdr = HDR('D','R'),
|
||||
msgHdr = HDR('M','G'), /* generic message */
|
||||
infoHdr = HDR('I','N')
|
||||
} TfaHeaderType_t;
|
||||
|
||||
/*
|
||||
* equalizer file
|
||||
*/
|
||||
#define TFA_EQ_VERSION '1'
|
||||
#define TFA_EQ_SUBVERSION "00"
|
||||
typedef struct TfaEqualizerFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t samplerate; // ==enum samplerates, assure 8 bits
|
||||
TfaFilter_t filter[TFA98XX_MAX_EQ];// note: API index counts from 1..10
|
||||
} TfaEqualizerFile_t;
|
||||
|
||||
/*
|
||||
* patch file
|
||||
*/
|
||||
#define TFA_PA_VERSION '1'
|
||||
#define TFA_PA_SUBVERSION "00"
|
||||
typedef struct TfaPatchFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[];
|
||||
} TfaPatch_t;
|
||||
|
||||
/*
|
||||
* generic message file
|
||||
* - the payload of this file includes the opcode and is send straight to the DSP
|
||||
*/
|
||||
#define TFA_MG_VERSION '3'
|
||||
#define TFA_MG_SUBVERSION "00"
|
||||
typedef struct TfaMsgFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[];
|
||||
} TfaMsgFile_t;
|
||||
|
||||
/*
|
||||
* NOTE the tfa98xx API defines the enum Tfa98xx_config_type that defines
|
||||
* the subtypes as decribes below.
|
||||
* tfa98xx_dsp_config_parameter_type() can be used to get the
|
||||
* supported type for the active device..
|
||||
*/
|
||||
/*
|
||||
* config file V1 sub 1
|
||||
*/
|
||||
#define TFA_CO_VERSION '1'
|
||||
#define TFA_CO3_VERSION '3'
|
||||
#define TFA_CO_SUBVERSION1 "01"
|
||||
typedef struct TfaConfigS1File {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[55*3];
|
||||
} TfaConfigS1_t;
|
||||
|
||||
/*
|
||||
* config file V1 sub 2
|
||||
*/
|
||||
#define TFA_CO_SUBVERSION2 "02"
|
||||
typedef struct TfaConfigS2File {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[67*3];
|
||||
} TfaConfigS2_t;
|
||||
|
||||
/*
|
||||
* config file V1 sub 3
|
||||
*/
|
||||
#define TFA_CO_SUBVERSION3 "03"
|
||||
typedef struct TfaConfigS3File {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[67*3];
|
||||
} TfaConfigS3_t;
|
||||
|
||||
/*
|
||||
* config file V1.0
|
||||
*/
|
||||
#define TFA_CO_SUBVERSION "00"
|
||||
typedef struct TfaConfigFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[];
|
||||
} TfaConfig_t;
|
||||
|
||||
/*
|
||||
* preset file
|
||||
*/
|
||||
#define TFA_PR_VERSION '1'
|
||||
#define TFA_PR_SUBVERSION "00"
|
||||
typedef struct TfaPresetFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[];
|
||||
} TfaPreset_t;
|
||||
|
||||
/*
|
||||
* drc file
|
||||
*/
|
||||
#define TFA_DR_VERSION '1'
|
||||
#define TFA_DR_SUBVERSION "00"
|
||||
typedef struct TfaDrcFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t data[];
|
||||
} TfaDrc_t;
|
||||
|
||||
/*
|
||||
* drc file
|
||||
* for tfa 2 there is also a xml-version
|
||||
*/
|
||||
#define TFA_DR3_VERSION '3'
|
||||
#define TFA_DR3_SUBVERSION "00"
|
||||
typedef struct TfaDrcFile2 {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t version[3];
|
||||
uint8_t data[];
|
||||
} TfaDrc2_t;
|
||||
|
||||
/*
|
||||
* volume step structures
|
||||
*/
|
||||
// VP01
|
||||
#define TFA_VP1_VERSION '1'
|
||||
#define TFA_VP1_SUBVERSION "01"
|
||||
typedef struct TfaVolumeStep1 {
|
||||
float attenuation; // IEEE single float
|
||||
uint8_t preset[TFA98XX_PRESET_LENGTH];
|
||||
} TfaVolumeStep1_t;
|
||||
|
||||
// VP02
|
||||
#define TFA_VP2_VERSION '2'
|
||||
#define TFA_VP2_SUBVERSION "01"
|
||||
typedef struct TfaVolumeStep2 {
|
||||
float attenuation; // IEEE single float
|
||||
uint8_t preset[TFA98XX_PRESET_LENGTH];
|
||||
TfaFilter_t filter[TFA98XX_MAX_EQ];// note: API index counts from 1..10
|
||||
} TfaVolumeStep2_t;
|
||||
|
||||
/*
|
||||
* volumestep file
|
||||
*/
|
||||
#define TFA_VP_VERSION '1'
|
||||
#define TFA_VP_SUBVERSION "00"
|
||||
typedef struct TfaVolumeStepFile {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t vsteps; // can also be calulated from size+type
|
||||
uint8_t samplerate; // ==enum samplerates, assure 8 bits
|
||||
uint8_t payload; //start of variable length contents:N times volsteps
|
||||
}TfaVolumeStepFile_t;
|
||||
/*
|
||||
* volumestep2 file
|
||||
*/
|
||||
typedef struct TfaVolumeStep2File {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t vsteps; // can also be calulated from size+type
|
||||
uint8_t samplerate; // ==enum samplerates, assure 8 bits
|
||||
TfaVolumeStep2_t vstep[]; //start of variable length contents:N times volsteps
|
||||
}TfaVolumeStep2File_t;
|
||||
|
||||
/*
|
||||
* volumestepMax2 file
|
||||
*/
|
||||
typedef struct TfaVolumeStepMax2File {
|
||||
TfaHeader_t hdr;
|
||||
uint8_t version[3];
|
||||
uint8_t NrOfVsteps;
|
||||
uint8_t vstepsBin[];
|
||||
}TfaVolumeStepMax2File_t;
|
||||
|
||||
/*
|
||||
* volumestepMax2 file
|
||||
* This volumestep should ONLY be used for the use of bin2hdr!
|
||||
* This can only be used to find the messagetype of the vstep (without header)
|
||||
*/
|
||||
typedef struct TfaVolumeStepMax2_1File {
|
||||
uint8_t version[3];
|
||||
uint8_t NrOfVsteps;
|
||||
uint8_t vstepsBin[];
|
||||
}TfaVolumeStepMax2_1File_t;
|
||||
|
||||
struct TfaVolumeStepRegisterInfo {
|
||||
uint8_t NrOfRegisters;
|
||||
uint16_t registerInfo[];
|
||||
};
|
||||
|
||||
struct TfaVolumeStepMessageInfo {
|
||||
uint8_t NrOfMessages;
|
||||
uint8_t MessageType;
|
||||
uint24_t MessageLength;
|
||||
uint8_t CmdId[3];
|
||||
uint8_t ParameterData[];
|
||||
};
|
||||
/**************************old v2 *************************************************/
|
||||
|
||||
/*
|
||||
* subv 00 volumestep file
|
||||
*/
|
||||
typedef struct TfaOldHeader {
|
||||
uint16_t id;
|
||||
char version[2]; // "V_" : V=version, vv=subversion
|
||||
char subversion[2]; // "vv" : vv=subversion
|
||||
uint16_t size; // data size in bytes following CRC
|
||||
uint32_t CRC; // 32-bits CRC for following data
|
||||
} TfaOldHeader_t;
|
||||
|
||||
typedef struct TfaOldFilter {
|
||||
double bq[5];
|
||||
int32_t type;
|
||||
double frequency;
|
||||
double Q;
|
||||
double gain;
|
||||
uint8_t enabled;
|
||||
} TfaOldFilter_t ;
|
||||
|
||||
typedef struct TfaOldVolumeStep2 {
|
||||
float attenuation; // IEEE single float
|
||||
uint8_t preset[TFA98XX_PRESET_LENGTH];
|
||||
TfaOldFilter_t eq[10];
|
||||
} TfaOldVolumeStep2_t;
|
||||
|
||||
typedef struct TfaOldVolumeStepFile {
|
||||
TfaOldHeader_t hdr;
|
||||
TfaOldVolumeStep2_t step[];
|
||||
}TfaOldVolumeStep2File_t;
|
||||
/**************************end old v2 *************************************************/
|
||||
|
||||
/*
|
||||
* speaker file header
|
||||
*/
|
||||
struct TfaSpkHeader {
|
||||
struct TfaHeader hdr;
|
||||
char name[8]; // speaker nick name (e.g. “dumbo”)
|
||||
char vendor[16];
|
||||
char type[8];
|
||||
// dimensions (mm)
|
||||
uint8_t height;
|
||||
uint8_t width;
|
||||
uint8_t depth;
|
||||
uint16_t ohm;
|
||||
};
|
||||
|
||||
/*
|
||||
* speaker file
|
||||
*/
|
||||
#define TFA_SP_VERSION '1'
|
||||
#define TFA_SP_SUBVERSION "00"
|
||||
typedef struct TfaSpeakerFile {
|
||||
TfaHeader_t hdr;
|
||||
char name[8]; // speaker nick name (e.g. “dumbo”)
|
||||
char vendor[16];
|
||||
char type[8];
|
||||
// dimensions (mm)
|
||||
uint8_t height;
|
||||
uint8_t width;
|
||||
uint8_t depth;
|
||||
uint8_t ohm_primary;
|
||||
uint8_t ohm_secondary;
|
||||
uint8_t data[]; //payload TFA98XX_SPEAKERPARAMETER_LENGTH
|
||||
} TfaSpeakerFile_t;
|
||||
|
||||
#define TFA_VP3_VERSION '3'
|
||||
#define TFA_VP3_SUBVERSION "00"
|
||||
|
||||
struct TfaFWVer {
|
||||
uint8_t Major;
|
||||
uint8_t minor;
|
||||
uint8_t minor_update:6;
|
||||
uint8_t Update:2;
|
||||
};
|
||||
|
||||
struct TfaFWMsg {
|
||||
struct TfaFWVer fwVersion;
|
||||
struct TfaMsg payload;
|
||||
};
|
||||
|
||||
typedef struct TfaLiveData {
|
||||
char name[25];
|
||||
char addrs[25];
|
||||
int tracker;
|
||||
int scalefactor;
|
||||
} TfaLiveData_t;
|
||||
|
||||
#define TFA_SP3_VERSION '3'
|
||||
#define TFA_SP3_SUBVERSION "00"
|
||||
struct TfaSpeakerFileMax2 {
|
||||
TfaHeader_t hdr;
|
||||
char name[8]; // speaker nick name (e.g. “dumbo”)
|
||||
char vendor[16];
|
||||
char type[8];
|
||||
// dimensions (mm)
|
||||
uint8_t height;
|
||||
uint8_t width;
|
||||
uint8_t depth;
|
||||
uint8_t ohm_primary;
|
||||
uint8_t ohm_secondary;
|
||||
struct TfaFWMsg FWmsg; //payload including FW ver and Cmd ID
|
||||
};
|
||||
|
||||
/*
|
||||
* parameter container file
|
||||
*/
|
||||
/*
|
||||
* descriptors
|
||||
* Note 1: append new DescriptorType at the end
|
||||
* Note 2: add new descriptors to dsc_name[] in tfaContUtil.c
|
||||
*/
|
||||
typedef enum TfaDescriptorType {
|
||||
dscDevice, // device list
|
||||
dscProfile, // profile list
|
||||
dscRegister, // register patch
|
||||
dscString, // ascii, zero terminated string
|
||||
dscFile, // filename + file contents
|
||||
dscPatch, // patch file
|
||||
dscMarker, // marker to indicate end of a list
|
||||
dscMode,
|
||||
dscSetInputSelect,
|
||||
dscSetOutputSelect,
|
||||
dscSetProgramConfig,
|
||||
dscSetLagW,
|
||||
dscSetGains,
|
||||
dscSetvBatFactors,
|
||||
dscSetSensesCal,
|
||||
dscSetSensesDelay,
|
||||
dscBitfield,
|
||||
dscDefault, // used to reset bitfields to there default values
|
||||
dscLiveData,
|
||||
dscLiveDataString,
|
||||
dscGroup,
|
||||
dscCmd,
|
||||
dscSetMBDrc,
|
||||
dscFilter,
|
||||
dscNoInit,
|
||||
dscFeatures,
|
||||
dscCfMem, // coolflux memory x,y,io
|
||||
dscSetFwkUseCase,
|
||||
dscSetVddpConfig,
|
||||
dsc_last // trailer
|
||||
} TfaDescriptorType_t;
|
||||
|
||||
#define TFA_BITFIELDDSCMSK 0x7fffffff
|
||||
typedef struct TfaDescPtr {
|
||||
uint32_t offset:24;
|
||||
uint32_t type:8; // (== enum TfaDescriptorType, assure 8bits length)
|
||||
}TfaDescPtr_t;
|
||||
|
||||
/*
|
||||
* generic file descriptor
|
||||
*/
|
||||
typedef struct TfaFileDsc {
|
||||
TfaDescPtr_t name;
|
||||
uint32_t size; // file data length in bytes
|
||||
uint8_t data[]; //payload
|
||||
} TfaFileDsc_t;
|
||||
|
||||
|
||||
/*
|
||||
* device descriptor list
|
||||
*/
|
||||
typedef struct TfaDeviceList {
|
||||
uint8_t length; // nr of items in the list
|
||||
uint8_t bus; // bus
|
||||
uint8_t dev; // device
|
||||
uint8_t func; // subfunction or subdevice
|
||||
uint32_t devid; // device hw fw id
|
||||
TfaDescPtr_t name; // device name
|
||||
TfaDescPtr_t list[]; // items list
|
||||
} TfaDeviceList_t;
|
||||
|
||||
/*
|
||||
* profile descriptor list
|
||||
*/
|
||||
typedef struct TfaProfileList {
|
||||
uint32_t length:8; // nr of items in the list + name
|
||||
uint32_t group:8; // profile group number
|
||||
uint32_t ID:16; // profile ID
|
||||
TfaDescPtr_t name; // profile name
|
||||
TfaDescPtr_t list[]; // items list (lenght-1 items)
|
||||
} TfaProfileList_t;
|
||||
#define TFA_PROFID 0x1234
|
||||
|
||||
/*
|
||||
* livedata descriptor list
|
||||
*/
|
||||
typedef struct TfaLiveDataList {
|
||||
uint32_t length:8; // nr of items in the list
|
||||
uint32_t ID:24; // profile ID
|
||||
TfaDescPtr_t name; // livedata name
|
||||
TfaDescPtr_t list[]; // items list
|
||||
} TfaLiveDataList_t;
|
||||
#define TFA_LIVEDATAID 0x5678
|
||||
|
||||
/*
|
||||
* Bitfield descriptor
|
||||
*/
|
||||
typedef struct TfaBitfield {
|
||||
uint16_t value;
|
||||
uint16_t field; // ==datasheet defined, 16 bits
|
||||
} TfaBitfield_t;
|
||||
|
||||
/*
|
||||
* Bitfield enumuration bits descriptor
|
||||
*/
|
||||
typedef struct TfaBfEnum {
|
||||
unsigned int len:4; // this is the actual length-1
|
||||
unsigned int pos:4;
|
||||
unsigned int address:8;
|
||||
} TfaBfEnum_t;
|
||||
|
||||
/*
|
||||
* Register patch descriptor
|
||||
*/
|
||||
typedef struct TfaRegpatch {
|
||||
uint8_t address; // register address
|
||||
uint16_t value; // value to write
|
||||
uint16_t mask; // mask of bits to write
|
||||
} TfaRegpatch_t;
|
||||
|
||||
/*
|
||||
* Mode descriptor
|
||||
*/
|
||||
typedef struct TfaUseCase {
|
||||
int value; // mode value, maps to enum Tfa98xx_Mode
|
||||
} TfaMode_t;
|
||||
|
||||
/*
|
||||
* NoInit descriptor
|
||||
*/
|
||||
typedef struct TfaNoInit {
|
||||
uint8_t value; // noInit value
|
||||
} TfaNoInit_t;
|
||||
|
||||
/*
|
||||
* Features descriptor
|
||||
*/
|
||||
typedef struct TfaFeatures {
|
||||
uint16_t value[3]; // features value
|
||||
} TfaFeatures_t;
|
||||
|
||||
|
||||
/*
|
||||
* the container file
|
||||
* - the size field is 32bits long (generic=16)
|
||||
* - all char types are in ASCII
|
||||
*/
|
||||
#define TFA_PM_VERSION '1'
|
||||
#define TFA_PM3_VERSION '3'
|
||||
#define TFA_PM_SUBVERSION '1'
|
||||
typedef struct TfaContainer {
|
||||
char id[2]; // "XX" : XX=type
|
||||
char version[2]; // "V_" : V=version, vv=subversion
|
||||
char subversion[2]; // "vv" : vv=subversion
|
||||
uint32_t size; // data size in bytes following CRC
|
||||
uint32_t CRC; // 32-bits CRC for following data
|
||||
uint16_t rev; // "extra chars for rev nr"
|
||||
char customer[8]; // “name of customer”
|
||||
char application[8]; // “application name”
|
||||
char type[8]; // “application type name”
|
||||
uint16_t ndev; // "nr of device lists"
|
||||
uint16_t nprof; // "nr of profile lists"
|
||||
uint16_t nliveData; // "nr of livedata lists"
|
||||
TfaDescPtr_t index[]; // start of item index table
|
||||
} TfaContainer_t;
|
||||
|
||||
#pragma pack (pop)
|
||||
|
||||
#endif /* TFA98XXPARAMETERS_H_ */
|
||||
146
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_tfafieldnames.h
Executable file
146
techpack/audio/asoc/codecs/tfa9874/inc/tfa98xx_tfafieldnames.h
Executable file
|
|
@ -0,0 +1,146 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
typedef struct TfaBfName {
|
||||
unsigned short bfEnum;
|
||||
char *bfName;
|
||||
} tfaBfName_t;
|
||||
|
||||
typedef struct TfaIrqName {
|
||||
unsigned short irqEnum;
|
||||
char *irqName;
|
||||
} tfaIrqName_t;
|
||||
|
||||
#include "tfa1_tfafieldnames.h"
|
||||
#include "tfa2_tfafieldnames_N1C.h"
|
||||
/* diffs for specific devices */
|
||||
#include "tfa9887_tfafieldnames.h"
|
||||
#include "tfa9890_tfafieldnames.h"
|
||||
#include "tfa9891_tfafieldnames.h"
|
||||
#include "tfa9872_tfafieldnames.h"
|
||||
#include "tfa9912_tfafieldnames.h"
|
||||
#include "tfa9896_tfafieldnames.h"
|
||||
#include "tfa9873_tfafieldnames.h"
|
||||
#include "tfa9873_tfafieldnames_B0.h"
|
||||
#include "tfa9874_tfafieldnames.h"
|
||||
#include "tfa9878_tfafieldnames.h"
|
||||
#include "tfa9894_tfafieldnames.h"
|
||||
#include "tfa9894_tfafieldnames_N2.h"
|
||||
|
||||
/* missing 'common' defs break the build but unused in TFA1 context */
|
||||
#define TFA1_BF_AMPINSEL -1
|
||||
#define TFA1_BF_MANSCONF -1
|
||||
#define TFA1_BF_MANCOLD -1
|
||||
#define TFA1_BF_INTSMUTE -1
|
||||
#define TFA1_BF_CFSMR -1
|
||||
#define TFA1_BF_CFSML -1
|
||||
#define TFA1_BF_DCMCCAPI -1
|
||||
#define TFA1_BF_DCMCCSB -1
|
||||
#define TFA1_BF_USERDEF -1
|
||||
#define TFA1_BF_MANSTATE -1
|
||||
#define TFA1_BF_MANOPER -1
|
||||
#define TFA1_BF_REFCKSEL -1
|
||||
#define TFA1_BF_VOLSEC -1
|
||||
#define TFA1_BF_FRACTDEL -1
|
||||
#define TFA1_BF_ACKDMG -1
|
||||
#define TFA1_BF_SSRIGHTE -1
|
||||
#define TFA1_BF_SSLEFTE -1
|
||||
#define TFA1_BF_R25CL -1
|
||||
#define TFA1_BF_R25CR -1
|
||||
#define TFA1_BF_SWPROFIL 0x8045 /*!< profile save */
|
||||
#define TFA1_BF_SWVSTEP 0x80a5 /*!< vstep save */
|
||||
|
||||
/* missing 'common' defs break the build */
|
||||
#define TFA2_BF_CFSM -1
|
||||
|
||||
|
||||
/* MTP access uses registers
|
||||
* defs are derived from corresponding bitfield names as used in the BF macros
|
||||
*/
|
||||
#define MTPKEY2 MTPK /* unlock key2 MTPK */
|
||||
#define MTP0 MTPOTC /* MTP data */
|
||||
#define MTP_CONTROL CIMTP /* copy i2c to mtp */
|
||||
|
||||
/* interrupt enable register uses HW name in TFA2 */
|
||||
#define TFA2_BF_INTENVDDS TFA2_BF_IEVDDS
|
||||
|
||||
|
||||
/* TFA9891 specific bit field names */
|
||||
#define TFA1_BF_SAAMGAIN 0x2202
|
||||
#define TFA2_BF_SAAMGAIN -1
|
||||
|
||||
/* TFA9872 specific bit field names */
|
||||
#define TFA2_BF_IELP0 TFA9872_BF_IELP0
|
||||
#define TFA2_BF_ISTLP0 TFA9872_BF_ISTLP0
|
||||
#define TFA2_BF_IPOLP0 TFA9872_BF_IPOLP0
|
||||
#define TFA2_BF_IELP1 TFA9872_BF_IELP1
|
||||
#define TFA2_BF_ISTLP1 TFA9872_BF_ISTLP1
|
||||
#define TFA2_BF_IPOLP1 TFA9872_BF_IPOLP1
|
||||
#define TFA2_BF_LP0 TFA9872_BF_LP0
|
||||
#define TFA2_BF_LP1 TFA9872_BF_LP1
|
||||
#define TFA2_BF_R25C TFA9872_BF_R25C
|
||||
#define TFA2_BF_SAMMODE TFA9872_BF_SAMMODE
|
||||
|
||||
/* interrupt bit field names of TFA2 and TFA1 do not match */
|
||||
#define TFA1_BF_IEACS TFA1_BF_INTENACS
|
||||
#define TFA1_BF_IPOACS TFA1_BF_INTPOLACS
|
||||
#define TFA1_BF_ISTACS TFA1_BF_INTOACS
|
||||
#define TFA1_BF_ISTVDDS TFA1_BF_INTOVDDS
|
||||
#define TFA1_BF_ICLVDDS TFA1_BF_INTIVDDS
|
||||
#define TFA1_BF_IPOVDDS TFA1_BF_INTPOLVDDS
|
||||
#define TFA1_BF_IENOCLK TFA1_BF_INTENNOCLK
|
||||
#define TFA1_BF_ISTNOCLK TFA1_BF_INTONOCLK
|
||||
#define TFA1_BF_IPONOCLK TFA1_BF_INTPOLNOCLK
|
||||
|
||||
/* interrupt bit fields not available on TFA1 */
|
||||
#define TFA1_BF_IECLKOOR -1
|
||||
#define TFA1_BF_ISTCLKOOR -1
|
||||
#define TFA1_BF_IEMWSRC -1
|
||||
#define TFA1_BF_ISTMWSRC -1
|
||||
#define TFA1_BF_IPOMWSRC -1
|
||||
#define TFA1_BF_IEMWSMU -1
|
||||
#define TFA1_BF_ISTMWSMU -1
|
||||
#define TFA1_BF_IPOMWSMU -1
|
||||
#define TFA1_BF_IEMWCFC -1
|
||||
#define TFA1_BF_ISTMWCFC -1
|
||||
#define TFA1_BF_IPOMWCFC -1
|
||||
#define TFA1_BF_CLKOOR -1
|
||||
#define TFA1_BF_MANWAIT1 -1
|
||||
#define TFA1_BF_MANWAIT2 -1
|
||||
#define TFA1_BF_MANMUTE -1
|
||||
#define TFA1_BF_IPCLKOOR -1
|
||||
#define TFA1_BF_ICLCLKOOR -1
|
||||
#define TFA1_BF_IPOSWS -1
|
||||
#define TFA1_BF_IESWS -1
|
||||
#define TFA1_BF_ISTSWS -1
|
||||
#define TFA1_BF_IESPKS -1
|
||||
#define TFA1_BF_ISTSPKS -1
|
||||
#define TFA1_BF_IPOSPKS -1
|
||||
#define TFA1_BF_IECLKS -1
|
||||
#define TFA1_BF_ISTCLKS -1
|
||||
#define TFA1_BF_IPOCLKS -1
|
||||
#define TFA1_BF_IEAMPS -1
|
||||
#define TFA1_BF_ISTAMPS -1
|
||||
#define TFA1_BF_IPOAMPS -1
|
||||
#define TFA1_BF_IELP0 -1
|
||||
#define TFA1_BF_ISTLP0 -1
|
||||
#define TFA1_BF_IPOLP0 -1
|
||||
#define TFA1_BF_IELP1 -1
|
||||
#define TFA1_BF_ISTLP1 -1
|
||||
#define TFA1_BF_IPOLP1 -1
|
||||
#define TFA1_BF_LP0 -1
|
||||
#define TFA1_BF_LP1 -1
|
||||
#define TFA1_BF_R25C -1
|
||||
#define TFA1_BF_SAMMODE -1
|
||||
|
||||
/* TDM STATUS fields not available on TFA1 */
|
||||
#define TFA1_BF_TDMLUTER -1
|
||||
#define TFA1_BF_TDMERR -1
|
||||
1776
techpack/audio/asoc/codecs/tfa9874/inc/tfa9912_tfafieldnames.h
Executable file
1776
techpack/audio/asoc/codecs/tfa9874/inc/tfa9912_tfafieldnames.h
Executable file
File diff suppressed because it is too large
Load diff
359
techpack/audio/asoc/codecs/tfa9874/inc/tfa_container.h
Executable file
359
techpack/audio/asoc/codecs/tfa9874/inc/tfa_container.h
Executable file
|
|
@ -0,0 +1,359 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* tfaContainer.h
|
||||
*
|
||||
* Created on: Sep 11, 2013
|
||||
* Author: wim
|
||||
*/
|
||||
|
||||
#ifndef TFACONTAINER_H_
|
||||
#define TFACONTAINER_H_
|
||||
|
||||
/* static limits */
|
||||
#define TFACONT_MAXDEVS (4) /* maximum nr of devices */
|
||||
#define TFACONT_MAXPROFS (16) /* maximum nr of profiles */
|
||||
|
||||
#include "tfa98xx_parameters.h"
|
||||
|
||||
/**
|
||||
* Pass the container buffer, initialize and allocate internal memory.
|
||||
*
|
||||
* @param cnt pointer to the start of the buffer holding the container file
|
||||
* @param length of the data in bytes
|
||||
* @return
|
||||
* - tfa_error_ok if normal
|
||||
* - tfa_error_container invalid container data
|
||||
* - tfa_error_bad_param invalid parameter
|
||||
*
|
||||
*/
|
||||
enum tfa_error tfa_load_cnt(void *cnt, int length);
|
||||
|
||||
/**
|
||||
* Return the descriptor string
|
||||
* @param cnt pointer to the container struct
|
||||
* @param dsc pointer to Tfa descriptor
|
||||
* @return descriptor string
|
||||
*/
|
||||
char *tfaContGetString(TfaContainer_t *cnt, TfaDescPtr_t *dsc);
|
||||
|
||||
/**
|
||||
* Gets the string for the given command type number
|
||||
* @param type number representing a command
|
||||
* @return string of a command
|
||||
*/
|
||||
char *tfaContGetCommandString(uint32_t type);
|
||||
|
||||
/**
|
||||
* get the device type from the patch in this devicelist
|
||||
* - find the patch file for this devidx
|
||||
* - return the devid from the patch or 0 if not found
|
||||
* @param cnt pointer to container file
|
||||
* @param dev_idx device index
|
||||
* @return descriptor string
|
||||
*/
|
||||
int tfa_cnt_get_devid(TfaContainer_t *cnt, int dev_idx);
|
||||
|
||||
/**
|
||||
* Get the slave for the device if it exists.
|
||||
* @param tfa the device struct pointer
|
||||
* @param slave_addr the index of the device
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContGetSlave(struct tfa_device *tfa, uint8_t *slave_addr);
|
||||
|
||||
void tfaContSetSlave(uint8_t slave_addr);
|
||||
|
||||
/**
|
||||
* Get the index for a skave address.
|
||||
* @param tfa the device struct pointer
|
||||
* @return the device index
|
||||
*/
|
||||
int tfa_cont_get_idx(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Write reg and bitfield items in the devicelist to the target.
|
||||
* @param tfa the device struct pointer
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteRegsDev(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Write reg and bitfield items in the profilelist to the target.
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx the profile index
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteRegsProf(struct tfa_device *tfa, int prof_idx);
|
||||
|
||||
/**
|
||||
* Write a patchfile in the devicelist to the target.
|
||||
* @param tfa the device struct pointer
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWritePatch(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Write all param files in the devicelist to the target.
|
||||
* @param tfa the device struct pointer
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteFiles(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Get sample rate from passed profile index
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx the index of the profile
|
||||
* @return sample rate value
|
||||
*/
|
||||
unsigned int tfa98xx_get_profile_sr(struct tfa_device *tfa, unsigned int prof_idx);
|
||||
|
||||
/**
|
||||
* Get the device name string
|
||||
* @param cnt the pointer to the container struct
|
||||
* @param dev_idx the index of the device
|
||||
* @return device name string or error string if not found
|
||||
*/
|
||||
char *tfaContDeviceName(TfaContainer_t *cnt, int dev_idx);
|
||||
|
||||
/**
|
||||
* Get the application name from the container file application field
|
||||
* @param tfa the device struct pointer
|
||||
* @param name the input stringbuffer with size: sizeof(application field)+1
|
||||
* @return actual string length
|
||||
*/
|
||||
int tfa_cnt_get_app_name(struct tfa_device *tfa, char *name);
|
||||
|
||||
/**
|
||||
* Get profile index of the calibration profile
|
||||
* @param tfa the device struct pointer
|
||||
* @return profile index, -2 if no calibration profile is found or -1 on error
|
||||
*/
|
||||
int tfaContGetCalProfile(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Is the profile a tap profile ?
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx the index of the profile
|
||||
* @return 1 if the profile is a tap profile or 0 if not
|
||||
*/
|
||||
int tfaContIsTapProfile(struct tfa_device *tfa, int prof_idx);
|
||||
|
||||
/**
|
||||
* Get the name of the profile at certain index for a device in the container file
|
||||
* @param cnt the pointer to the container struct
|
||||
* @param dev_idx the index of the device
|
||||
* @param prof_idx the index of the profile
|
||||
* @return profile name string or error string if not found
|
||||
*/
|
||||
char *tfaContProfileName(TfaContainer_t *cnt, int dev_idx, int prof_idx);
|
||||
|
||||
/**
|
||||
* Process all items in the profilelist
|
||||
* NOTE an error return during processing will leave the device muted
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx index of the profile
|
||||
* @param vstep_idx index of the vstep
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteProfile(struct tfa_device *tfa, int prof_idx, int vstep_idx);
|
||||
|
||||
/**
|
||||
* Specify the speaker configurations (cmd id) (Left, right, both, none)
|
||||
* @param dev_idx index of the device
|
||||
* @param configuration name string of the configuration
|
||||
*/
|
||||
void tfa98xx_set_spkr_select(int dev_idx, char *configuration);
|
||||
|
||||
enum Tfa98xx_Error tfa_cont_write_filterbank(struct tfa_device *tfa, TfaFilter_t *filter);
|
||||
|
||||
/**
|
||||
* Write all param files in the profilelist to the target
|
||||
* this is used during startup when maybe ACS is set
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx the index of the profile
|
||||
* @param vstep_idx the index of the vstep
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteFilesProf(struct tfa_device *tfa, int prof_idx, int vstep_idx);
|
||||
enum Tfa98xx_Error tfaContWriteFilesVstep(struct tfa_device *tfa, int prof_idx, int vstep_idx);
|
||||
enum Tfa98xx_Error tfaContWriteDrcFile(struct tfa_device *tfa, int size, uint8_t data[]);
|
||||
|
||||
/**
|
||||
* Get the device list dsc from the tfaContainer
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @param dev_idx the index of the device
|
||||
* @return device list pointer
|
||||
*/
|
||||
TfaDeviceList_t *tfaContGetDevList(TfaContainer_t *cont, int dev_idx);
|
||||
|
||||
/**
|
||||
* Get the Nth profile for the Nth device
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @param dev_idx the index of the device
|
||||
* @param prof_idx the index of the profile
|
||||
* @return profile list pointer
|
||||
*/
|
||||
TfaProfileList_t *tfaContGetDevProfList(TfaContainer_t *cont, int dev_idx, int prof_idx);
|
||||
|
||||
/**
|
||||
* Get the number of profiles for device from contaienr
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @param dev_idx the index of the device
|
||||
* @return device list pointer
|
||||
*/
|
||||
int tfa_cnt_get_dev_nprof(struct tfa_device *tfa);
|
||||
|
||||
|
||||
/**
|
||||
* Get the Nth livedata for the Nth device
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @param dev_idx the index of the device
|
||||
* @param livedata_idx the index of the livedata
|
||||
* @return livedata list pointer
|
||||
*/
|
||||
TfaLiveDataList_t *tfaContGetDevLiveDataList(TfaContainer_t *cont, int dev_idx, int livedata_idx);
|
||||
|
||||
/**
|
||||
* Check CRC for container
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @return error value 0 on error
|
||||
*/
|
||||
int tfaContCrcCheckContainer(TfaContainer_t *cont);
|
||||
|
||||
/**
|
||||
* Get the device list pointer
|
||||
* @param cnt pointer to the container struct
|
||||
* @param dev_idx the index of the device
|
||||
* @return pointer to device list
|
||||
*/
|
||||
TfaDeviceList_t *tfaContDevice(TfaContainer_t *cnt, int dev_idx);
|
||||
|
||||
/**
|
||||
* Return the pointer to the first profile in a list from the tfaContainer
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @return pointer to first profile in profile list
|
||||
*/
|
||||
TfaProfileList_t *tfaContGet1stProfList(TfaContainer_t *cont);
|
||||
|
||||
/**
|
||||
* Return the pointer to the next profile in a list
|
||||
* @param prof is the pointer to the profile list
|
||||
* @return profile list pointer
|
||||
*/
|
||||
TfaProfileList_t* tfaContNextProfile(TfaProfileList_t *prof);
|
||||
|
||||
/**
|
||||
* Return the pointer to the first livedata in a list from the tfaContainer
|
||||
* @param cont pointer to the tfaContainer
|
||||
* @return pointer to first livedata in profile list
|
||||
*/
|
||||
TfaLiveDataList_t *tfaContGet1stLiveDataList(TfaContainer_t *cont);
|
||||
|
||||
/**
|
||||
* Return the pointer to the next livedata in a list
|
||||
* @param livedata_idx is the pointer to the livedata list
|
||||
* @return livedata list pointer
|
||||
*/
|
||||
TfaLiveDataList_t* tfaContNextLiveData(TfaLiveDataList_t *livedata_idx);
|
||||
|
||||
/**
|
||||
* Write a bit field
|
||||
* @param tfa the device struct pointer
|
||||
* @param bf bitfield to write
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaRunWriteBitfield(struct tfa_device *tfa, TfaBitfield_t bf);
|
||||
|
||||
/**
|
||||
* Write a parameter file to the device
|
||||
* @param tfa the device struct pointer
|
||||
* @param file filedescriptor pointer
|
||||
* @param vstep_idx index to vstep
|
||||
* @param vstep_msg_idx index to vstep message
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaContWriteFile(struct tfa_device *tfa, TfaFileDsc_t *file, int vstep_idx, int vstep_msg_idx);
|
||||
|
||||
/**
|
||||
* Get the max volume step associated with Nth profile for the Nth device
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx profile index
|
||||
* @return the number of vsteps
|
||||
*/
|
||||
int tfacont_get_max_vstep(struct tfa_device *tfa, int prof_idx);
|
||||
|
||||
/**
|
||||
* Get the file contents associated with the device or profile
|
||||
* Search within the device tree, if not found, search within the profile
|
||||
* tree. There can only be one type of file within profile or device.
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx I2C profile index in the device
|
||||
* @param type file type
|
||||
* @return 0 NULL if file type is not found
|
||||
* @return 1 file contents
|
||||
*/
|
||||
TfaFileDsc_t *tfacont_getfiledata(struct tfa_device *tfa, int prof_idx, enum TfaHeaderType type);
|
||||
|
||||
/**
|
||||
* Dump the contents of the file header
|
||||
* @param hdr pointer to file header data
|
||||
*/
|
||||
void tfaContShowHeader(TfaHeader_t *hdr);
|
||||
|
||||
/**
|
||||
* Read a bit field
|
||||
* @param tfa the device struct pointer
|
||||
* @param bf bitfield to read out
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfaRunReadBitfield(struct tfa_device *tfa, TfaBitfield_t *bf);
|
||||
|
||||
/**
|
||||
* Get hw feature bits from container file
|
||||
* @param tfa the device struct pointer
|
||||
* @param hw_feature_register pointer to where hw features are stored
|
||||
*/
|
||||
void get_hw_features_from_cnt(struct tfa_device *tfa, int *hw_feature_register);
|
||||
|
||||
/**
|
||||
* Get sw feature bits from container file
|
||||
* @param tfa the device struct pointer
|
||||
* @param sw_feature_register pointer to where sw features are stored
|
||||
*/
|
||||
void get_sw_features_from_cnt(struct tfa_device *tfa, int sw_feature_register[2]);
|
||||
|
||||
/**
|
||||
* Factory trimming for the Boost converter
|
||||
* check if there is a correction needed
|
||||
* @param tfa the device struct pointer
|
||||
*/
|
||||
enum Tfa98xx_Error tfa98xx_factory_trimmer(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Search for filters settings and if found then write them to the device
|
||||
* @param tfa the device struct pointer
|
||||
* @param prof_idx profile to look in
|
||||
* @return Tfa98xx_Error
|
||||
*/
|
||||
enum Tfa98xx_Error tfa_set_filters(struct tfa_device *tfa, int prof_idx);
|
||||
|
||||
/**
|
||||
* Get the firmware version from the patch in the container file
|
||||
* @param tfa the device struct pointer
|
||||
* @return firmware version
|
||||
*/
|
||||
int tfa_cnt_get_patch_version(struct tfa_device *tfa);
|
||||
|
||||
int tfa_tib_dsp_msgmulti(struct tfa_device *tfa, int length, const char *buffer);
|
||||
|
||||
#endif /* TFACONTAINER_H_ */
|
||||
311
techpack/audio/asoc/codecs/tfa9874/inc/tfa_device.h
Executable file
311
techpack/audio/asoc/codecs/tfa9874/inc/tfa_device.h
Executable file
|
|
@ -0,0 +1,311 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/**\file
|
||||
*
|
||||
* The tfa_device interface controls a single I2C device instance by
|
||||
* referencing to the device specific context provided by means of the
|
||||
* tfa_device structure pointer.
|
||||
* Multiple instances of tfa_device structures will be created and maintained
|
||||
* by the caller.
|
||||
*
|
||||
* The API is functionally grouped as:
|
||||
* - tfa_dev basic codec interface to probe, start/stop and control the device state
|
||||
* - access to internal MTP storage
|
||||
* - abstraction for interrupt bits and handling
|
||||
* - container reading support
|
||||
*/
|
||||
#ifndef __TFA_DEVICE_H__
|
||||
#define __TFA_DEVICE_H__
|
||||
|
||||
#include "config.h"
|
||||
|
||||
struct tfa_device;
|
||||
|
||||
/*
|
||||
* hw/sw feature bit settings in MTP
|
||||
*/
|
||||
enum featureSupport {
|
||||
supportNotSet, /**< default means not set yet */
|
||||
supportNo, /**< no support */
|
||||
supportYes /**< supported */
|
||||
};
|
||||
/*
|
||||
* supported Digital Audio Interfaces bitmap
|
||||
*/
|
||||
enum Tfa98xx_DAI {
|
||||
Tfa98xx_DAI_I2S = 0x01, /**< I2S only */
|
||||
Tfa98xx_DAI_TDM = 0x02, /**< TDM, I2S */
|
||||
Tfa98xx_DAI_PDM = 0x04, /**< PDM */
|
||||
};
|
||||
|
||||
/*
|
||||
* device ops function structure
|
||||
*/
|
||||
struct tfa_device_ops {
|
||||
enum Tfa98xx_Error(*dsp_msg)(struct tfa_device *tfa, int length, const char *buf);
|
||||
enum Tfa98xx_Error(*dsp_msg_read)(struct tfa_device *tfa, int length, unsigned char *bytes);
|
||||
enum Tfa98xx_Error(*reg_read)(struct tfa_device *tfa, unsigned char subaddress, unsigned short *value);
|
||||
enum Tfa98xx_Error(*reg_write)(struct tfa_device *tfa, unsigned char subaddress, unsigned short value);
|
||||
enum Tfa98xx_Error(*mem_read)(struct tfa_device *tfa, unsigned int start_offset, int num_words, int *pValues);
|
||||
enum Tfa98xx_Error(*mem_write)(struct tfa_device *tfa, unsigned short address, int value, int memtype);
|
||||
|
||||
enum Tfa98xx_Error (*tfa_init)(struct tfa_device *tfa); /**< init typically for loading optimal settings */
|
||||
enum Tfa98xx_Error (*dsp_reset)(struct tfa_device *tfa, int state); /**< reset the coolflux dsp */
|
||||
enum Tfa98xx_Error (*dsp_system_stable)(struct tfa_device *tfa, int *ready); /**< ready when clocks are stable to allow DSP subsystem access */
|
||||
enum Tfa98xx_Error (*dsp_write_tables)(struct tfa_device *tfa, int sample_rate); /**< write the device/type specific delaytables */
|
||||
enum Tfa98xx_Error (*auto_copy_mtp_to_iic)(struct tfa_device *tfa); /**< Set auto_copy_mtp_to_iic */
|
||||
enum Tfa98xx_Error (*factory_trimmer)(struct tfa_device *tfa); /**< Factory trimming for the Boost converter */
|
||||
int (*set_swprof)(struct tfa_device *tfa, unsigned short new_value); /**< Set the sw profile in the struct and the hw register */
|
||||
int (*get_swprof)(struct tfa_device *tfa); /**< Get the sw profile from the hw register */
|
||||
int(*set_swvstep)(struct tfa_device *tfa, unsigned short new_value); /**< Set the sw vstep in the struct and the hw register */
|
||||
int(*get_swvstep)(struct tfa_device *tfa); /**< Get the sw vstep from the hw register */
|
||||
int(*get_mtpb)(struct tfa_device *tfa); /**< get status of MTB busy bit*/
|
||||
enum Tfa98xx_Error (*set_mute)(struct tfa_device *tfa, int mute); /**< set mute */
|
||||
enum Tfa98xx_Error (*faim_protect)(struct tfa_device *tfa, int state); /**< Protect FAIM from being corrupted */
|
||||
enum Tfa98xx_Error(*set_osc_powerdown)(struct tfa_device *tfa, int state); /**< Allow to change internal osc. gating settings */
|
||||
enum Tfa98xx_Error(*update_lpm)(struct tfa_device *tfa, int state); /**< Allow to change lowpowermode settings */
|
||||
};
|
||||
|
||||
/**
|
||||
* Device states and modifier flags to allow a device/type independent fine
|
||||
* grained control of the internal state.\n
|
||||
* Values below 0x10 are referred to as base states which can be or-ed with
|
||||
* state modifiers, from 0x10 and higher.
|
||||
*
|
||||
*/
|
||||
enum tfa_state {
|
||||
TFA_STATE_UNKNOWN, /**< unknown or invalid */
|
||||
TFA_STATE_POWERDOWN, /**< PLL in powerdown, Algo is up/warm */
|
||||
TFA_STATE_INIT_HW, /**< load I2C/PLL hardware setting (~wait2srcsettings) */
|
||||
TFA_STATE_INIT_CF, /**< coolflux HW access possible (~initcf) */
|
||||
TFA_STATE_INIT_FW, /**< DSP framework active (~patch loaded) */
|
||||
TFA_STATE_OPERATING, /**< Amp and Algo running */
|
||||
TFA_STATE_FAULT, /**< An alarm or error occurred */
|
||||
TFA_STATE_RESET, /**< I2C reset and ACS set */
|
||||
/* --sticky state modifiers-- */
|
||||
TFA_STATE_MUTE=0x10, /**< Algo & Amp mute */
|
||||
TFA_STATE_UNMUTE=0x20, /**< Algo & Amp unmute */
|
||||
TFA_STATE_CLOCK_ALWAYS=0x40, /**< PLL connect to internal oscillator */
|
||||
TFA_STATE_CLOCK_AUDIO=0x80, /**< PLL connect to audio clock (BCK/FS) */
|
||||
TFA_STATE_LOW_POWER=0x100, /**< lowest possible power state */
|
||||
};
|
||||
|
||||
/**
|
||||
* This is the main tfa device context structure, it will carry all information
|
||||
* that is needed to handle a single I2C device instance.
|
||||
* All functions dealing with the device will need access to the fields herein.
|
||||
*/
|
||||
struct tfa_device {
|
||||
int dev_idx; /**< device container index */
|
||||
int in_use;
|
||||
int buffer_size; /**< lowest level max buffer size */
|
||||
int has_msg; /**< support direct dsp messaging */
|
||||
int dynamicTDMmode; /**tracking dynamic TDM setting from alsa input stream*/
|
||||
int bitwidth; /**bitwdith from alsa input stream*/
|
||||
unsigned char slave_address; /**< I2C slave address (not shifted) */
|
||||
unsigned short rev; /**< full revid of this device */
|
||||
unsigned char tfa_family; /**< tfa1/tfa2 */
|
||||
enum featureSupport supportDrc;
|
||||
enum featureSupport supportFramework;
|
||||
enum featureSupport support_saam;
|
||||
int sw_feature_bits[2]; /**< cached copy of sw feature bits */
|
||||
int hw_feature_bits; /**< cached copy of hw feature bits */
|
||||
int profile; /**< active profile */
|
||||
int vstep; /**< active vstep */
|
||||
unsigned char spkr_count;
|
||||
unsigned char spkr_select;
|
||||
unsigned char support_tcoef;/**< legacy tfa9887, will be removed */
|
||||
enum Tfa98xx_DAI daimap; /**< supported audio interface types */
|
||||
int mohm[3]; /**< speaker calibration values in milli ohms -1 is error */
|
||||
struct tfa_device_ops dev_ops;
|
||||
uint16_t interrupt_enable[3];
|
||||
uint16_t interrupt_status[3];
|
||||
int ext_dsp; /**< respond to external DSP: -1:none, 0:no_dsp, 1:cold, 2:warm */
|
||||
int bus; /* TODO fix ext_dsp and bus handling */
|
||||
int tfadsp_event; /**< enum tfadsp_event_en is for external registry */
|
||||
int verbose; /**< verbosity level for debug print output */
|
||||
enum tfa_state state; /**< last known state or-ed with optional state_modifier */
|
||||
struct TfaContainer *cnt;/**< the loaded container file */
|
||||
struct TfaVolumeStepRegisterInfo *p_regInfo; /**< remember vstep for partial updates */
|
||||
int partial_enable; /**< enable partial updates */
|
||||
void *data; /**< typically pointing to Linux driver structure owning this device */
|
||||
int convert_dsp32; /**< convert 24 bit DSP messages to 32 bit */
|
||||
int sync_iv_delay; /**< synchronize I/V delay at cold start */
|
||||
int is_probus_device; /**< probus device: device without internal DSP */
|
||||
int advance_keys_handling;
|
||||
int needs_reset; /**< add the reset trigger for SetAlgoParams and SetMBDrc commands */
|
||||
struct kmem_cache *cachep; /**< Memory allocator handle */
|
||||
char fw_itf_ver[4]; /* Firmware ITF version */
|
||||
};
|
||||
|
||||
/**
|
||||
* The tfa_dev_probe is called before accessing any device accessing functions.
|
||||
* Access to the tfa device register 3 is attempted and will record the
|
||||
* returned id for further use. If no device responds the function will abort.
|
||||
* The recorded id will by used by the query functions to fill the remaining
|
||||
* relevant data fields of the device structure.
|
||||
* Data such as MTP features that requires device access will only be read when
|
||||
* explicitly called and the result will be then cached in the struct.
|
||||
*
|
||||
* A structure pointer passed to this device needs to refer to existing memory
|
||||
* space allocated by the caller.
|
||||
*
|
||||
* @param slave = I2C slave address of the target device (not shifted)
|
||||
* @param tfa struct = points to memory that holds the context for this device
|
||||
* instance
|
||||
*
|
||||
* @return
|
||||
* - 0 if the I2C device responded to a read of register address 3\n
|
||||
* when the device responds but with an unknown id a warning will be printed
|
||||
* - -1 if no response from the I2C device
|
||||
*
|
||||
*/
|
||||
int tfa_dev_probe(int slave, struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Start this instance at the profile and vstep as provided.
|
||||
* The profile and vstep will be loaded first in case the current value differs
|
||||
* from the requested values.
|
||||
* Note that this call will not change the mute state of the tfa, which means
|
||||
* that of this instance was called in muted state the caller will have to
|
||||
* unmute in order to get audio.
|
||||
*
|
||||
* @param tfa struct = pointer to context of this device instance
|
||||
* @param profile the selected profile to run
|
||||
* @param vstep the selected vstep to use
|
||||
* @return tfa_error enum
|
||||
*/
|
||||
enum tfa_error tfa_dev_start(struct tfa_device *tfa, int profile, int vstep);
|
||||
|
||||
|
||||
/**
|
||||
* Stop audio for this instance as gracefully as possible.
|
||||
* Audio will be muted and the PLL will be shutdown together with any other
|
||||
* device/type specific settings needed to prevent audio artifacts or
|
||||
* workarounds.
|
||||
*
|
||||
* Note that this call will change state of the tfa to mute and powered down.
|
||||
*
|
||||
* @param tfa struct = pointer to context of this device instance
|
||||
* @return tfa_error enum
|
||||
*/
|
||||
enum tfa_error tfa_dev_stop(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* This interface allows a device/type independent fine grained control of the
|
||||
* internal state of the instance.
|
||||
* Whenever a base state is requested an attempt is made to actively bring the device
|
||||
* into this state. However this may depend on external conditions beyond control of
|
||||
* this software layer. Therefore in case the state cannot be set an erro will
|
||||
* be returned and the current state remains unchanged.
|
||||
* The base states, lower values below 0x10, are all mutually exclusive, they higher ones
|
||||
* can also function as a sticky modifier which means for example that operating
|
||||
* state could be in either muted or unmuted state. Or in case of init_cf it can be
|
||||
* internal clock (always) or external audio clock.
|
||||
* This function is intended to be used for device mute/unmute synchronization
|
||||
* when called from higher layers. Mostly internal calls will use this to control
|
||||
* the startup and profile transitions in a device/type independent way.
|
||||
*
|
||||
* @param tfa struct = pointer to context of this device instance
|
||||
* @param state struct = desired device state after function return
|
||||
* @return tfa_error enum
|
||||
*/
|
||||
enum tfa_error tfa_dev_set_state(struct tfa_device *tfa, enum tfa_state state,int is_calibration);
|
||||
|
||||
/**
|
||||
* Retrieve the current state of this instance in an active way.
|
||||
* The state field in tfa structure will reflect the result unless an error is
|
||||
* returned.
|
||||
* Note that the hardware state may change on external events an as such this
|
||||
* field should be treated as volatile.
|
||||
*
|
||||
* @param tfa struct = pointer to context of this device instance
|
||||
* @return tfa_error enum
|
||||
*
|
||||
*/
|
||||
enum tfa_state tfa_dev_get_state(struct tfa_device *tfa);
|
||||
|
||||
/**
|
||||
* Deduce the width from machine driver and decide TDM setting to be
|
||||
* programmed to the TFA amplifier dynamically
|
||||
* @param tfa struct = pointer to context of this device instance
|
||||
* @param width = parmeters read from top layer to decide the applicable TDM settings
|
||||
* @return tfa_error enum
|
||||
- 0 if the width received is correct (16/32/24)
|
||||
* - others if width received is not correct
|
||||
*/
|
||||
int tfa_dev_set_tdm_bitwidth(struct tfa_device *tfa, int width);
|
||||
/*****************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
* MTP support functions
|
||||
*/
|
||||
enum tfa_mtp {
|
||||
TFA_MTP_OTC, /**< */
|
||||
TFA_MTP_EX, /**< */
|
||||
TFA_MTP_RE25, /**< */
|
||||
TFA_MTP_RE25_PRIM, /**< */
|
||||
TFA_MTP_RE25_SEC, /**< */
|
||||
TFA_MTP_LOCK, /**< */
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
int tfa_dev_mtp_get(struct tfa_device *tfa, enum tfa_mtp item);
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
enum tfa_error tfa_dev_mtp_set(struct tfa_device *tfa, enum tfa_mtp item, int value);
|
||||
|
||||
|
||||
//irq
|
||||
/* tfa2 interrupt support
|
||||
* !!! enum tfa9912_irq !!!*/
|
||||
/*
|
||||
* interrupt bit function to clear
|
||||
*/
|
||||
int tfa_irq_clear(struct tfa_device *tfa, int bit);
|
||||
/*
|
||||
* return state of irq or -1 if illegal bit
|
||||
*/
|
||||
int tfa_irq_get(struct tfa_device *tfa, int bit);
|
||||
/*
|
||||
* interrupt bit function that operates on the shadow regs in the handle
|
||||
*/
|
||||
int tfa_irq_ena(struct tfa_device *tfa, int bit, int state);
|
||||
/*
|
||||
* interrupt bit function that sets the polarity
|
||||
*/
|
||||
int tfa_irq_set_pol(struct tfa_device *tfa, int bit, int state);
|
||||
|
||||
/*
|
||||
* mask interrupts by disabling them
|
||||
*/
|
||||
int tfa_irq_mask(struct tfa_device *tfa);
|
||||
/*
|
||||
* unmask interrupts by enabling them again
|
||||
*/
|
||||
int tfa_irq_unmask(struct tfa_device *tfa);
|
||||
//cnt read
|
||||
//debug?
|
||||
|
||||
/* IRQ handle for tfa987x device */
|
||||
int tfa987x_irq_enable(struct tfa_device *tfa, int bit, int status);
|
||||
void tfa987x_irq_mask(struct tfa_device *tfa);
|
||||
void tfa987x_irq_unmask(struct tfa_device *tfa);
|
||||
int tfa987x_irq_clear(struct tfa_device *tfa, int bit);
|
||||
int tfa987x_irq_handle(struct tfa_device *tfa);
|
||||
|
||||
#endif /* __TFA_DEVICE_H__ */
|
||||
|
||||
162
techpack/audio/asoc/codecs/tfa9874/inc/tfa_dsp_fw.h
Executable file
162
techpack/audio/asoc/codecs/tfa9874/inc/tfa_dsp_fw.h
Executable file
|
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef TFA98XX_INTERNALS_H
|
||||
#define TFA98XX_INTERNALS_H
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include "tfa_service.h" //TODO cleanup for enum Tfa98xx_Status_ID
|
||||
/*
|
||||
* tfadsp_fw_api.c
|
||||
*/
|
||||
/**
|
||||
* Return a text version of the firmware status ID code
|
||||
* @param status the given status ID code
|
||||
* @return the firmware status ID string
|
||||
*/
|
||||
const char *tfadsp_fw_status_string(enum Tfa98xx_Status_ID status);
|
||||
int tfadsp_fw_start(struct tfa_device *tfa, int prof_idx, int vstep_idx);
|
||||
int tfadsp_fw_get_api_version(struct tfa_device *tfa, uint8_t *buffer);
|
||||
#define FW_MAXTAG 150
|
||||
int tfadsp_fw_get_tag(struct tfa_device *tfa, uint8_t *buffer);
|
||||
int tfadsp_fw_get_status_change(struct tfa_device *tfa, uint8_t *buffer);
|
||||
int tfadsp_fw_set_re25(struct tfa_device *tfa, int prim, int sec );
|
||||
int tfadsp_fw_get_re25(struct tfa_device *tfa, uint8_t *buffer);
|
||||
|
||||
/*
|
||||
* the order matches the ACK bits order in TFA98XX_CF_STATUS
|
||||
*/
|
||||
enum tfa_fw_event { /* not all available on each device */
|
||||
tfa_fw_i2c_cmd_ack,
|
||||
tfa_fw_reset_start,
|
||||
tfa_fw_short_on_mips,
|
||||
tfa_fw_soft_mute_ready,
|
||||
tfa_fw_volume_ready,
|
||||
tfa_fw_error_damage,
|
||||
tfa_fw_calibrate_done,
|
||||
tfa_fw_max
|
||||
};
|
||||
|
||||
/* the following type mappings are compiler specific */
|
||||
#define subaddress_t unsigned char
|
||||
|
||||
/* module Ids */
|
||||
#define MODULE_FRAMEWORK 0
|
||||
#define MODULE_SPEAKERBOOST 1
|
||||
#define MODULE_BIQUADFILTERBANK 2
|
||||
#define MODULE_TAPTRIGGER 5
|
||||
#define MODULE_SETRE 9
|
||||
|
||||
/* RPC commands */
|
||||
/* SET */
|
||||
#define FW_PAR_ID_SET_MEMORY 0x03
|
||||
#define FW_PAR_ID_SET_SENSES_DELAY 0x04
|
||||
#define FW_PAR_ID_SETSENSESCAL 0x05
|
||||
#define FW_PAR_ID_SET_INPUT_SELECTOR 0x06
|
||||
#define FW_PAR_ID_SET_OUTPUT_SELECTOR 0x08
|
||||
#define FW_PAR_ID_SET_PROGRAM_CONFIG 0x09
|
||||
#define FW_PAR_ID_SET_GAINS 0x0A
|
||||
#define FW_PAR_ID_SET_MEMTRACK 0x0B
|
||||
#define FW_PAR_ID_SET_FWKUSECASE 0x11
|
||||
#define TFA1_FW_PAR_ID_SET_CURRENT_DELAY 0x03
|
||||
#define TFA1_FW_PAR_ID_SET_CURFRAC_DELAY 0x06
|
||||
/* GET */
|
||||
#define FW_PAR_ID_GET_MEMORY 0x83
|
||||
#define FW_PAR_ID_GLOBAL_GET_INFO 0x84
|
||||
#define FW_PAR_ID_GET_FEATURE_INFO 0x85
|
||||
#define FW_PAR_ID_GET_MEMTRACK 0x8B
|
||||
#define FW_PAR_ID_GET_TAG 0xFF
|
||||
#define FW_PAR_ID_GET_API_VERSION 0xFE
|
||||
#define FW_PAR_ID_GET_STATUS_CHANGE 0x8D
|
||||
|
||||
/* Load a full model into SpeakerBoost. */
|
||||
/* SET */
|
||||
#define SB_PARAM_SET_ALGO_PARAMS 0x00
|
||||
#define SB_PARAM_SET_LAGW 0x01
|
||||
#define SB_PARAM_SET_ALGO_PARAMS_WITHOUT_RESET 0x02
|
||||
#define SB_PARAM_SET_RE25C 0x05
|
||||
#define SB_PARAM_SET_LSMODEL 0x06
|
||||
#define SB_PARAM_SET_MBDRC 0x07
|
||||
#define SB_PARAM_SET_MBDRC_WITHOUT_RESET 0x08
|
||||
#define SB_PARAM_SET_EXCURSION_FILTERS 0x0A
|
||||
#define SB_PARAM_SET_DRC 0x0F
|
||||
/* GET */
|
||||
#define SB_PARAM_GET_ALGO_PARAMS 0x80
|
||||
#define SB_PARAM_GET_LAGW 0x81
|
||||
#define SB_PARAM_GET_RE25C 0x85
|
||||
#define SB_PARAM_GET_LSMODEL 0x86
|
||||
#define SB_PARAM_GET_MBDRC 0x87
|
||||
#define SB_PARAM_GET_MBDRC_DYNAMICS 0x89
|
||||
#define SB_PARAM_GET_EXCURSION_FILTERS 0x8A
|
||||
#define SB_PARAM_GET_TAG 0xFF
|
||||
|
||||
#define SB_PARAM_SET_EQ 0x0A /* 2 Equaliser Filters. */
|
||||
#define SB_PARAM_SET_PRESET 0x0D /* Load a preset */
|
||||
#define SB_PARAM_SET_CONFIG 0x0E /* Load a config */
|
||||
#define SB_PARAM_SET_AGCINS 0x10
|
||||
#define SB_PARAM_SET_CURRENT_DELAY 0x03
|
||||
#define SB_PARAM_GET_STATE 0xC0
|
||||
#define SB_PARAM_GET_XMODEL 0xC1 /* Gets current Excursion Model. */
|
||||
#define SB_PARAM_GET_XMODEL_COEFFS 0x8C /* Get coefficients for XModel */
|
||||
#define SB_PARAM_GET_EXCURSION_FILTERS 0x8A /* Get excursion filters */
|
||||
#define SB_PARAM_SET_EXCURSION_FILTERS 0x0A /* Set excursion filters */
|
||||
|
||||
/* SET: TAPTRIGGER */
|
||||
#define TAP_PARAM_SET_ALGO_PARAMS 0x01
|
||||
#define TAP_PARAM_SET_DECIMATION_PARAMS 0x02
|
||||
|
||||
/* GET: TAPTRIGGER*/
|
||||
#define TAP_PARAM_GET_ALGO_PARAMS 0x81
|
||||
#define TAP_PARAM_GET_TAP_RESULTS 0x84
|
||||
|
||||
/* sets the speaker calibration impedance (@25 degrees celsius) */
|
||||
#define SB_PARAM_SET_RE0 0x89
|
||||
|
||||
#define BFB_PAR_ID_SET_COEFS 0x00
|
||||
#define BFB_PAR_ID_GET_COEFS 0x80
|
||||
#define BFB_PAR_ID_GET_CONFIG 0x81
|
||||
|
||||
/* for compatibility */
|
||||
#define FW_PARAM_GET_STATE FW_PAR_ID_GLOBAL_GET_INFO
|
||||
#define FW_PARAM_GET_FEATURE_BITS FW_PAR_ID_GET_FEATURE_BITS
|
||||
|
||||
/* RPC Status results */
|
||||
#define STATUS_OK 0
|
||||
#define STATUS_INVALID_MODULE_ID 2
|
||||
#define STATUS_INVALID_PARAM_ID 3
|
||||
#define STATUS_INVALID_INFO_ID 4
|
||||
|
||||
/* the maximum message length in the communication with the DSP */
|
||||
#define TFA2_MAX_PARAM_SIZE (507*3) /* TFA2 */
|
||||
#define TFA1_MAX_PARAM_SIZE (145*3) /* TFA1 */
|
||||
|
||||
#define ROUND_DOWN(a,n) (((a)/(n))*(n))
|
||||
|
||||
/* feature bits */
|
||||
#define FEATURE1_TCOEF 0x100 /* bit8 set means tCoefA expected */
|
||||
#define FEATURE1_DRC 0x200 /* bit9 NOT set means DRC expected */
|
||||
|
||||
/* DSP firmware xmem defines */
|
||||
#define TFA1_FW_XMEM_CALIBRATION_DONE 231
|
||||
#define TFA2_FW_XMEM_CALIBRATION_DONE 516
|
||||
#define TFA1_FW_XMEM_COUNT_BOOT 0xa1
|
||||
#define TFA2_FW_XMEM_COUNT_BOOT 512
|
||||
#define TFA2_FW_XMEM_CMD_COUNT 520
|
||||
|
||||
/* note that the following defs rely on the handle variable */
|
||||
#define TFA_FW_XMEM_CALIBRATION_DONE TFA_FAM_FW(tfa,XMEM_CALIBRATION_DONE)
|
||||
#define TFA_FW_XMEM_COUNT_BOOT TFA_FAM_FW(tfa,XMEM_COUNT_BOOT)
|
||||
#define TFA_FW_XMEM_CMD_COUNT TFA_FAM_FW(tfa,XMEM_CMD_COUNT)
|
||||
|
||||
#define TFA2_FW_ReZ_SCALE 65536
|
||||
#define TFA1_FW_ReZ_SCALE 16384
|
||||
|
||||
#endif /* TFA98XX_INTERNALS_H */
|
||||
52
techpack/audio/asoc/codecs/tfa9874/inc/tfa_ext.h
Executable file
52
techpack/audio/asoc/codecs/tfa9874/inc/tfa_ext.h
Executable file
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* tfa_ext.h
|
||||
*
|
||||
* Created on: Jun 8, 2016
|
||||
* Author: wim
|
||||
*/
|
||||
|
||||
#ifndef TFA_SRC_TFA_EXT_H_
|
||||
#define TFA_SRC_TFA_EXT_H_
|
||||
|
||||
#include "tfa_device.h"
|
||||
|
||||
/*
|
||||
* events
|
||||
*/
|
||||
/** Maximum value for enumerator */
|
||||
#define LVM_MAXENUM (0xffff)
|
||||
/**
|
||||
This enum type specifies the different events that may trigger a callback.
|
||||
*/
|
||||
enum tfadsp_event_en
|
||||
{
|
||||
TFADSP_CMD_ACK = 1, /**< Command handling is completed */
|
||||
TFADSP_SOFT_MUTE_READY = 8, /**< Muting completed */
|
||||
TFADSP_VOLUME_READY = 16, /**< Volume change completed */
|
||||
TFADSP_DAMAGED_SPEAKER = 32, /**< Damaged speaker was detected */
|
||||
TFADSP_CALIBRATE_DONE = 64, /**< Calibration is completed */
|
||||
TFADSP_SPARSESIG_DETECTED = 128, /**< Sparse signal detected */
|
||||
TFADSP_CMD_READY = 256, /**< Ready to receive commands */
|
||||
TFADSP_EXT_PWRUP = 0x8000,/**< DSP API has started, powered up */
|
||||
TFADSP_EXT_PWRDOWN = 0x8001,/**< DSP API stopped, power down */
|
||||
TFADSP_EVENT_DUMMY = LVM_MAXENUM
|
||||
} ;
|
||||
|
||||
typedef int (*tfa_event_handler_t)(struct tfa_device *tfa, enum tfadsp_event_en tfadsp_event);
|
||||
typedef int (*dsp_send_message_t)(struct tfa_device *tfa, int length, const char *buf);
|
||||
typedef int (*dsp_read_message_t)(struct tfa_device *tfa, int length, char *buf);
|
||||
typedef int (*dsp_write_reg_t)(struct tfa_device *tfa, unsigned char subaddress, unsigned short value);
|
||||
|
||||
int tfa_ext_register(dsp_write_reg_t tfa_write_reg, dsp_send_message_t tfa_send_message, dsp_read_message_t tfa_read_message, tfa_event_handler_t *tfa_event_handler);
|
||||
|
||||
#endif /* TFA_SRC_TFA_EXT_H_ */
|
||||
33
techpack/audio/asoc/codecs/tfa9874/inc/tfa_internal.h
Executable file
33
techpack/audio/asoc/codecs/tfa9874/inc/tfa_internal.h
Executable file
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* Copyright (C) 2014-2020 NXP Semiconductors, All Rights Reserved.
|
||||
* Copyright 2020 GOODIX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
internal functions for TFA layer (not shared with SRV and HAL layer!)
|
||||
*/
|
||||
|
||||
#ifndef __TFA_INTERNAL_H__
|
||||
#define __TFA_INTERNAL_H__
|
||||
|
||||
#include "tfa_dsp_fw.h"
|
||||
#include "tfa_ext.h"
|
||||
|
||||
#if __GNUC__ >= 4
|
||||
#define TFA_INTERNAL __attribute__ ((visibility ("hidden")))
|
||||
#else
|
||||
#define TFA_INTERNAL
|
||||
#endif
|
||||
|
||||
#define TFA98XX_GENERIC_SLAVE_ADDRESS 0x1C
|
||||
|
||||
TFA_INTERNAL enum Tfa98xx_Error tfa98xx_check_rpc_status(struct tfa_device *tfa, int *pRpcStatus);
|
||||
TFA_INTERNAL enum Tfa98xx_Error tfa98xx_wait_result(struct tfa_device *tfa, int waitRetryCount);
|
||||
|
||||
#endif /* __TFA_INTERNAL_H__ */
|
||||
|
||||
134
techpack/audio/asoc/codecs/tfa9874/inc/tfa_platform_interface_definition.h
Executable file
134
techpack/audio/asoc/codecs/tfa9874/inc/tfa_platform_interface_definition.h
Executable file
|
|
@ -0,0 +1,134 @@
|
|||
/*
|
||||
* Copyright 2015-2018 NXP Semiconductors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _TFA_PLATFORM_INTERFACE_DEFINITION_H_
|
||||
#define _TFA_PLATFORM_INTERFACE_DEFINITION_H_
|
||||
|
||||
#define AFE_MODULE_ID_TFADSP_RX (0x1000B911)
|
||||
#define AFE_MODULE_ID_TFADSP_TX (0x1000B912)
|
||||
#define AFE_PARAM_ID_TFADSP_TX_SET_ENABLE (0x1000B920)
|
||||
#define AFE_PARAM_ID_TFADSP_RX_CFG (0x1000B921)
|
||||
#define AFE_PARAM_ID_TFADSP_RX_GET_RESULT (0x1000B922)
|
||||
#define AFE_PARAM_ID_TFADSP_RX_SET_BYPASS (0x1000B923)
|
||||
|
||||
|
||||
|
||||
#if defined(CONFIG_TARGET_PRODUCT_TAOYAO)
|
||||
#define TFA_USING_PRIMARY_MI2S
|
||||
#else
|
||||
#define TFA_USING_TERTIARY_MI2S
|
||||
#endif
|
||||
|
||||
#if defined(TFA_USING_SECONDARY_MI2S)
|
||||
/*Attention: port_id = AFE_PORT_ID_SECONDARY_MI2S_RX/TX, AFE_PORT_ID_TERTIARY_MI2S_RX/TX,
|
||||
AFE_PORT_ID_QUATERNARY_MI2S_RX/TX or AFE_PORT_ID_QUINARY_MI2S_RX/TX*/
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_SECONDARY_MI2S_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_SECONDARY_MI2S_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "SEC_MI2S_RX"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "SEC_MI2S_TX"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "SECONDARY_MI2S_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_SECONDARY_MI2S_TX
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_SECONDARY_MI2S_RX
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Secondary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Secondary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "SEC_MI2S_TX_HOSTLESS"
|
||||
|
||||
#elif defined(TFA_USING_TERTIARY_TDM)
|
||||
//PLATFORM_RX_VI_FB_RX_MUX_TEXT, NULL, PLATFORM_RX_VI_FB_MUX_NAME},
|
||||
//PLATFORM_RX_VI_FB_MUX_NAME, PLATFORM_RX_VI_FB_TX_MUX_TEXT, PLATFORM_RX_VI_FB_TX_MUX_TEXT},
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_TERTIARY_TDM_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_TERTIARY_TDM_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "TERT_TDM_RX_0"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "TERT_TDM_TX_0"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "TERTIARY_TDM_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_TERT_TDM_TX_0
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_TERT_TDM_RX_0
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Tertiary TDM0 Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Tertiary TDM0 Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "TERT_TDM_TX_0_HOSTLESS"
|
||||
|
||||
#elif defined(TFA_USING_TERTIARY_MI2S)
|
||||
/*Attention: port_id = AFE_PORT_ID_SECONDARY_MI2S_RX/TX, AFE_PORT_ID_TERTIARY_MI2S_RX/TX,
|
||||
AFE_PORT_ID_QUATERNARY_MI2S_RX/TX or AFE_PORT_ID_QUINARY_MI2S_RX/TX*/
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_TERTIARY_MI2S_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_TERTIARY_MI2S_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "TERT_MI2S_RX"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "TERT_MI2S_TX"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "TERTIARY_MI2S_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_TERTIARY_MI2S_TX
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_TERTIARY_MI2S_RX
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Tertiary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Tertiary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "TERT_MI2S_TX_HOSTLESS"
|
||||
|
||||
#elif defined(TFA_USING_QUATERNARY_MI2S)
|
||||
/*Attention: port_id = AFE_PORT_ID_SECONDARY_MI2S_RX/TX, AFE_PORT_ID_TERTIARY_MI2S_RX/TX,
|
||||
AFE_PORT_ID_QUATERNARY_MI2S_RX/TX or AFE_PORT_ID_QUINARY_MI2S_RX/TX*/
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_QUATERNARY_MI2S_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_QUATERNARY_MI2S_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "QUAT_MI2S_RX"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "QUAT_MI2S_TX"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "QUATERNARY_MI2S_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_QUATERNARY_MI2S_TX
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_QUATERNARY_MI2S_RX
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Quaternary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Quaternary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "QUAT_MI2S_TX_HOSTLESS"
|
||||
|
||||
#elif defined(TFA_USING_QUINARY_MI2S)
|
||||
/*Attention: port_id = AFE_PORT_ID_SECONDARY_MI2S_RX/TX, AFE_PORT_ID_TERTIARY_MI2S_RX/TX,
|
||||
AFE_PORT_ID_QUATERNARY_MI2S_RX/TX or AFE_PORT_ID_QUINARY_MI2S_RX/TX*/
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_QUINARY_MI2S_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_QUINARY_MI2S_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "QUIN_MI2S_RX"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "QUIN_MI2S_TX"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "QUINARY_MI2S_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_QUINARY_MI2S_TX
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_QUINARY_MI2S_RX
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Quinary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Quinary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "QUIN_MI2S_TX_HOSTLESS"
|
||||
|
||||
|
||||
#elif defined(TFA_USING_PRIMARY_MI2S)
|
||||
/*Attention: port_id = AFE_PORT_ID_SECONDARY_MI2S_RX/TX, AFE_PORT_ID_TERTIARY_MI2S_RX/TX,
|
||||
AFE_PORT_ID_QUATERNARY_MI2S_RX/TX or AFE_PORT_ID_QUINARY_MI2S_RX/TX*/
|
||||
#define AFE_PORT_ID_TFADSP_RX (AFE_PORT_ID_PRIMARY_MI2S_RX)
|
||||
#define AFE_PORT_ID_TFADSP_TX (AFE_PORT_ID_PRIMARY_MI2S_TX)
|
||||
|
||||
#define PLATFORM_RX_VI_FB_RX_MUX_TEXT "PRI_MI2S_RX"
|
||||
#define PLATFORM_RX_VI_FB_TX_MUX_TEXT "PRI_MI2S_TX"
|
||||
#define PLATFORM_RX_VI_FB_MUX_NAME "PRI_MI2S_RX_VI_FB_MUX"
|
||||
#define PLATFORM_RX_VI_FB_TX_VALUE MSM_BACKEND_DAI_PRI_MI2S_TX
|
||||
#define PLATFORM_RX_VI_FB_MUX_ENUM MSM_BACKEND_DAI_PRI_MI2S_RX
|
||||
|
||||
#define TFA_TX_HOSTLESS_CODEC_NAME "Primary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_STREAM_NAME "Primary MI2S_TX Hostless"
|
||||
#define TFA_TX_HOSTLESS_CPU_DAI_NAME "PRI_MI2S_TX_HOSTLESS"
|
||||
#else
|
||||
#error you should define which mi2s will be used for TFA device.
|
||||
#endif
|
||||
#endif /* _TFA_PLATFORM_INTERFACE_DEFINITION_H_ */
|
||||
1020
techpack/audio/asoc/codecs/tfa9874/inc/tfa_service.h
Executable file
1020
techpack/audio/asoc/codecs/tfa9874/inc/tfa_service.h
Executable file
File diff suppressed because it is too large
Load diff
5
techpack/audio/asoc/codecs/tfa9874/inc/versions.h
Executable file
5
techpack/audio/asoc/codecs/tfa9874/inc/versions.h
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#ifndef _VERSIONS_H
|
||||
#define TFA98XX_GIT_VERSIONS "v6.5.2_xxxxxxxxxx"
|
||||
#define _VERSIONS_H
|
||||
#endif
|
||||
|
||||
4504
techpack/audio/asoc/codecs/tfa9874/src/tfa98xx.c
Executable file
4504
techpack/audio/asoc/codecs/tfa9874/src/tfa98xx.c
Executable file
File diff suppressed because it is too large
Load diff
2391
techpack/audio/asoc/codecs/tfa9874/src/tfa_container.c
Executable file
2391
techpack/audio/asoc/codecs/tfa9874/src/tfa_container.c
Executable file
File diff suppressed because it is too large
Load diff
416
techpack/audio/asoc/codecs/tfa9874/src/tfa_debug.c
Executable file
416
techpack/audio/asoc/codecs/tfa9874/src/tfa_debug.c
Executable file
|
|
@ -0,0 +1,416 @@
|
|||
/*
|
||||
* Copyright 2014-2017 NXP Semiconductors
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "dbgprint.h"
|
||||
#include "tfa_service.h"
|
||||
#include "tfa98xx_tfafieldnames.h"
|
||||
|
||||
/* support for error code translation into text */
|
||||
static char latest_errorstr[64];
|
||||
|
||||
const char* tfa98xx_get_error_string(enum Tfa98xx_Error error)
|
||||
{
|
||||
const char* pErrStr;
|
||||
|
||||
switch (error)
|
||||
{
|
||||
case Tfa98xx_Error_Ok:
|
||||
pErrStr = "Ok";
|
||||
break;
|
||||
case Tfa98xx_Error_DSP_not_running:
|
||||
pErrStr = "DSP_not_running";
|
||||
break;
|
||||
case Tfa98xx_Error_Bad_Parameter:
|
||||
pErrStr = "Bad_Parameter";
|
||||
break;
|
||||
case Tfa98xx_Error_NotOpen:
|
||||
pErrStr = "NotOpen";
|
||||
break;
|
||||
case Tfa98xx_Error_InUse:
|
||||
pErrStr = "InUse";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcBusy:
|
||||
pErrStr = "RpcBusy";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcModId:
|
||||
pErrStr = "RpcModId";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcParamId:
|
||||
pErrStr = "RpcParamId";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcInvalidCC:
|
||||
pErrStr = "RpcInvalidCC";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcInvalidSeq:
|
||||
pErrStr = "RpcInvalidSeq";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcInvalidParam:
|
||||
pErrStr = "RpcInvalidParam";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcBufferOverflow:
|
||||
pErrStr = "RpcBufferOverflow";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcCalibBusy:
|
||||
pErrStr = "RpcCalibBusy";
|
||||
break;
|
||||
case Tfa98xx_Error_RpcCalibFailed:
|
||||
pErrStr = "RpcCalibFailed";
|
||||
break;
|
||||
case Tfa98xx_Error_Not_Supported:
|
||||
pErrStr = "Not_Supported";
|
||||
break;
|
||||
case Tfa98xx_Error_I2C_Fatal:
|
||||
pErrStr = "I2C_Fatal";
|
||||
break;
|
||||
case Tfa98xx_Error_I2C_NonFatal:
|
||||
pErrStr = "I2C_NonFatal";
|
||||
break;
|
||||
case Tfa98xx_Error_StateTimedOut:
|
||||
pErrStr = "WaitForState_TimedOut";
|
||||
break;
|
||||
default:
|
||||
sprintf(latest_errorstr, "Unspecified error (%d)", (int)error);
|
||||
pErrStr = latest_errorstr;
|
||||
}
|
||||
return pErrStr;
|
||||
}
|
||||
/*****************************************************************************/
|
||||
/* bitfield lookups */
|
||||
/*
|
||||
* generic table lookup functions
|
||||
*/
|
||||
/**
|
||||
* lookup bf in table
|
||||
* return 'unkown' if not found
|
||||
*/
|
||||
static char *tfa_bf2name(tfaBfName_t *table, uint16_t bf) {
|
||||
int n=0;
|
||||
|
||||
do {
|
||||
if ((table[n].bfEnum & 0xfff0 ) == (bf & 0xfff0 )) {
|
||||
return table[n].bfName;
|
||||
}
|
||||
}
|
||||
while( table[n++].bfEnum != 0xffff);
|
||||
|
||||
return table[n-1].bfName; /* last name says unkown */
|
||||
}
|
||||
/**
|
||||
* lookup name in table
|
||||
* return 0xffff if not found
|
||||
*/
|
||||
static uint16_t tfa_name2bf(tfaBfName_t *table,const char *name) {
|
||||
int n = 0;
|
||||
|
||||
do {
|
||||
if (strcasecmp(name, table[n].bfName)==0)
|
||||
return table[n].bfEnum;
|
||||
} while (table[n++].bfEnum != 0xffff);
|
||||
|
||||
return 0xffff;
|
||||
}
|
||||
|
||||
/*
|
||||
* tfa2 bitfield name table
|
||||
*/
|
||||
TFA2_NAMETABLE
|
||||
TFA2_BITNAMETABLE
|
||||
|
||||
/*
|
||||
* tfa1 bitfield name tables
|
||||
*/
|
||||
TFA1_NAMETABLE
|
||||
TFA9896_NAMETABLE
|
||||
TFA9872_NAMETABLE
|
||||
TFA9874_NAMETABLE
|
||||
TFA9890_NAMETABLE
|
||||
TFA9891_NAMETABLE
|
||||
TFA9887_NAMETABLE
|
||||
TFA1_BITNAMETABLE
|
||||
TFA9912_NAMETABLE
|
||||
TFA9894_NAMETABLE
|
||||
TFA9896_BITNAMETABLE
|
||||
TFA9872_BITNAMETABLE
|
||||
TFA9874_BITNAMETABLE
|
||||
TFA9912_BITNAMETABLE
|
||||
TFA9890_BITNAMETABLE
|
||||
TFA9891_BITNAMETABLE
|
||||
TFA9887_BITNAMETABLE
|
||||
TFA9894_BITNAMETABLE
|
||||
|
||||
char *tfaContBitName(uint16_t num, unsigned short rev)
|
||||
{
|
||||
char *name;
|
||||
/* end of list for the unknown string */
|
||||
int tableLength = sizeof(Tfa1DatasheetNames)/sizeof(tfaBfName_t);
|
||||
const char *unknown=Tfa1DatasheetNames[tableLength-1].bfName;
|
||||
|
||||
switch (rev & 0xff) {
|
||||
case 0x88:
|
||||
name = tfa_bf2name(Tfa2BitNames, num);
|
||||
break;
|
||||
case 0x97:
|
||||
name = tfa_bf2name(Tfa1BitNames, num);
|
||||
break;
|
||||
case 0x96:
|
||||
name = tfa_bf2name(Tfa9896BitNames, num);
|
||||
break;
|
||||
case 0x72:
|
||||
name = tfa_bf2name(Tfa9872BitNames, num);
|
||||
break;
|
||||
case 0x74:
|
||||
name = tfa_bf2name(Tfa9874BitNames, num);
|
||||
break;
|
||||
case 0x92:
|
||||
name = tfa_bf2name(Tfa9891BitNames, num);
|
||||
break;
|
||||
case 0x91:
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
name = tfa_bf2name(Tfa9890BitNames, num); /* my tabel 1st */
|
||||
if (strcmp(unknown, name)==0)
|
||||
name = tfa_bf2name(Tfa1BitNames, num); /* try generic table */
|
||||
break;
|
||||
case 0x12:
|
||||
name = tfa_bf2name(Tfa9887BitNames, num); /* my tabel 1st */
|
||||
if (strcmp(unknown, name)==0)
|
||||
name = tfa_bf2name(Tfa1BitNames, num); /* try generic table */
|
||||
break;
|
||||
case 0x13:
|
||||
name = tfa_bf2name(Tfa9912BitNames, num);
|
||||
break;
|
||||
case 0x94:
|
||||
name = tfa_bf2name(Tfa9894BitNames, num);
|
||||
break;
|
||||
default:
|
||||
PRINT_ERROR("unknown REVID:0x%0x\n", rev);
|
||||
tableLength = sizeof(Tfa1BitNames)/sizeof(tfaBfName_t); /* end of list */
|
||||
name = (char *)unknown;
|
||||
break;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
char *tfaContDsName(uint16_t num, unsigned short rev)
|
||||
{
|
||||
char *name;
|
||||
/* end of list for the unknown string */
|
||||
int tableLength = sizeof(Tfa1DatasheetNames)/sizeof(tfaBfName_t);
|
||||
const char *unknown=Tfa1DatasheetNames[tableLength-1].bfName;
|
||||
|
||||
switch (rev & 0xff) {
|
||||
case 0x88:
|
||||
name = tfa_bf2name(Tfa2DatasheetNames, num);
|
||||
break;
|
||||
case 0x97:
|
||||
name = tfa_bf2name(Tfa1DatasheetNames, num);
|
||||
break;
|
||||
case 0x96:
|
||||
name = tfa_bf2name(Tfa9896DatasheetNames, num);
|
||||
break;
|
||||
case 0x72:
|
||||
name = tfa_bf2name(Tfa9872DatasheetNames, num);
|
||||
break;
|
||||
case 0x74:
|
||||
name = tfa_bf2name(Tfa9874DatasheetNames, num);
|
||||
break;
|
||||
case 0x92:
|
||||
name = tfa_bf2name(Tfa9891DatasheetNames, num);
|
||||
break;
|
||||
case 0x91:
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
name = tfa_bf2name(Tfa9890DatasheetNames, num); /* my tabel 1st */
|
||||
if (strcmp(unknown, name)==0)
|
||||
name = tfa_bf2name(Tfa1DatasheetNames, num); /* try generic table */
|
||||
break;
|
||||
case 0x12:
|
||||
name = tfa_bf2name(Tfa9887DatasheetNames, num); /* my tabel 1st */
|
||||
if (strcmp(unknown, name)==0)
|
||||
name = tfa_bf2name(Tfa1DatasheetNames, num); /* try generic table */
|
||||
break;
|
||||
case 0x13:
|
||||
name = tfa_bf2name(Tfa9912DatasheetNames, num);
|
||||
break;
|
||||
case 0x94:
|
||||
name = tfa_bf2name(Tfa9894DatasheetNames, num);
|
||||
break;
|
||||
default:
|
||||
PRINT_ERROR("unknown REVID:0x%0x\n", rev);
|
||||
tableLength = sizeof(Tfa1DatasheetNames)/sizeof(tfaBfName_t); /* end of list */
|
||||
name = (char *)unknown;
|
||||
break;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
||||
char *tfaContBfName(uint16_t num, unsigned short rev)
|
||||
{
|
||||
char *name;
|
||||
/* end of list for the unknown string */
|
||||
int tableLength = sizeof(Tfa1DatasheetNames)/sizeof(tfaBfName_t);
|
||||
const char *unknown=Tfa1DatasheetNames[tableLength-1].bfName;
|
||||
|
||||
/* if datasheet name does not exist look for bitfieldname */
|
||||
name = tfaContDsName(num, rev);
|
||||
if (strcmp(unknown, name)==0)
|
||||
name = tfaContBitName(num, rev);
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
uint16_t tfaContBfEnum(const char *name, unsigned short rev)
|
||||
{
|
||||
uint16_t bfnum;
|
||||
|
||||
switch (rev & 0xff) {
|
||||
case 0x88:
|
||||
bfnum = tfa_name2bf(Tfa2DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa2BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
case 0x97:
|
||||
bfnum = tfa_name2bf(Tfa1DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa1BitNames, name);/* try generic table */
|
||||
break;
|
||||
case 0x96:
|
||||
bfnum = tfa_name2bf(Tfa9896DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9896BitNames, name);/* try generic table */
|
||||
break;
|
||||
case 0x72:
|
||||
bfnum = tfa_name2bf(Tfa9872DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9872BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
case 0x74:
|
||||
bfnum = tfa_name2bf(Tfa9874DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9874BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
case 0x92:
|
||||
bfnum = tfa_name2bf(Tfa9891DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9891BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
case 0x91:
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
bfnum = tfa_name2bf(Tfa9890DatasheetNames, name); /* my tabel 1st */
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa1DatasheetNames, name);/* try generic table */
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa1BitNames, name); /* try 2nd generic table */
|
||||
break;
|
||||
case 0x12:
|
||||
bfnum = tfa_name2bf(Tfa9887DatasheetNames, name); /* my tabel 1st */
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa1DatasheetNames, name);/* try generic table */
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa1BitNames, name);/* try 2nd generic table */
|
||||
break;
|
||||
case 0x13:
|
||||
bfnum = tfa_name2bf(Tfa9912DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9912BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
case 0x94:
|
||||
bfnum = tfa_name2bf(Tfa9894DatasheetNames, name);
|
||||
if (bfnum==0xffff)
|
||||
bfnum = tfa_name2bf(Tfa9894BitNames, name);/* try long bitname table */
|
||||
break;
|
||||
|
||||
default:
|
||||
PRINT_ERROR("unknown REVID:0x%0x\n", rev);
|
||||
bfnum=0xffff;
|
||||
break;
|
||||
}
|
||||
|
||||
return bfnum;
|
||||
}
|
||||
|
||||
/*
|
||||
* check all lists for a hit
|
||||
* this is for the parser to know if it's an existing bitname
|
||||
*/
|
||||
uint16_t tfaContBfEnumAny(const char *name)
|
||||
{
|
||||
uint16_t bfnum;
|
||||
|
||||
/* datasheet names first */
|
||||
bfnum = tfa_name2bf(Tfa2DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa1DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9891DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9890DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9887DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9872DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9874DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9896DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9912DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9894DatasheetNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
/* and then bitfield names */
|
||||
bfnum = tfa_name2bf(Tfa2BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa1BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9891BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9890BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9887BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9872BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9874BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9896BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9912BitNames, name);
|
||||
if (bfnum!=0xffff)
|
||||
return bfnum;
|
||||
bfnum = tfa_name2bf(Tfa9894BitNames, name);
|
||||
|
||||
return bfnum;
|
||||
}
|
||||
4467
techpack/audio/asoc/codecs/tfa9874/src/tfa_dsp.c
Executable file
4467
techpack/audio/asoc/codecs/tfa9874/src/tfa_dsp.c
Executable file
File diff suppressed because it is too large
Load diff
1938
techpack/audio/asoc/codecs/tfa9874/src/tfa_init.c
Executable file
1938
techpack/audio/asoc/codecs/tfa9874/src/tfa_init.c
Executable file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue