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

📄 dcf_reg.c

📁 机顶盒解调芯片DCF8722驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
   { ST0_RID_PMFAGC_4,  0x74,  0x00,  0x01,  0x0C,  0x00,  0x38,  0x0C,  0x00,  "PMFAGC_4"     },
   /* CONFIGURATION AND CONTROL */
   { ST0_RID_CTRL_0,  0x80,  0x00,  0x01,  0x00,  0x00,  0x39,  0x00,  0x00,  "CTRL_0"       },
   { ST0_RID_CTRL_1,  0x81,  0x00,  0x01,  0x00,  0x00,  0x3A,  0x00,  0x00,  "CTRL_1"       },
   { ST0_RID_CTRL_2,  0x82,  0x00,  0x01,  0x0F,  0x00,  0x3B,  0x00,  0x00,  "CTRL_2"       },
   { ST0_RID_CTRL_3,  0x83,  0x00,  0x01,  0x00,  0x00,  0x3C,  0x00,  0x00,  "CTRL_3"       },
   { ST0_RID_CTRL_4,  0x84,  0x00,  0x01,  0x2A,  0x00,  0x3D,  0x2A,  0x00,  "CTRL_4"       },
   { ST0_RID_CTRL_5,  0x85,  0x00,  0x01,  0x00,  0x00,  0x3E,  0x00,  0x00,  "CTRL_5"       },
   { ST0_RID_CTRL_6,  0x86,  0x00,  0x01,  0x40,  0x00,  0x3F,  0x40,  0x00,  "CTRL_6"       },
   { ST0_RID_CTRL_7,  0x87,  0x00,  0x01,  0x6B,  0x00,  0x40,  0x83,  0x00,  "CTRL_7"       },
   { ST0_RID_CTRL_8,  0x88,  0x00,  0x01,  0x00,  0x00,  0x41,  0x00,  0x00,  "CTRL_8"       },
   { ST0_RID_CTRL_9,  0x89,  0x00,  0x01,  0x00,  0x00,  0x42,  0x00,  0x00,  "CTRL_9"       },
   /* DEINTERLEAVER SYNC DETECTOR */
   { ST0_RID_DEINT_SYNC_0,  0x90,  0x00,  0x01,  0x02,  0x00,  0x43,  0x01,  0x00,  "DEINT_SYNC_0" },
   { ST0_RID_DEINT_SYNC_1,  0x91,  0x00,  0x00,  0x00,  0x00,  0x44,  0x01,  0x00,  "DEINT_SYNC_1" },
   /* INTEGRATED BER TESTER */
   { ST0_RID_BERT_0,  0xA0,  0x00,  0x01,  0x00,  0x00,  0x45,  0x00,  0x00,  "BERT_0"       },
   { ST0_RID_BERT_1,  0xA1,  0x00,  0x00,  0x00,  0x00,  0x46,  0x00,  0x00,  "BERT_1"       },
   { ST0_RID_BERT_2,  0xA2,  0x00,  0x00,  0x00,  0x00,  0x47,  0x00,  0x00,  "BERT_2"       },
   /* DEINTERLEAVER: Interleaving depth is 12, cell depth is 17. */
   { ST0_RID_DEINT_0,  0xB0,  0x00,  0x01,  0x91,  0x00,  0x48,  0x91,  0x00,  "DEINT_0"      },
   { ST0_RID_DEINT_1,  0xB1,  0x00,  0x01,  0x0B,  0x00,  0x49,  0x0B,  0x00,  "DEINT_1"      },
   /* OUTPUT FORMATTER */
   { ST0_RID_OUTFORMAT_0,  0xC0,  0x00,  0x01,  0x4B,  0x00,  0x4A,  0x53,  0x00,  "OUTFORMAT_0"  },
   { ST0_RID_OUTFORMAT_1,  0xC1,  0x00,  0x01,  0x30,  0x00,  0x4B,  0x10,  0x00,  "OUTFORMAT_1"  },
   { ST0_RID_OUTFORMAT_2,  0xC2,  0x00,  0x01,  0x24,  0x00,  0x4C,  0x24,  0x00,  "OUTFORMAT_2"  },
   /* REED-SOLOMON DESCRAMBLER SYNC DETECTOR */
   { ST0_RID_RS_DESC_0,  0xD0,  0x00,  0x00,  0x00,  0x00,  0x4D,  0x00,  0x00,  "RS_DESC_0"    },
   { ST0_RID_RS_DESC_1,  0xD1,  0x00,  0x00,  0x00,  0x00,  0x4E,  0x00,  0x00,  "RS_DESC_1"    },
   { ST0_RID_RS_DESC_2,  0xD2,  0x00,  0x00,  0x00,  0x00,  0x4F,  0x00,  0x00,  "RS_DESC_2"    },
   { ST0_RID_RS_DESC_3,  0xD3,  0x00,  0x00,  0x00,  0x00,  0x50,  0x00,  0x00,  "RS_DESC_3"    },
   { ST0_RID_RS_DESC_4,  0xD4,  0x00,  0x00,  0x00,  0x00,  0x51,  0x00,  0x00,  "RS_DESC_4"    },
   { ST0_RID_RS_DESC_5,  0xD5,  0x00,  0x00,  0x00,  0x00,  0x52,  0x00,  0x00,  "RS_DESC_5"    },
   { ST0_RID_RS_DESC_14,  0xDE,  0x00,  0x01,  0x00,  0x00,  0x53,  0x00,  0x00,  "RS_DESC_14"   },
   { ST0_RID_RS_DESC_15,  0xDF,  0x00,  0x01,  0x81,  0x00,  0x54,  0x00,  0x00,  "RS_DESC_15"   },
   /* !!! Don't insert or delete these registers. !!! */
   /* !!! Add new registers here. !!! */
   /*  addr   value  wflag  start  store  resv1  resv2  resv3  name[]         */
   { ST0_RID_EQU_2,  0x02,  0x00,  0x00,  0x00,  0x00,  0x55,  0x00,  0x00,  "EQU_2"        }, /* reserved */
   { ST0_RID_EQU_5,  0x05,  0x00,  0x00,  0x00,  0x00,  0x56,  0x00,  0x00,  "EQU_5"        }, /* reserved */
   { ST0_RID_EQU_6,  0x06,  0x00,  0x00,  0x00,  0x00,  0x57,  0x00,  0x00,  "EQU_6"        }, /* reserved */
   { ST0_RID_DEINT_2,  0xB2,  0x00,  0x00,  0x00,  0x00,  0x58,  0x00,  0x00,  "DEINT_2"      }, /* reserved */
   { ST0_RID_DEINT_3,  0xB3,  0x00,  0x00,  0x00,  0x00,  0x59,  0x00,  0x00,  "DEINT_3"      }  /* reserved */
};

#elif (NIM_DCF_VENDOR == CTT_XIMEI_NIM)
/***************************/
/* FOR XIMEI DTC1SA02-E14D */
/***************************/
   #error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"

#elif (NIM_DCF_VENDOR == CTT_SVA_NIM)
/***************************/
/* FOR SVA                 */
/***************************/
   #error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"

#else
   #error "ERROR! NO VALID DEMODULATOR INITIALIZATION PARAMETERS DEFINED"
#endif

#endif  /*#if defined(TOWER_CABLE_TUNER) && (TOWER_CABLE_TUNER==YES)*/


/*****************************************************************************/
/*  FUNCTION:    DCF_RegRead                                                 */
/*                                                                           */
/*  PARAMETERS:  pNim - Pointer to DCF_NIM structure allocated by app.       */
/*               U16RegIndex - Register offset to be read.                   */
/*               pu8RegData - Pointer to register value.                     */
/*               i2c_dev - Use specified io method for read/write.           */
/*                                                                           */
/*  DESCRIPTION: This function reads from the specified register offset of   */
/*               the specified demod unit and returns the value read.        */
/*                                                                           */
/*  RETURNS:     True if successful, False if unsuccessful.                  */
/*                                                                           */
/*  CONTEXT:     Must be called from non-interrupt context.                  */
/*                                                                           */
/*****************************************************************************/
bool DCF_RegRead(
   DCF_NIM          *pNim,
   unsigned short   u16RegIndex, 
   unsigned char    u8RegCount,
   unsigned char*   pu8RegData,
   DCF_IIC_DEV      i2c_dev)
{
	bool             bRetVal;
   int              i;
   
   /* sanity check */
   if((pNim == NULL) || (pu8RegData == NULL) || (u8RegCount > DCF_I2CBF_LEN))
      return(False);

   /* get the semaphore that protects the NIM operation */
   if (RC_OK != sem_get(gsemDCFRegRW, KAL_WAIT_FOREVER))
   {
      return(False);
   }
   
   /* initialize input registers shadow */
   for(i = 0; i < u8RegCount; i++)
   {
      *(pu8RegData + i) = 0;
   }

   /* handle register read */
   switch(i2c_dev)
   {
   	/* Assume that DEMOD is bound to CPU via I2C, or customer will extend in BusRead */
      case DCF_DEMOD_I2C:
         bRetVal = (pNim->BusRead)(pNim->demod_handle, u16RegIndex, u8RegCount, pu8RegData);
         break;

      case DCF_TUNER_I2C:
         /* set repeater mode */
         bRetVal = TUA_TUNER_DRIVER_Start_I2C_Repeater(pNim);
         if(bRetVal == False)
         {
            sem_put(gsemDCFRegRW);
            break;
         }
         /* read target tuner register */
      #if(DCF_INCLUDE_TUA)
         bRetVal = (pNim->BusRead)((pNim->tuner.tua6020.tuner_handle), u16RegIndex, u8RegCount, pu8RegData);
         if(bRetVal == False)
         {
            sem_put(gsemDCFRegRW);
            break;
         }
      #endif
         /* disable I2C repeater mode */
         bRetVal = TUA_TUNER_DRIVER_Stop_I2C_Repeater(pNim);
         break;

      default:
         bRetVal = False;
         break;
   }
   sem_put(gsemDCFRegRW);
   return(bRetVal);
} /* DCF_RegisterRead */

/*****************************************************************************/
/*  FUNCTION:    DCF_RegWrite                                                */
/*                                                                           */
/*  PARAMETERS:  pNim - Pointer to DCF_NIM structure allocated by app.       */
/*               u16RegIndex - Register offset to be writren.                */
/*               u8RegCount - Number of registers to be written              */
/*               pu8RegData - Pointer to CMD to be written to resgisters.    */
/*               i2c_dev - Use specified io method for read/write.           */
/*                                                                           */
/*  DESCRIPTION: This function reads from the specified register offset of   */
/*               the specified demod unit and returns the value read.        */
/*                                                                           */
/*  RETURNS:     True - successful, False - unsuccessful.                    */
/*                                                                           */
/*  CONTEXT:     Must be called from non-interrupt context.                  */
/*                                                                           */
/*****************************************************************************/

bool DCF_RegWrite(
   DCF_NIM          *pNim,
   unsigned short   u16RegIndex, 
   unsigned char    u8RegCount,
   unsigned char    *pu8RegData,
   DCF_IIC_DEV      i2c_dev)
{
   bool             bRetVal;

   /* sanity check */
   if((pNim == NULL) || (pu8RegData == NULL) || (u8RegCount > DCF_I2CBF_LEN))
      return(False);

   /* handle I2C write */
   switch (i2c_dev)
   {
         	/* Assume that DEMOD is bound to CPU via I2C, or customer will extend in BusWrite */
      case DCF_DEMOD_I2C:
         bRetVal = (pNim->BusWrite)(pNim->demod_handle, u16RegIndex, u8RegCount, pu8RegData);
         break;


      case DCF_TUNER_I2C:
         /* set repeater mode */
         bRetVal = TUA_TUNER_DRIVER_Start_I2C_Repeater(pNim);
         if(bRetVal == False)
            break;
         /* write target tuner register */
      #if(DCF_INCLUDE_TUA)
         bRetVal = (pNim->BusWrite)((pNim->tuner.tua6020.tuner_handle), u16RegIndex, u8RegCount, pu8RegData);
         if(bRetVal == False)
            break;
      #endif
         /* disable I2C repeater mode */
         bRetVal = TUA_TUNER_DRIVER_Stop_I2C_Repeater(pNim);
         break;

      default:
         bRetVal = False;
         break;
   }
   return(bRetVal);
} /* DCF_RegWrite */

/****************************************************************************
 * Modifications:
 * $Log: 
 *
 * $
 *
 ****************************************************************************/

⌨️ 快捷键说明

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