/** * @brief: initial ak3916 machine * * @author: caolianming * @date: 2014-01-09 */ static void __init ak3910_init_machine(void) { adc1_init(); spi_register_board_info(ak39_spi_board_dev, ARRAY_SIZE(ak39_spi_board_dev)); ak39_spi1_device.dev.platform_data = &ak39_spi1_info; ak39_motor0_device.dev.platform_data = &ak39_motor0_pdata; ak39_motor1_device.dev.platform_data = &ak39_motor1_pdata; ak39_mmc_device.dev.platform_data = &mmc_plat_data; ak39_sdio_device.dev.platform_data = &sdio_plat_data; ak39_crypto_device.dev.platform_data = &akcrypto_pdata; ak39_usb_otg_hcd_device.dev.platform_data = &akotghc_plat_data; ak39_mac_device.dev.platform_data = &ak39_mac_pdata; ak39_led_pdev.dev.platform_data = &led_pdata; ak39_gpio_keys_device.dev.platform_data = &gpio_keys_platform_data; ak39_battery_power.dev.platform_data = &ak39_bat_info; ak39_camera_interface.dev.platform_data = &ak39_camera_info; platform_add_devices(ak3910_platform_devices, ARRAY_SIZE(ak3910_platform_devices)); l2_init(); return; }
/** * @brief * @param * @retval */ static void device_init(void) { port_init(); #ifdef INTERFACE_4WIRE_SPI spi1_init(); #endif iic_init(); adc1_init(); }
uint16_t adc1_read(int chan) { if((chan < 0) || (7 < chan)) return 0; //print1("start adc"); adc1_init(); AT91C_BASE_ADC->ADC_CHER = (1 << chan); AT91C_BASE_ADC->ADC_CR = 0x2; while(!(AT91C_BASE_ADC->ADC_SR & (1 << chan))); uint32_t *ptr = (uint32_t*)&(AT91C_BASE_ADC->ADC_CDR0); ptr += chan; uint16_t res = *ptr; //print1("end adc"); return res; }