aci.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #ifndef _ACI_H_
  2. #define _ACI_H_
  3. extern int aci_port;
  4. extern int aci_idcode[2]; /* manufacturer and product ID */
  5. extern int aci_version; /* ACI firmware version */
  6. extern int aci_rw_cmd(int write1, int write2, int write3);
  7. #define aci_indexed_cmd(a, b) aci_rw_cmd(a, b, -1)
  8. #define aci_write_cmd(a, b)   aci_rw_cmd(a, b, -1)
  9. #define aci_read_cmd(a)       aci_rw_cmd(a,-1, -1)
  10. #define COMMAND_REGISTER    (aci_port)      /* write register */
  11. #define STATUS_REGISTER     (aci_port + 1)  /* read register */
  12. #define BUSY_REGISTER       (aci_port + 2)  /* also used for rds */
  13. #define RDS_REGISTER        BUSY_REGISTER
  14. #define ACI_SET_MUTE          0x0d
  15. #define ACI_SET_POWERAMP      0x0f
  16. #define ACI_SET_TUNERMUTE     0xa3
  17. #define ACI_SET_TUNERMONO     0xa4
  18. #define ACI_SET_IDE           0xd0
  19. #define ACI_SET_WSS           0xd1
  20. #define ACI_SET_SOLOMODE      0xd2
  21. #define ACI_WRITE_IGAIN       0x03
  22. #define ACI_WRITE_TUNE        0xa7
  23. #define ACI_READ_TUNERSTEREO  0xa8
  24. #define ACI_READ_TUNERSTATION 0xa9
  25. #define ACI_READ_VERSION      0xf1
  26. #define ACI_READ_IDCODE       0xf2
  27. #define ACI_INIT              0xff
  28. #define ACI_STATUS            0xf0
  29. #define     ACI_S_GENERAL     0x00
  30. #define     ACI_S_READ_IGAIN  0x21
  31. #define ACI_ERROR_OP          0xdf
  32. /*
  33.  * The following macro SCALE can be used to scale one integer volume
  34.  * value into another one using only integer arithmetic. If the input
  35.  * value x is in the range 0 <= x <= xmax, then the result will be in
  36.  * the range 0 <= SCALE(xmax,ymax,x) <= ymax.
  37.  *
  38.  * This macro has for all xmax, ymax > 0 and all 0 <= x <= xmax the
  39.  * following nice properties:
  40.  *
  41.  * - SCALE(xmax,ymax,xmax) = ymax
  42.  * - SCALE(xmax,ymax,0) = 0
  43.  * - SCALE(xmax,ymax,SCALE(ymax,xmax,SCALE(xmax,ymax,x))) = SCALE(xmax,ymax,x)
  44.  *
  45.  * In addition, the rounding error is minimal and nicely distributed.
  46.  * The proofs are left as an exercise to the reader.
  47.  */
  48. #define SCALE(xmax,ymax,x) (((x)*(ymax)+(xmax)/2)/(xmax))
  49. #endif  /* _ACI_H_ */