📄 ak470x.h
字号:
/*****************************************************************************//* Copyright (c) 2008 NXP B.V. All rights are reserved. *//* Reproduction in whole or in part is prohibited without the prior *//* written consent of the copyright owner. *//* *//* This software and any compilation or derivative thereof is, and *//* shall remain the proprietary information of NXP and is *//* highly confidential in nature. Any and all use hereof is restricted *//* and is subject to the terms and conditions set forth in the *//* software license agreement concluded with NXP B.V. *//* *//* Under no circumstances is this software or any derivative thereof *//* to be combined with any Open Source Software, exposed to, or in any *//* way licensed under any Open License Terms without the express prior *//* written permission of the copyright owner. *//* *//* For the purpose of the above, the term Open Source Software means *//* any software that is licensed under Open License Terms. Open *//* License Terms means terms in any license that require as a *//* condition of use, modification and/or distribution of a work *//* *//* 1. the making available of source code or other materials *//* preferred for modification, or *//* *//* 2. the granting of permission for creating derivative *//* works, or *//* *//* 3. the reproduction of certain notices or license terms *//* in derivative works or accompanying documentation, or *//* *//* 4. the granting of a royalty-free license to any party *//* under Intellectual Property Rights *//* *//* regarding the work and/or any work that contains, is combined with, *//* requires or otherwise is based on the work. *//* *//* This software is provided for ease of recompilation only. *//* Modification and reverse engineering of this software are strictly *//* prohibited. *//* *//*****************************************************************************//** @file ak470x.h @brief Linux implementation of the AK470X (AV Scart switch) driver. @b Module: AK470X (AV Scart switch) driver.*//*Rev Date Author Comments-------------------------------------------------------------------------------- 1 2006XXXX neill Import from STB810 2 20070430 burningh Remove u8 typedef, in DFB header now. 3 20071002 neill Remove YPrPb mode (Always enabled!) 4 20080206 batelaan Update file copyright/license text-------------------------------------------------------------------------------- For consistency and standardisation retain the Section Separators.*/#ifndef __AK470X_H__#define __AK470X_H__#include <linux/ioctl.h>#include <linux/types.h>#if defined(__cplusplus)extern "C" {#endif// ****************************************************************************// * *// * A V S W I T C H S E C T I O N *// * *// ****************************************************************************typedef enum { TV_OUTPUT = 0 , VCR_OUTPUT = 1 , NUM_OUTPUTS = 2} output_enum;typedef enum { SRC_PRIMARY , SRC_SECONDARY , SRC_VCRIN , SRC_TVIN , SRC_MUTE} src_enum;typedef enum { MODE_RGB , MODE_YC , MODE_CVBS} mode_enum;typedef enum { BLANK_SLOW_OFF , BLANK_SLOW_16_9 , BLANK_SLOW_4_3 , BLANK_SLOW_FOLLOW , BLANK_SLOW_MONITOR} blanking_enum;typedef struct { src_enum src_select ; mode_enum display_mode ; blanking_enum slow_blanking ;} av_output_attr;typedef struct { int loopthrough ; av_output_attr attribute[NUM_OUTPUTS] ;} av_switch_data;// ****************************************************************************// * *// * A U D I O S E C T I O N *// * *// ****************************************************************************// ----------------------- AK470X Audio Channel Number (0 offset) ------------typedef enum AK470X_AUDIO_CHANNEL_NUMBER { AK470X_AUDIO_CHANNEL_NUMBER_MIN = 0 , AK470X_AUDIO_CHANNEL_NUMBER_0 = 0 , AK470X_AUDIO_CHANNEL_NUMBER_MAX = 0 , AK470X_AUDIO_CHANNEL_COUNT = AK470X_AUDIO_CHANNEL_NUMBER_MAX-AK470X_AUDIO_CHANNEL_NUMBER_MIN+1} AK470X_AUDIO_CHANNEL_NUMBER_t;// ----------------------- AK470X Audio External Volume Range ------------typedef enum AK470X_AUDIO_EXTERNAL_VOLUME_RANGE { AK470X_AUDIO_EXTERNAL_VOLUME_MIN = 0 , AK470X_AUDIO_EXTERNAL_VOLUME_MAX = 100 , AK470X_AUDIO_EXTERNAL_VOLUME_MID = ((AK470X_AUDIO_EXTERNAL_VOLUME_MAX+AK470X_AUDIO_EXTERNAL_VOLUME_MIN)*3)/4} AK470X_AUDIO_EXTERNAL_VOLUME_RANGE_t;// ----------------------- AK470X Audio Internal Gain Range -------------------typedef enum AK470X_AUDIO_INTERNAL_GAIN_RANGE { AK470X_AUDIO_INTERNAL_GAIN_MIN = 0 , AK470X_AUDIO_INTERNAL_GAIN_MAX = 34} AK470X_AUDIO_INTERNAL_GAIN_RANGE_t;// ----------------------- AK470X attenuation & volume boundaries --------typedef enum AK470X_AUDIO_VOLUME_BOUNDARY { AK470X_gain_min = AK470X_AUDIO_INTERNAL_GAIN_MIN , AK470X_gain_max = AK470X_AUDIO_INTERNAL_GAIN_MAX , AK470X_gain_mag = AK470X_AUDIO_INTERNAL_GAIN_MAX - AK470X_AUDIO_INTERNAL_GAIN_MIN , AK470X_vol_min = AK470X_AUDIO_EXTERNAL_VOLUME_MIN , AK470X_vol_max = AK470X_AUDIO_EXTERNAL_VOLUME_MAX , AK470X_vol_mag = AK470X_AUDIO_EXTERNAL_VOLUME_MAX - AK470X_AUDIO_EXTERNAL_VOLUME_MIN} AK470X_AUDIO_VOLUME_BOUNDARY_t;// ----------------------- AK470X Audio Internal Types --------------------typedef u8 AK470X_AUDIO_MASTER_VOLUME_t;// ****************************************************************************// * *// * M O D U L E S E C T I O N *// * *// ****************************************************************************// ----------------------- MODULE Definition --------------------------------#define AK470X_MODULE_DESCRIPTION "AK470X (AV Scart switch) driver"//------------------------------------------------------------------------------// I O C T L ' s data structures//------------------------------------------------------------------------------// ----------------------- MODULE IOCTL Control Structure (Switch Mode) ----typedef av_switch_data AK470X_SWITCH_IOCTL_MODE_t;// ----------------------- MODULE IOCTL Control Structure (Audio Mode) ----typedef struct AK470X_AUDIO_IOCTL_MODE { AK470X_AUDIO_CHANNEL_NUMBER_t audio_channel;} AK470X_AUDIO_IOCTL_MODE_t;// ----------------------- MODULE IOCTL Control Structure (Audio Volume) ----typedef struct AK470X_AUDIO_IOCTL_VOLUME { AK470X_AUDIO_MASTER_VOLUME_t master_left; AK470X_AUDIO_MASTER_VOLUME_t master_right; AK470X_AUDIO_CHANNEL_NUMBER_t audio_channel; int external_left; int external_right;} AK470X_AUDIO_IOCTL_VOLUME_t;//------------------------------------------------------------------------------// I O C T L ' s definition//------------------------------------------------------------------------------// ----------------------- MODULE IOCTLs base --------------------------------#define AK470X_IOCTL_GENERIC (0xBE)#define AK470X_IOCTL_BASE (0x00)// ----------------------- MODULE Switch IOCTL's ----------------------------#define AK470X_IOCTL_SWITCH (AK470X_IOCTL_BASE + 0x00)#define AK470X_IOCTL_SWITCH_MODE_SET _IOW(AK470X_IOCTL_GENERIC, AK470X_IOCTL_SWITCH + 0, AK470X_SWITCH_IOCTL_MODE_t*)#define AK470X_IOCTL_SWITCH_MODE_GET _IOR(AK470X_IOCTL_GENERIC, AK470X_IOCTL_SWITCH + 1, AK470X_SWITCH_IOCTL_MODE_t*)// ----------------------- ... for backward compatibility with Rev<003 --------#define AV_SWITCH_BASE (0)#define AV_SWITCH_SET_MODE _IOW(0xBE, AV_SWITCH_BASE+0, av_switch_data*)// ----------------------- MODULE Audio IOCTL's ----------------------------#define AK470X_IOCTL_AUDIO (AK470X_IOCTL_BASE + 0x10)#define AK470X_IOCTL_AUDIO_MODE_SET _IOW(AK470X_IOCTL_GENERIC, AK470X_IOCTL_AUDIO + 0, AK470X_AUDIO_IOCTL_MODE_t*)#define AK470X_IOCTL_AUDIO_VOLUME_GET _IOR(AK470X_IOCTL_GENERIC, AK470X_IOCTL_AUDIO + 1, AK470X_AUDIO_IOCTL_VOLUME_t*)#define AK470X_IOCTL_AUDIO_VOLUME_SET _IOW(AK470X_IOCTL_GENERIC, AK470X_IOCTL_AUDIO + 2, AK470X_AUDIO_IOCTL_VOLUME_t*)// ****************************************************************************// * *// * P U B L I C O B J E C T S *// * *// ****************************************************************************// ----------------------- AK470X IOCTL wrapper (Commands) ----------------extern int ak470x_exec (unsigned int cmd, void *p_object);extern int ak470x_std_volume_get (int channel, int *p_left, int *p_right);extern int ak470x_std_volume_set (int channel, int left, int right);extern int ak470x_std_volume_range_get (int channel, int *p_min, int *p_max);extern int ak470x_switch_get (av_switch_data* pInfo);extern int ak470x_switch_set (const av_switch_data* pInfo);extern int ak470x_switch_installed (void);#if defined(__cplusplus)}#endif#endif /* __AK470X_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -