static int ak4671_probe(struct platform_device *pdev) { struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct ak4671_setup_data *setup; struct snd_soc_codec *codec; struct ak4671_priv *ak4671; int ret = 0; printk(KERN_INFO "AK4671 Audio Codec %s", AK4671_VERSION); /* Board Specific function */ audio_init(); if (amp_init() < 0) printk("amp init failed.\n"); audio_power(1); ak4671_power = 1; amp_set_path(AK4671_AMP_PATH_SPK); mic_set_path(AK4671_MIC_PATH_MAIN); ret = device_create_file(&pdev->dev, &dev_attr_ak4671_control); setup = socdev->codec_data; codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL); if (codec == NULL) return -ENOMEM; ak4671 = kzalloc(sizeof(struct ak4671_priv), GFP_KERNEL); if (ak4671 == NULL) { kfree(codec); return -ENOMEM; } codec->private_data = ak4671; socdev->codec = codec; mutex_init(&codec->mutex); INIT_LIST_HEAD(&codec->dapm_widgets); INIT_LIST_HEAD(&codec->dapm_paths); ak4671_socdev = socdev; #if defined(CONFIG_I2C) || defined(CONFIG_I2C_MODULE) if (setup->i2c_address) { normal_i2c[0] = setup->i2c_address; codec->hw_write = (hw_write_t)i2c_master_send; codec->hw_read = (hw_read_t)i2c_master_recv; ret = i2c_add_driver(&ak4671_i2c_driver); if (ret != 0) printk(KERN_ERR "can't add i2c driver"); } #else /* Add other interfaces here */ #endif if (ret != 0) { kfree(codec->private_data); kfree(codec); } return ret; }
int main(void) { // u8 a[] = {0xAA, 0xAA, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,0x99,0xa0,0x04,0x10,0x08,0x01,0x08,0x99}; u8 a[] = {0x11, 0x22, 0x33,0x44, 0x55, 0x66, 0x77}; RobotRate rate; WheelSpeed wheelspeed; SystemInit(); USART1_Init(115200); USART2_Init(115200); USART3_Init(38400); UART4_Init(115200); CAN1_Init(); LED_Init(); // TIM2_Init(); TIM3_Init(); SysTick_Init(); Motor_init(); amp_init(); mag_sensor_init(); flash_init(); DelayMs(1000); //Time for Motor Driver Board to init //set_all_speedctl(); t3 = micros(); //*************************initial sensor***************************************************************// while(t < 0x15) { if(UART4RecvPtrR != UART4RecvPtrW) { op = AHRSCheckDataFrame(); if(op == ACC_METER || op == GYRO || op == ANGLE_OUTPUT || op == MAG_METER ) { SensorInitial(op); t++; } } t4 = micros(); time_taken = t4 - t3; if(time_taken > 3000000) { //break; } } sch_init(); sch_add_task(sensors, 6, 20); sch_add_task(AHRS_compute, 1, 50); // sch_add_task(led_task, 4, 100); sch_add_task(UART2Proc, 10, 20); // sch_add_task(UART3Proc, 3, 20); // sch_add_task(UART3Proc, 4, 20); // sch_add_task(FRIDCheck, 2, 20); sch_start(); while (1) { sch_dispatch_tasks(); //Welcome(); } }