int spi_dw_init(struct device *dev) { struct spi_dw_config *info = dev->config->config_info; struct spi_dw_data *spi = dev->driver_data; _clock_config(dev); _clock_on(dev); #ifndef CONFIG_SOC_QUARK_SE_SS if (read_ssi_comp_version(info->regs) != DW_SSI_COMP_VERSION) { _clock_off(dev); return DEV_NOT_CONFIG; } #endif dev->driver_api = &dw_spi_api; info->config_func(); device_sync_call_init(&spi->sync); _spi_config_cs(dev); /* Masking interrupt and making sure controller is disabled */ write_imr(DW_SPI_IMR_MASK, info->regs); clear_bit_ssienr(info->regs); DBG("Designware SPI driver initialized on device: %p\n", dev); return DEV_OK; }
int spi_dw_init(struct device *dev) { const struct spi_dw_config *info = dev->config->config_info; struct spi_dw_data *spi = dev->driver_data; _clock_config(dev); _clock_on(dev); info->config_func(); /* Masking interrupt and making sure controller is disabled */ write_imr(DW_SPI_IMR_MASK, info->regs); clear_bit_ssienr(info->regs); LOG_DBG("Designware SPI driver initialized on device: %p", dev); spi_context_unlock_unconditionally(&spi->ctx); return 0; }
int spi_dw_init(struct device *dev) { const struct spi_dw_config *info = dev->config->config_info; struct spi_dw_data *spi = dev->driver_data; _clock_config(dev); _clock_on(dev); info->config_func(); k_sem_init(&spi->device_sync_sem, 0, UINT_MAX); _spi_config_cs(dev); /* Masking interrupt and making sure controller is disabled */ write_imr(DW_SPI_IMR_MASK, info->regs); clear_bit_ssienr(info->regs); SYS_LOG_DBG("Designware SPI driver initialized on device: %p", dev); return 0; }