⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmtypes.h

📁 pxa270平台 windows mobile 5.2 wm9713 触摸屏+音频驱动
💻 H
字号:
/*-----------------------------------------------------------------------------
 * Copyright (c) Wolfson Microelectronics plc.  All rights reserved.
 *
 * This software as well as any related documentation is furnished under 
 * license and may only be used or copied in accordance with the terms of the 
 * license. The information in this file is furnished for informational use 
 * only, is subject to change without notice, and should not be construed as 
 * a commitment by Wolfson Microelectronics plc. Wolfson Microelectronics plc
 * assumes no responsibility or liability for any errors or inaccuracies that
 * may appear in this document or any software that may be provided in
 * association with this document. 
 *
 * Except as permitted by such license, no part of this document may be 
 * reproduced, stored in a retrieval system, or transmitted in any form or by 
 * any means without the express written consent of Wolfson Microelectronics plc. 
 *
 * $Id: WMTypes.h 852 2004-11-10 16:47:46Z ian $
 *
 * Type definitions for the Wolfson Device Control Library interfaces.
 *
 *
 * Warning:
 *  This driver is specifically written for Wolfson Codecs. It is not a 
 *  general CODEC device driver.
 *
 *---------------------------------------------------------------------------*/
#ifndef __WMTYPES_H__
#define __WMTYPES_H__

/*
 * Include files
 */
#include "WMCheckConfig.h"  /* If this fails, run CopyHeaders.bat */
#include "WMStatus.h"
#include "WMVersion.h"

/*
 * Useful definitions.
 */
typedef unsigned int WM_UINT;       /* Do not use. Left in for backwards compatiblity only */
typedef unsigned short WM_USHORT;   /* Do not use. Left in for backwards compatiblity only */
typedef unsigned int WM_DWORD;
typedef void *WM_HANDLE;
typedef WM_HANDLE WM_DEVICE_HANDLE;
#define WM_HANDLE_INVALID   ((WM_DEVICE_HANDLE) 0)

#ifndef BOOL
typedef int     BOOL;
#endif
typedef int     WM_BOOL;
#ifndef TRUE
#define TRUE    1
#define FALSE   0
#endif

/*
 * Our own max function so we don't need to worry about it being called
 * different things on different platforms.
 */
#define WM_MAX(a,b) (((a)>(b))?(a):(b))

/*
 * A macro to calculate the number of entries in an array.
 */
#define WM_ARRAY_COUNT(_array)  (sizeof(_array)/sizeof(_array[0]))

/*
 * The driver IDs.
 */
typedef unsigned int WM_DRIVER_ID;
#define WM_DRIVER_TOUCH							0
#define WM_DRIVER_AUDIO							1
#define WM_DRIVER_AUXADC						2
#define WM_DRIVER_BATTERY						3
#define WM_DRIVER_RAW							4
#define WM_DRIVER_INTERNAL						5
                                    			
#define WM_DRIVER_MASK(_driver)     			(1U<<(_driver))

/*
 * The types to use for registers
 */
typedef WM_USHORT				WM_REGTYPE;
typedef WM_USHORT				WM_REGVAL;
#define WM_REG_INVALID   		((WM_REGTYPE)-1)

/*
 * Codec IDs
 */
typedef enum tagCodecId
{
    WM97_PRIMARY_CODEC = 1,
    WM97_SECONDARY_CODEC
} WM_CODEC_ID;

/* Chip IDs */
typedef unsigned short WM_CHIPTYPE;
#define WOLFSON_MICRO               0x574D  /* 'WM' */
#define WM_CHIP_UNSUPPORTED         0
#define WM_CHIP_UNKNOWN             0
#define WM_CHIP_WM9703              0x4C03
#define WM_CHIP_WM9704              0x4C04
#define WM_CHIP_WM9705              0x4C05
#define WM_CHIP_WM9707              WM_CHIP_WM9703
#define WM_CHIP_WM9708              WM_CHIP_WM9703
#define WM_CHIP_WM9709              0x4C09
#define WM_CHIP_WM9710              WM_CHIP_WM9705
#define WM_CHIP_WM9711              WM_CHIP_WM9712
#define WM_CHIP_WM9712              0x4C12
#define WM_CHIP_WM9713              0x4C13
#define WM_CHIP_WM9714              WM_CHIP_WM9713
#define WM_CHIP_WM9717              WM_CHIP_WM9703
#define WM_CHIP_WM8711              0x8711
#define WM_CHIP_WM8721              WM_CHIP_WM8711
#define WM_CHIP_WM8731              0x8731
#define WM_CHIP_WM8734              WM_CHIP_WM8731
#define WM_CHIP_WM8753			    0x8753

#define WM_CHIP_WMI2S_HW_ONLY    0xFFE0   /* unknown I2S device hardware-only */
#define WM_CHIP_WMI2S_7BIT_ADDR  0xFFE7   /* unknown I2S device 7-bit addr/9-bit data */
#define WM_CHIP_WMI2S_8BIT_ADDR  0xFFE8   /* unknown I2S device 8-bit addr/8-bit data */

#define WM_CHIP_STRING( _ID )   (                                              \
    ( WM_CHIP_WM9713 == (_ID) )             ? "WM9713/WM9714"                : \
    ( WM_CHIP_WM9712 == (_ID) )             ? "WM9711/WM9712"                : \
    ( WM_CHIP_WM9705 == (_ID) )             ? "WM9705/WM9710"                : \
    ( WM_CHIP_WM9703 == (_ID) )             ? "WM9703/WM9707/WM9708/WM9717"  : \
    ( WM_CHIP_WM8753 == (_ID) )             ? "WM8753"                       : \
    ( WM_CHIP_WM8731 == (_ID) )             ? "WM8731/WM8734"                : \
    ( WM_CHIP_WM8711 == (_ID) )             ? "WM8711/WM8721"                : \
    ( WM_CHIP_WMI2S_HW_ONLY == (_ID) )      ? "Wolfson I2S HW control"       : \
    ( WM_CHIP_WMI2S_7BIT_ADDR == (_ID) )    ? "Wolfson I2S 7-bit addr"       : \
    ( WM_CHIP_WMI2S_8BIT_ADDR == (_ID) )    ? "Wolfson I2S 8-bit addr"       : \
                                              "unknown device" )

#define WM_CHIP_IS_AC97( _ID )      ( 0x4C00 == ( (_ID) & 0xFF00 ) || 0x9700 == (_ID) )
#define WM_CHIP_HAS_READBACK( _ID ) ( WM_CHIP_IS_AC97( _ID ) || WM_DEV_I2S == (_ID) )
#define WM_CHIP_IS_HW_ONLY( _ID )   ( WM_CHIP_WMI2S_HW_ONLY == (_ID) )

/* Chip revisions */
typedef unsigned short WM_CHIPREV;
#define WM_REV_UNKNOWN          0
#define WM_REV_A                'A'
#define WM_REV_B                'B'
#define WM_REV_C                'C'
#define WM_REV_D                'D'
#define WM_REV_E                'E'

/*
 * The device IDs.
 */
typedef unsigned int WM_DEVICE_ID;
#define WM_DEV_ORDINAL_MASK                     0xF0000000
#define WM_DEV_CHIP_MASK                        0x0000FFFF

#define WM_DEV_PRIMARY                          0x10000000
#define WM_DEV_SECONDARY                        0x20000000

#define WM_DEV_UNKNOWN                          0
#define WM_DEV_AC97                             0x9700
#define WM_DEV_I2S                              0x8000      // Generic I2S with readback of ID register 0

#define WM_DEV_MAKE_DEVICE( _chip, _ordinal )       (                          \
    WM_CHIP_IS_AC97( _chip ) ? ( WM_DEV_AC97 | (_ordinal) ) :                  \
    WM_CHIP_HAS_READBACK( _chip ) ? ( WM_DEV_I2S | (_ordinal) ) :              \
    ((_chip) | (_ordinal))                                                     \
)

#define WM_DEV_PRIMARY_DEVICE( _devID )         WM_DEV_MAKE_DEVICE( (_devID), WM_DEV_PRIMARY )
#define WM_DEV_SECONDARY_DEVICE( _devID )       WM_DEV_MAKE_DEVICE( (_devID), WM_DEV_SECONDARY )

#define WM_DEV_GET_ORDINAL( _devID )            ((_devID) & WM_DEV_ORDINAL_MASK )
#define WM_DEV_GET_CHIP( _devID )               ((_devID) & WM_DEV_CHIP_MASK )

#define WM_DEVICE_IS_AC97( _devID )             WM_CHIP_IS_AC97( WM_DEV_GET_CHIP( _devID ) )
#define WM_DEVICE_HAS_READBACK( _devID )        WM_CHIP_HAS_READBACK( WM_DEV_GET_CHIP( _devID ) )
#define WM_DEVICE_IS_HW_ONLY( _devID )          WM_CHIP_IS_HW_ONLY( WM_DEV_GET_CHIP( _devID ) )

#define WM_DEV_AC97_PRIMARY                     WM_DEV_PRIMARY_DEVICE( WM_DEV_AC97 )
#define WM_DEV_AC97_SECONDARY                   WM_DEV_SECONDARY_DEVICE( WM_DEV_AC97 )
#define WM_DEV_I2S_PRIMARY                      WM_DEV_PRIMARY_DEVICE( WM_DEV_I2S )
#define WM_DEV_I2S_SECONDARY                    WM_DEV_SECONDARY_DEVICE( WM_DEV_I2S )

#define WM_DEV_WM8711_PRIMARY                   WM_DEV_PRIMARY_DEVICE( WM_CHIP_WM8711 )
#define WM_DEV_WM8711_SECONDARY                 WM_DEV_SECONDARY_DEVICE( WM_CHIP_WM8711 )
#define WM_DEV_WM8721_PRIMARY                   WM_DEV_PRIMARY_DEVICE( WM_CHIP_WM8721 )
#define WM_DEV_WM8721_SECONDARY                 WM_DEV_SECONDARY_DEVICE( WM_CHIP_WM8721 )
#define WM_DEV_WM8731_PRIMARY                   WM_DEV_PRIMARY_DEVICE( WM_CHIP_WM8731 )
#define WM_DEV_WM8731_SECONDARY                 WM_DEV_SECONDARY_DEVICE( WM_CHIP_WM8731 )
#define WM_DEV_WM8734_PRIMARY                   WM_DEV_PRIMARY_DEVICE( WM_CHIP_WM8734 )
#define WM_DEV_WM8734_SECONDARY                 WM_DEV_SECONDARY_DEVICE( WM_CHIP_WM8734 )
#define WM_DEV_WM8753_PRIMARY                   WM_DEV_PRIMARY_DEVICE( WM_CHIP_WM8753 )
#define WM_DEV_WM8753_SECONDARY                 WM_DEV_SECONDARY_DEVICE( WM_CHIP_WM8753 )
#define WM_DEV_WMI2S_7BIT_ADDR_PRIMARY          WM_DEV_PRIMARY_DEVICE( WM_CHIP_WMI2S_7BIT_ADDR )
#define WM_DEV_WMI2S_7BIT_ADDR_SECONDARY        WM_DEV_SECONDARY_DEVICE( WM_CHIP_WMI2S_7BIT_ADDR )
#define WM_DEV_WMI2S_8BIT_ADDR_PRIMARY          WM_DEV_PRIMARY_DEVICE( WM_CHIP_WMI2S_8BIT_ADDR )
#define WM_DEV_WMI2S_8BIT_ADDR_SECONDARY        WM_DEV_SECONDARY_DEVICE( WM_CHIP_WMI2S_8BIT_ADDR )
#define WM_DEV_WMI2S_HW_ONLY                    WM_DEV_MAKE_DEVICE( WM_CHIP_WMI2S_HW_ONLY, 0 )

/* Bit Positions */
#define WM_BIT_0                ( 1u << 0 )
#define WM_BIT_1                ( 1u << 1 )
#define WM_BIT_2                ( 1u << 2 )
#define WM_BIT_3                ( 1u << 3 )
#define WM_BIT_4                ( 1u << 4 )
#define WM_BIT_5                ( 1u << 5 )
#define WM_BIT_6                ( 1u << 6 )
#define WM_BIT_7                ( 1u << 7 )
#define WM_BIT_8                ( 1u << 8 )
#define WM_BIT_9                ( 1u << 9 )
#define WM_BIT_10               ( 1u << 10 )
#define WM_BIT_11               ( 1u << 11 )
#define WM_BIT_12               ( 1u << 12 )
#define WM_BIT_13               ( 1u << 13 )
#define WM_BIT_14               ( 1u << 14 )
#define WM_BIT_15               ( 1u << 15 )
#define WM_BIT_16               ( 1u << 16 )
#define WM_BIT_17               ( 1u << 17 )
#define WM_BIT_18               ( 1u << 18 )
#define WM_BIT_19               ( 1u << 19 )
#define WM_BIT_20               ( 1u << 20 )
#define WM_BIT_21               ( 1u << 21 )
#define WM_BIT_22               ( 1u << 22 )
#define WM_BIT_23               ( 1u << 23 )
#define WM_BIT_24               ( 1u << 24 )
#define WM_BIT_25               ( 1u << 25 )
#define WM_BIT_26               ( 1u << 26 )
#define WM_BIT_27               ( 1u << 27 )
#define WM_BIT_28               ( 1u << 28 )
#define WM_BIT_29               ( 1u << 29 )
#define WM_BIT_30               ( 1u << 30 )
#define WM_BIT_31               ( 1u << 31 )

/* Register bit positions */
#define WM_REGISTERBIT_0        ((WM_REGVAL) WM_BIT_0)
#define WM_REGISTERBIT_1        ((WM_REGVAL) WM_BIT_1)
#define WM_REGISTERBIT_2        ((WM_REGVAL) WM_BIT_2)
#define WM_REGISTERBIT_3        ((WM_REGVAL) WM_BIT_3)
#define WM_REGISTERBIT_4        ((WM_REGVAL) WM_BIT_4)
#define WM_REGISTERBIT_5        ((WM_REGVAL) WM_BIT_5)
#define WM_REGISTERBIT_6        ((WM_REGVAL) WM_BIT_6)
#define WM_REGISTERBIT_7        ((WM_REGVAL) WM_BIT_7)
#define WM_REGISTERBIT_8        ((WM_REGVAL) WM_BIT_8)
#define WM_REGISTERBIT_9        ((WM_REGVAL) WM_BIT_9)
#define WM_REGISTERBIT_10       ((WM_REGVAL) WM_BIT_10)
#define WM_REGISTERBIT_11       ((WM_REGVAL) WM_BIT_11)
#define WM_REGISTERBIT_12       ((WM_REGVAL) WM_BIT_12)
#define WM_REGISTERBIT_13       ((WM_REGVAL) WM_BIT_13)
#define WM_REGISTERBIT_14       ((WM_REGVAL) WM_BIT_14)
#define WM_REGISTERBIT_15       ((WM_REGVAL) WM_BIT_15)

/* Value to set registers to signify an uninitialised [UNKNOWN] state */
#define WM_REGISTER_UNSET		0xCCCC

/* 2 Wire device Address */
typedef unsigned short WM_2WIRE_ADDR;

/*
 * Registers used to test successful device initialisation
 * Choose one that does not exist.
 * 
 * For 2 Wire devices register 0x7F may be in use, so use 0x7E instead.
 */
#define WM_I2S_INIT_TEST_REGISTER	0x7E

/*
 * Function prototypes
 */
#ifdef __cplusplus
extern "C" {
#endif


#ifdef __cplusplus
}   /* extern "C" */
#endif

#endif	/* __WMTYPES_H__ */
/*------------------------------ END OF FILE ---------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -