在bsp pci 驱动初始化后,在设备驱动函数中添加PCI sata 控制器初始化代码
pciStorageAtaInit(); /* ATA 控制器设备初始化 */
pciStorageSataInit(); /* SATA 控制器设备初始化 */
从pciStorageAtaInit 进行PCI 扫描检测,并进行PCI 设备初始化操作;
INT pciStorageAtaInit (VOID)
{
INT iRet; /* 操作结果 */
PCI_DRV_CB tPciDrv; /* 驱动控制器用于注册驱动 */
PCI_DRV_HANDLE hPciDrv = &tPciDrv; /* 驱动控制块句柄 */
lib_bzero(hPciDrv, sizeof(PCI_DRV_CB)); /* 复位驱动控制块参数 */
iRet = pciStorageAtaDevIdTblGet(&hPciDrv->PCIDRV_hDrvIdTable, &hPciDrv->PCIDRV_uiDrvIdTableSize);
if (iRet != ERROR_NONE) { /* 获取设备 ID 表失败 */
return (PX_ERROR);
}
/* 设置驱动名称 */
lib_strlcpy(&hPciDrv->PCIDRV_cDrvName[0], ATA_PCI_DRV_NAME, PCI_DRV_NAME_MAX);
hPciDrv->PCIDRV_pvPriv = LW_NULL; /* 设备驱动的私有数据 */
hPciDrv->PCIDRV_hDrvErrHandler = LW_NULL; /* 驱动错误处理 */
hPciDrv->PCIDRV_pfuncDevProbe = pciStorageAtaDevProbe; /* 设备探测函数, 不能为空 */
hPciDrv->PCIDRV_pfuncDevRemove = pciStorageAtaDevRemove; /* 驱动移除函数, 不能为空 */
iRet = API_PciDrvRegister(hPciDrv); /* 注册 PCI 设备驱动 */
if (iRet != ERROR_NONE) {
return (PX_ERROR);
}
return (ERROR_NONE);
}