📄 syncregio.h
字号:
/*+++ *******************************************************************\
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* This software is provided "AS IS" without warranty of any kind,
* either expressed or implied, including but not limited to the
* implied warranties of noninfringement, merchantability and/or
* fitness for a particular purpose.
* ---------------------------------------------------------------
*
* Copyright (c) 2008 Conexant Systems, Inc.
* All rights reserved.
*
\******************************************************************* ---*/
#ifndef _SYNCREGIO_H
#define _SYNCREGIO_H
extern "C"
{
#include <wdm.h>
}
#include <windef.h>
#include <unknown.h>
#include <ks.h>
#include <ksmedia.h>
#include "driverI2C.h"
#define FIRMWARE_STOP_REASON_CROSSBAR 1
#define FIRMWARE_STOP_REASON_HW_INIT 2
#define FIRMWARE_STOP_REASON_CHANNEL_CHANGE 4
class SyncRegIo
{
public:
SyncRegIo(DriverI2C *p_i2c);
~SyncRegIo();
VOID lock();
VOID unlock();
VOID stopAudioFirmware(DWORD firware_stop_reason);
VOID restartAudioFirmware(DWORD firware_stop_reason);
NTSTATUS setCommandFormat(BOOLEAN first,BOOLEAN last);
NTSTATUS writeByte(WORD address, BYTE value);
NTSTATUS readByte(WORD address, PBYTE p_value);
NTSTATUS writeDword(WORD address, DWORD value);
NTSTATUS readModifyWriteDword(WORD address, DWORD mask, DWORD value);
NTSTATUS writeMultiByteNoLock(WORD register_address, BYTE* p_value, DWORD value_num);
NTSTATUS writeMultiByte(WORD register_address, BYTE* p_value, DWORD value_num);
NTSTATUS readDword(WORD address, PDWORD p_value);
DWORD Set_Field(DWORD field_mask, DWORD data);
NTSTATUS writeAudioFirmware(HANDLE file_handle,DWORD rev_id);
VOID verifyAudioFirmware(HANDLE file_handle);
NTSTATUS RegMaskWrite(BYTE size, WORD register_address,BYTE bit_start,BYTE bit_end, DWORD value);
KMUTEX* getSyncRegIOMutex() {return &_mutex;}
//protected:
NTSTATUS writeByteNoLock(WORD address, BYTE value);
NTSTATUS readByteNoLock(WORD address, PBYTE p_value);
NTSTATUS writeDwordNoLock(WORD address, DWORD value);
NTSTATUS readDwordNoLock(WORD address, PDWORD p_value);
private:
typedef enum{
FIRMWARE_STATE_ENABLED,
FIRMWARE_STATE_NOT_STARTED,
FIRMWARE_STATE_STOPPED
}FIRMWARE_STATE;
DriverI2C* _p_i2c;
KMUTEX _mutex;
FIRMWARE_STATE _firmware_state;
DWORD _chip_rev;
DWORD _firmware_stop_reasons;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -