msp3430.h revision 016a45b2
1016a45b2Smrg#ifndef __MSP3430_H__ 2016a45b2Smrg#define __MSP3430_H__ 3016a45b2Smrg 4016a45b2Smrg#include "xf86i2c.h" 5016a45b2Smrg 6016a45b2Smrgtypedef struct { 7016a45b2Smrg I2CDevRec d; 8016a45b2Smrg 9016a45b2Smrg int standard; 10016a45b2Smrg int connector; 11016a45b2Smrg int mode; 12016a45b2Smrg 13016a45b2Smrg CARD8 hardware_version, major_revision, product_code, rom_version; 14016a45b2Smrg#ifdef MSP_DEBUG 15016a45b2Smrg CARD8 registers_present[256]; 16016a45b2Smrg#endif 17016a45b2Smrg 18016a45b2Smrg CARD16 chip_id; 19016a45b2Smrg CARD8 chip_family; 20016a45b2Smrg Bool recheck; /*reinitialization needed after channel change */ 21016a45b2Smrg CARD8 c_format; /*current state of audio format */ 22016a45b2Smrg CARD16 c_standard; /*current state of standard register */ 23016a45b2Smrg CARD8 c_source; /*current state of source register */ 24016a45b2Smrg CARD8 c_matrix; /*current state of matrix register */ 25016a45b2Smrg CARD8 c_fmmatrix; /*current state of fmmatrix register */ 26016a45b2Smrg int c_mode; /* current state of mode for autoswitchimg */ 27016a45b2Smrg CARD8 volume; 28016a45b2Smrg } MSP3430Rec, * MSP3430Ptr; 29016a45b2Smrg 30016a45b2Smrg 31016a45b2Smrg#define MSP3430_ADDR_1 0x80 32016a45b2Smrg#define MSP3430_ADDR_2 0x84 33016a45b2Smrg#define MSP3430_ADDR_3 0x88 34016a45b2Smrg 35016a45b2Smrg#define MSP3430_PAL 1 36016a45b2Smrg#define MSP3430_NTSC 2 37016a45b2Smrg#define MSP3430_PAL_DK1 (0x100 | MSP3430_PAL) 38016a45b2Smrg#define MSP3430_SECAM 3 39016a45b2Smrg 40016a45b2Smrg#define MSP3430_CONNECTOR_1 1 /* tuner on AIW cards */ 41016a45b2Smrg#define MSP3430_CONNECTOR_2 2 /* SVideo on AIW cards */ 42016a45b2Smrg#define MSP3430_CONNECTOR_3 3 /* composite on AIW cards */ 43016a45b2Smrg 44016a45b2Smrg#define MSP3430_ADDR(a) ((a)->d.SlaveAddr) 45016a45b2Smrg 46016a45b2Smrg#define MSP3430_FAST_MUTE 0xFF 47016a45b2Smrg/* a handy volume transform function, -1000..1000 -> 0x01..0x7F */ 48016a45b2Smrg#define MSP3430_VOLUME(value) (0x01+(0x7F-0x01)*log(value+1001)/log(2001)) 49016a45b2Smrg 50016a45b2Smrg/*----------------------------------------------------------*/ 51016a45b2Smrg 52016a45b2Smrg/* MSP chip families */ 53016a45b2Smrg#define MSPFAMILY_UNKNOWN 0 54016a45b2Smrg#define MSPFAMILY_34x0D 1 55016a45b2Smrg#define MSPFAMILY_34x5D 2 56016a45b2Smrg#define MSPFAMILY_34x0G 3 57016a45b2Smrg#define MSPFAMILY_34x5G 4 58016a45b2Smrg 59016a45b2Smrg/* values for MSP standard */ 60016a45b2Smrg#define MSPSTANDARD_UNKNOWN 0x00 61016a45b2Smrg#define MSPSTANDARD_AUTO 0x01 62016a45b2Smrg#define MSPSTANDARD_FM_M 0x02 63016a45b2Smrg#define MSPSTANDARD_FM_BG 0x03 64016a45b2Smrg#define MSPSTANDARD_FM_DK1 0x04 65016a45b2Smrg#define MSPSTANDARD_FM_DK2 0x04 66016a45b2Smrg#define MSPSTANDARD_NICAM_BG 0x08 67016a45b2Smrg#define MSPSTANDARD_NICAM_L 0x09 68016a45b2Smrg#define MSPSTANDARD_NICAM_I 0x0A 69016a45b2Smrg#define MSPSTANDARD_NICAM_DK 0x0B 70016a45b2Smrg 71016a45b2Smrg/* values for MSP format */ 72016a45b2Smrg#define MSPFORMAT_UNKNOWN 0x00 73016a45b2Smrg#define MSPFORMAT_FM 0x10 74016a45b2Smrg#define MSPFORMAT_1xFM 0x00|MSPFORMAT_FM 75016a45b2Smrg#define MSPFORMAT_2xFM 0x01|MSPFORMAT_FM 76016a45b2Smrg#define MSPFORMAT_NICAM 0x20 77016a45b2Smrg#define MSPFORMAT_NICAM_FM 0x00|MSPFORMAT_NICAM 78016a45b2Smrg#define MSPFORMAT_NICAM_AM 0x01|MSPFORMAT_NICAM 79016a45b2Smrg#define MSPFORMAT_SCART 0x30 80016a45b2Smrg 81016a45b2Smrg/* values for MSP mode */ 82016a45b2Smrg#define MSPMODE_UNKNOWN 0 83016a45b2Smrg/* automatic modes */ 84016a45b2Smrg#define MSPMODE_STEREO_AB 1 85016a45b2Smrg#define MSPMODE_STEREO_A 2 86016a45b2Smrg#define MSPMODE_STEREO_B 3 87016a45b2Smrg/* forced modes */ 88016a45b2Smrg#define MSPMODE_MONO 4 89016a45b2Smrg#define MSPMODE_STEREO 5 90016a45b2Smrg#define MSPMODE_AB 6 91016a45b2Smrg#define MSPMODE_A 7 92016a45b2Smrg#define MSPMODE_B 8 93016a45b2Smrg/*----------------------------------------------------------*/ 94016a45b2Smrg 95016a45b2Smrg#define xf86_InitMSP3430 InitMSP3430 96016a45b2Smrgextern _X_EXPORT void InitMSP3430(MSP3430Ptr m); 97016a45b2Smrg#define xf86_DetectMSP3430 DetectMSP3430 98016a45b2Smrgextern _X_EXPORT MSP3430Ptr DetectMSP3430(I2CBusPtr b, I2CSlaveAddr addr); 99016a45b2Smrg#define xf86_ResetMSP3430 ResetMSP3430 100016a45b2Smrgextern _X_EXPORT void ResetMSP3430(MSP3430Ptr m); 101016a45b2Smrg#define xf86_MSP3430SetVolume MSP3430SetVolume 102016a45b2Smrgextern _X_EXPORT void MSP3430SetVolume (MSP3430Ptr m, CARD8 value); 103016a45b2Smrg#define xf86_MSP3430SetSAP MSP3430SetSAP 104016a45b2Smrgextern _X_EXPORT void MSP3430SetSAP (MSP3430Ptr m, int mode); 105016a45b2Smrg 106016a45b2Smrg#define MSP3430SymbolsList \ 107016a45b2Smrg "InitMSP3430", \ 108016a45b2Smrg "DetectMSP3430", \ 109016a45b2Smrg "ResetMSP3430", \ 110016a45b2Smrg "MSP3430SetVolume", \ 111016a45b2Smrg "MSP3430SetSAP" 112016a45b2Smrg 113016a45b2Smrg#endif 114