示例#1
0
static int __devinit ltq_deu_probe(struct platform_device *pdev)
{
    int ret = -ENOSYS;


    START_DEU_POWER;
    
#define IFX_DEU_DRV_VERSION         "2.0.0"
         printk(KERN_INFO "Infineon Technologies DEU driver version %s \n", IFX_DEU_DRV_VERSION);

    FIND_DEU_CHIP_VERSION;

#if defined(CONFIG_CRYPTO_DEV_DES)
    if ((ret = ifxdeu_init_des ())) {
        printk (KERN_ERR "IFX DES initialization failed!\n");
    }
#endif
#if defined(CONFIG_CRYPTO_DEV_AES)
    if ((ret = ifxdeu_init_aes ())) {
        printk (KERN_ERR "IFX AES initialization failed!\n");
    }

#endif
#if defined(CONFIG_CRYPTO_DEV_ARC4)
    if ((ret = ifxdeu_init_arc4 ())) {
        printk (KERN_ERR "IFX ARC4 initialization failed!\n");
    }

#endif
#if defined(CONFIG_CRYPTO_DEV_SHA1)
    if ((ret = ifxdeu_init_sha1 ())) {
        printk (KERN_ERR "IFX SHA1 initialization failed!\n");
    }
#endif
#if defined(CONFIG_CRYPTO_DEV_MD5)
    if ((ret = ifxdeu_init_md5 ())) {
        printk (KERN_ERR "IFX MD5 initialization failed!\n");
    }

#endif
#if defined(CONFIG_CRYPTO_DEV_SHA1_HMAC)
    if ((ret = ifxdeu_init_sha1_hmac ())) {
        printk (KERN_ERR "IFX SHA1_HMAC initialization failed!\n");
    }
#endif
#if defined(CONFIG_CRYPTO_DEV_MD5_HMAC)
    if ((ret = ifxdeu_init_md5_hmac ())) {
        printk (KERN_ERR "IFX MD5_HMAC initialization failed!\n");
    }
#endif



    return ret;

}
static int __init deu_init(void)
{
	int ret = -ENOSYS;
	
printk( "Infineon DEU initialization.\n");


#if defined(CONFIG_CRYPTO_DEV_INCAIP2)  | defined(CONFIG_CRYPTO_DEV_DANUBE)
volatile struct clc_controlr_t *clc = (struct clc_controlr_t*) CLC_START;
#ifdef CONFIG_CRYPTO_DEV_INCAIP2
	*INCA_IP2_PMS_PMS_GEN |=0x00040000;
#endif

#ifdef CONFIG_CRYPTO_DEV_DANUBE

//pmu_set((DANUBE_PMU_IOC_SET_DEU & 0xff), 1);

*DANUBE_PMU_PWDCR &= ((~(1 << 20)) );  //& 0x3fffff


#endif
	clc->FSOE= 0;
	clc->SBWE = 0;
	clc->SPEN = 0;
	clc->SBWE = 0;
	clc->DISS = 0;
	clc->DISR = 0;

#endif 


#ifdef CONFIG_CRYPTO_DEV_INCAIP1_DES

	if ((ret = ifxdeu_init_des())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
#endif
#ifdef CONFIG_CRYPTO_DEV_INCAIP1_AES
	if ((ret = ifxdeu_init_aes())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
	
#endif


#ifdef CONFIG_CRYPTO_DEV_INCAIP2_DES

	if ((ret = ifxdeu_init_des())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
#endif
#ifdef CONFIG_CRYPTO_DEV_INCAIP2_AES
	if ((ret = ifxdeu_init_aes())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
#endif

#ifdef CONFIG_CRYPTO_DEV_INCAIP2_SHA1

	if ((ret = ifxdeu_init_sha1())) {
		printk(KERN_ERR "Infineon IncaIP2 DES initialization failed.\n");
		return ret;
	}
#endif
#ifdef CONFIG_CRYPTO_DEV_INCAIP2_MD5
	if ((ret = ifxdeu_init_md5())) {
		printk(KERN_ERR "Infineon IncaIP2 DES initialization failed.\n");
		return ret;
	}
	
#endif


#ifdef CONFIG_CRYPTO_DEV_DANUBE_DES

	if ((ret = ifxdeu_init_des())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
#endif
#ifdef CONFIG_CRYPTO_DEV_DANUBE_AES
	if ((ret = ifxdeu_init_aes())) {
		printk(KERN_ERR "Infineon IncaIP1 DES initialization failed.\n");
		return ret;
	}
#endif

#ifdef CONFIG_CRYPTO_DEV_DANUBE_SHA1

	if ((ret = ifxdeu_init_sha1())) {
		printk(KERN_ERR "Infineon IncaIP2 DES initialization failed.\n");
		return ret;
	}
#endif
#ifdef CONFIG_CRYPTO_DEV_DANUBE_MD5
	if ((ret = ifxdeu_init_md5())) {
		printk(KERN_ERR "Infineon IncaIP2 DES initialization failed.\n");
		return ret;
	}
	
#endif


	if (ret == -ENOSYS)
		printk(KERN_ERR "Infineon DEU was compiled without any algorithm.\n");

	return ret;
}