Esempio n. 1
0
INT32 hif_sdio_create_dev_node(void)
{
    INT32 iResult = -1;

    HIF_SDIO_DBG_FUNC("++");
    iResult = register_chrdev(hifSdioMajor, kObjName, &hifDevOps);
    if (0 > iResult) {
        HIF_SDIO_ERR_FUNC("register_chrdev failed.\n");
        iResult = -1;
    } else {
        hifSdioMajor = hifSdioMajor == 0 ? iResult : hifSdioMajor;
        HIF_SDIO_INFO_FUNC("register_chrdev succeed, mtk_jajor = %d\n",
                           hifSdioMajor);
        pHifClass = class_create(THIS_MODULE, HifClassName);
        if (IS_ERR(pHifClass)) {
            HIF_SDIO_ERR_FUNC("class_create error\n");
            iResult = -2;
        } else {
            pHifDev =
                device_create(pHifClass, NULL,
                              MKDEV(hifSdioMajor,
                                    0), NULL,
                              HifClassName, "%d", 0);
            if (IS_ERR(pHifDev)) {
                HIF_SDIO_ERR_FUNC("device_create error:%ld\n",
                                  PTR_ERR(pHifDev));
                iResult = -3;
            } else {
                HIF_SDIO_INFO_FUNC("device_create succeed\n");
                iResult = 0;
            }
        }
    }
    return iResult;
}
Esempio n. 2
0
static long hif_sdio_unlocked_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
{
    int retval = 0;

    HIF_SDIO_DBG_FUNC("cmd (%d)\n", cmd);

    switch (cmd) {
    case COMBO_IOCTL_GET_CHIP_ID:
        gComboChipId = 0x6628;
        retval = gComboChipId;
        HIF_SDIO_INFO_FUNC("get combo chip id: 0x%x\n", gComboChipId);
        break;
    case COMBO_IOCTL_SET_CHIP_ID:
        gComboChipId = arg;
        HIF_SDIO_INFO_FUNC("set combo chip id to 0x%x\n", gComboChipId);
        break;
    default:
        HIF_SDIO_WARN_FUNC("unknown cmd (%d)\n", cmd);
        retval = 0;
        break;
    }
    return retval;
}