static int __init midas_sensor_init(void) { int ret = 0; /* Gyro & Accelerometer Sensor GPIO init */ #if defined(CONFIG_SENSORS_LSM330DLC) || defined(CONFIG_SENSORS_K330) ret = accel_gpio_init(); if (ret < 0) { pr_err("%s, accel_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = gyro_gpio_init(); if (ret < 0) { pr_err("%s, gyro_gpio_init(err=%d)\n", __func__, ret); return ret; } #endif /* Magnetic Sensor GPIO init */ #ifdef CONFIG_SENSORS_AK8963C ret = ak8963c_gpio_init(); if (ret < 0) { pr_err("%s, ak8963c_gpio_init fail(err=%d)\n", __func__, ret); return ret; } #endif /* Optical Sensor */ #if defined(CONFIG_SENSORS_CM36651) || defined(CONFIG_SENSORS_CM36653) ret = optical_gpio_init(); if (ret) { pr_err("%s, optical_gpio_init(err=%d)\n", __func__, ret); return ret; } #endif /* Add i2c Devices */ if (system_rev >= 8) { ret = i2c_add_devices(0, i2c_devs0_04_bd, ARRAY_SIZE(i2c_devs0_04_bd)); if (ret < 0) { pr_err("%s, i2c0 adding i2c fail(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(1, i2c_devs1_04_bd, ARRAY_SIZE(i2c_devs1_04_bd)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } } else if (system_rev >= 4) { /* I2C channels have been changed since Rev0.3 */ ret = i2c_add_devices(1, i2c_devs1_03_bd, ARRAY_SIZE(i2c_devs1_03_bd)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } } else { ret = i2c_add_devices(0, i2c_devs0_01_bd, ARRAY_SIZE(i2c_devs0_01_bd)); if (ret < 0) { pr_err("%s, i2c0 adding i2c fail(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } } return ret; }
static int __init midas_sensor_init(void) { int ret; pr_info("%s\n", __func__); /* Gyro & Accelerometer Sensor */ #if defined(CONFIG_SENSORS_K330) ret = accel_gpio_init(); if (ret < 0) { pr_err("%s, accel_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = gyro_gpio_init(); if (ret < 0) { pr_err("%s, gyro_gpio_init(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #endif /* Optical Sensor */ #if defined(CONFIG_SENSORS_GP2A) ret = optical_gpio_init(); if (ret) { pr_err("%s, optical_gpio_init(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(9, i2c_devs9_emul, ARRAY_SIZE(i2c_devs9_emul)); if (ret < 0) { pr_err("%s, i2c9 adding i2c fail(err=%d)\n", __func__, ret); return ret; } ret = platform_device_register(&opt_gp2a); if (ret < 0) { pr_err("%s, failed to register opt_gp2a(err=%d)\n", __func__, ret); return ret; } ret = platform_device_register(&light_gp2a); if (ret < 0) { pr_err("%s, failed to register light_gp2a(err=%d)\n", __func__, ret); return ret; } #endif /* Magnetic Sensor */ #ifdef CONFIG_SENSORS_AK8963C ret = ak8963c_gpio_init(); if (ret < 0) { pr_err("%s, ak8963c_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(10, i2c_devs10_emul, ARRAY_SIZE(i2c_devs10_emul)); if (ret < 0) { pr_err("%s, i2c10 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #endif return ret; }
static int __init midas_sensor_init(void) { int ret = 0; /* Gyro & Accelerometer Sensor */ #if defined(CONFIG_SENSORS_LSM330DLC) ret = accel_gpio_init(); if (ret < 0) { pr_err("%s, accel_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = gyro_gpio_init(); if (ret < 0) { pr_err("%s, gyro_gpio_init(err=%d)\n", __func__, ret); return ret; } #elif defined(CONFIG_SENSORS_K3DH) ret = accel_gpio_init(); if (ret < 0) { pr_err("%s, accel_gpio_init fail(err=%d)\n", __func__, ret); return ret; } #endif ret = i2c_add_devices(1, i2c_devs1, ARRAY_SIZE(i2c_devs1)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } /* Optical Sensor */ #if defined(CONFIG_SENSORS_GP2A) || defined(CONFIG_SENSORS_CM36651) || \ defined(CONFIG_SENSORS_CM3663) ret = optical_gpio_init(); if (ret) { pr_err("%s, optical_gpio_init(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(9, i2c_devs9_emul, ARRAY_SIZE(i2c_devs9_emul)); if (ret < 0) { pr_err("%s, i2c9 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #elif defined(CONFIG_SENSORS_BH1721) ret = i2c_add_devices(9, i2c_devs9_emul, ARRAY_SIZE(i2c_devs9_emul)); if (ret < 0) { pr_err("%s, i2c9 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #endif #if defined(CONFIG_SENSORS_GP2A) ret = platform_device_register(&opt_gp2a); if (ret < 0) { pr_err("%s, failed to register opt_gp2a(err=%d)\n", __func__, ret); return ret; } #endif /* Magnetic Sensor */ #ifdef CONFIG_SENSORS_AK8975C ret = ak8975c_gpio_init(); if (ret < 0) { pr_err("%s, ak8975c_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(10, i2c_devs10_emul, ARRAY_SIZE(i2c_devs10_emul)); if (ret < 0) { pr_err("%s, i2c10 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #endif /* Pressure Sensor */ #ifdef CONFIG_SENSORS_LPS331 ret = lps331_gpio_init(); if (ret < 0) { pr_err("%s, ak8975c_gpio_init fail(err=%d)\n", __func__, ret); return ret; } ret = i2c_add_devices(11, i2c_devs11_emul, ARRAY_SIZE(i2c_devs11_emul)); if (ret < 0) { pr_err("%s, i2c1 adding i2c fail(err=%d)\n", __func__, ret); return ret; } #endif return ret; }
/** **************************************************************************************** * @brief Setup the microcontroller system. * * Initialize the system clock and pins. ***************************************************************************************** */ void SystemInit(void) { /* ************************** * Sub module clock setting ************************** */ // Disable all peripheral clock, will be enabled in the driver initilization. timer_clock_off(QN_TIMER0); timer_clock_off(QN_TIMER1); timer_clock_off(QN_TIMER2); timer_clock_off(QN_TIMER3); uart_clock_off(QN_UART0); uart_clock_off(QN_UART1); spi_clock_off(QN_SPI0); usart_reset((uint32_t) QN_SPI1); spi_clock_off(QN_SPI1); flash_clock_off(); gpio_clock_off(); adc_clock_off(); dma_clock_off(); pwm_clock_off(); // Configure sytem clock. syscon_set_sysclk_src(CLK_XTAL, __XTAL); syscon_set_ahb_clk(__AHB_CLK); syscon_set_ble_clk(__BLE_CLK); syscon_set_apb_clk(__APB_CLK); syscon_set_timer_clk(__TIMER_CLK); syscon_set_usart_clk((uint32_t)QN_UART0, __USART_CLK); syscon_set_usart_clk((uint32_t)QN_UART1, __USART_CLK); clk32k_enable(__32K_TYPE); /* ************************** * IO configuration ************************** */ SystemIOCfg(); /* ************************** * Peripheral setting ************************** */ // GPIO initialization for led, button & test control pin. gpio_init(gpio_interrupt_callback); // LED led_init(); // Test controll pin is input to check work mode #if (defined(QN_TEST_CTRL_PIN)) gpio_pull_set(QN_TEST_CTRL_PIN, GPIO_PULL_UP); gpio_set_direction_field(QN_TEST_CTRL_PIN, (uint32_t)GPIO_INPUT); #if (defined(CFG_HCI_UART)) // Initialize HCI UART port uart_init(QN_HCI_PORT, USARTx_CLK(0), UART_9600); uart_tx_enable(QN_HCI_PORT, MASK_ENABLE); uart_rx_enable(QN_HCI_PORT, MASK_ENABLE); #elif (defined(CFG_HCI_SPI)) // Initialize HCI SPI port spi_init(QN_HCI_PORT, SPI_BITRATE(1000000), SPI_8BIT, SPI_SLAVE_MOD); gpio_set_direction_field(CFG_HCI_SPI_WR_CTRL_PIN, (uint32_t)GPIO_OUTPUT); gpio_write_pin(CFG_HCI_SPI_WR_CTRL_PIN, GPIO_HIGH); #endif #endif // Button button_init(); // Accelerometer accel_gpio_init(); #if (QN_DBG_PRINT) uart_init(QN_DEBUG_UART, USARTx_CLK(0), UART_115200); uart_tx_enable(QN_DEBUG_UART, MASK_ENABLE); uart_rx_enable(QN_DEBUG_UART, MASK_ENABLE); #endif }