Loading drivers/spi/spi_qsd.c +13 −10 Original line number Diff line number Diff line Loading @@ -1830,15 +1830,15 @@ err_setup_exit: static int debugfs_iomem_x32_set(void *data, u64 val) { struct msm_spi_regs *debugfs_spi_regs = (struct msm_spi_regs *)data; struct msm_spi *dd = debugfs_spi_regs->dd; struct msm_spi_debugfs_data *reg = (struct msm_spi_debugfs_data *)data; struct msm_spi *dd = reg->dd; int ret; ret = pm_runtime_get_sync(dd->dev); if (ret < 0) return ret; writel_relaxed(val, (dd->base + debugfs_spi_regs->offset)); writel_relaxed(val, (dd->base + reg->offset)); /* Ensure the previous write completed. */ mb(); Loading @@ -1849,14 +1849,14 @@ static int debugfs_iomem_x32_set(void *data, u64 val) static int debugfs_iomem_x32_get(void *data, u64 *val) { struct msm_spi_regs *debugfs_spi_regs = (struct msm_spi_regs *)data; struct msm_spi *dd = debugfs_spi_regs->dd; struct msm_spi_debugfs_data *reg = (struct msm_spi_debugfs_data *)data; struct msm_spi *dd = reg->dd; int ret; ret = pm_runtime_get_sync(dd->dev); if (ret < 0) return ret; *val = readl_relaxed(dd->base + debugfs_spi_regs->offset); *val = readl_relaxed(dd->base + reg->offset); /* Ensure the previous read completed. */ mb(); Loading @@ -1870,18 +1870,21 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_iomem_x32, debugfs_iomem_x32_get, static void spi_debugfs_init(struct msm_spi *dd) { dd->dent_spi = debugfs_create_dir(dev_name(dd->dev), NULL); char dir_name[20]; scnprintf(dir_name, sizeof(dir_name), "%s_dbg", dev_name(dd->dev)); dd->dent_spi = debugfs_create_dir(dir_name, NULL); if (dd->dent_spi) { int i; for (i = 0; i < ARRAY_SIZE(debugfs_spi_regs); i++) { debugfs_spi_regs[i].dd = dd; dd->reg_data[i].offset = debugfs_spi_regs[i].offset; dd->reg_data[i].dd = dd; dd->debugfs_spi_regs[i] = debugfs_create_file( debugfs_spi_regs[i].name, debugfs_spi_regs[i].mode, dd->dent_spi, debugfs_spi_regs+i, dd->dent_spi, &dd->reg_data[i], &fops_iomem_x32); } } Loading drivers/spi/spi_qsd.h +35 −38 Original line number Diff line number Diff line Loading @@ -214,52 +214,48 @@ struct spi_cs_gpio { }; #ifdef CONFIG_DEBUG_FS struct msm_spi_debugfs_data { int offset; struct msm_spi *dd; }; /* Used to create debugfs entries */ static struct msm_spi_regs{ const char *name; mode_t mode; int offset; struct msm_spi *dd; } debugfs_spi_regs[] = { {"config", S_IRUGO | S_IWUSR, SPI_CONFIG, NULL}, {"io_control", S_IRUGO | S_IWUSR, SPI_IO_CONTROL, NULL}, {"io_modes", S_IRUGO | S_IWUSR, SPI_IO_MODES, NULL}, {"sw_reset", S_IWUSR, SPI_SW_RESET, NULL}, {"time_out_current", S_IRUGO, SPI_TIME_OUT_CURRENT, NULL}, {"mx_output_count", S_IRUGO | S_IWUSR, SPI_MX_OUTPUT_COUNT, NULL}, {"mx_output_cnt_current", S_IRUGO, SPI_MX_OUTPUT_CNT_CURRENT, NULL}, {"mx_input_count", S_IRUGO | S_IWUSR, SPI_MX_INPUT_COUNT, NULL}, {"mx_input_cnt_current", S_IRUGO, SPI_MX_INPUT_CNT_CURRENT, NULL}, {"mx_read_count", S_IRUGO | S_IWUSR, SPI_MX_READ_COUNT, NULL}, {"mx_read_cnt_current", S_IRUGO, SPI_MX_READ_CNT_CURRENT, NULL}, {"operational", S_IRUGO | S_IWUSR, SPI_OPERATIONAL, NULL}, {"error_flags", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS, NULL}, {"error_flags_en", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS_EN, NULL}, {"deassert_wait", S_IRUGO | S_IWUSR, SPI_DEASSERT_WAIT, NULL}, {"output_debug", S_IRUGO, SPI_OUTPUT_DEBUG, NULL}, {"input_debug", S_IRUGO, SPI_INPUT_DEBUG, NULL}, {"test_ctrl", S_IRUGO | S_IWUSR, SPI_TEST_CTRL, NULL}, {"output_fifo", S_IWUSR, SPI_OUTPUT_FIFO, NULL}, {"input_fifo" , S_IRUSR, SPI_INPUT_FIFO, NULL}, {"spi_state", S_IRUGO | S_IWUSR, SPI_STATE, NULL}, {"config", S_IRUGO | S_IWUSR, SPI_CONFIG }, {"io_control", S_IRUGO | S_IWUSR, SPI_IO_CONTROL }, {"io_modes", S_IRUGO | S_IWUSR, SPI_IO_MODES }, {"sw_reset", S_IWUSR, SPI_SW_RESET }, {"time_out_current", S_IRUGO, SPI_TIME_OUT_CURRENT }, {"mx_output_count", S_IRUGO | S_IWUSR, SPI_MX_OUTPUT_COUNT }, {"mx_output_cnt_current", S_IRUGO, SPI_MX_OUTPUT_CNT_CURRENT }, {"mx_input_count", S_IRUGO | S_IWUSR, SPI_MX_INPUT_COUNT }, {"mx_input_cnt_current", S_IRUGO, SPI_MX_INPUT_CNT_CURRENT }, {"mx_read_count", S_IRUGO | S_IWUSR, SPI_MX_READ_COUNT, }, {"mx_read_cnt_current", S_IRUGO, SPI_MX_READ_CNT_CURRENT }, {"operational", S_IRUGO | S_IWUSR, SPI_OPERATIONAL }, {"error_flags", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS }, {"error_flags_en", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS_EN }, {"deassert_wait", S_IRUGO | S_IWUSR, SPI_DEASSERT_WAIT }, {"output_debug", S_IRUGO, SPI_OUTPUT_DEBUG }, {"input_debug", S_IRUGO, SPI_INPUT_DEBUG }, {"test_ctrl", S_IRUGO | S_IWUSR, SPI_TEST_CTRL }, {"output_fifo", S_IWUSR, SPI_OUTPUT_FIFO }, {"input_fifo" , S_IRUSR, SPI_INPUT_FIFO }, {"spi_state", S_IRUGO | S_IWUSR, SPI_STATE }, #if defined(CONFIG_SPI_QSD) || defined(CONFIG_SPI_QSD_MODULE) {"fifo_word_cnt", S_IRUGO, SPI_FIFO_WORD_CNT, NULL}, {"fifo_word_cnt", S_IRUGO, SPI_FIFO_WORD_CNT }, #else {"qup_config", S_IRUGO | S_IWUSR, QUP_CONFIG, NULL}, {"qup_error_flags", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS, NULL}, {"qup_error_flags_en", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS_EN, NULL}, {"mx_write_cnt", S_IRUGO | S_IWUSR, QUP_MX_WRITE_COUNT, NULL}, {"mx_write_cnt_current", S_IRUGO, QUP_MX_WRITE_CNT_CURRENT, NULL}, {"output_fifo_word_cnt", S_IRUGO, SPI_OUTPUT_FIFO_WORD_CNT, NULL}, {"input_fifo_word_cnt", S_IRUGO, SPI_INPUT_FIFO_WORD_CNT, NULL}, {"qup_config", S_IRUGO | S_IWUSR, QUP_CONFIG }, {"qup_error_flags", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS }, {"qup_error_flags_en", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS_EN }, {"mx_write_cnt", S_IRUGO | S_IWUSR, QUP_MX_WRITE_COUNT }, {"mx_write_cnt_current", S_IRUGO, QUP_MX_WRITE_CNT_CURRENT }, {"output_fifo_word_cnt", S_IRUGO, SPI_OUTPUT_FIFO_WORD_CNT }, {"input_fifo_word_cnt", S_IRUGO, SPI_INPUT_FIFO_WORD_CNT }, #endif }; #endif Loading Loading @@ -349,6 +345,7 @@ struct msm_spi { #ifdef CONFIG_DEBUG_FS struct dentry *dent_spi; struct dentry *debugfs_spi_regs[ARRAY_SIZE(debugfs_spi_regs)]; struct msm_spi_debugfs_data reg_data[ARRAY_SIZE(debugfs_spi_regs)]; #endif struct msm_spi_platform_data *pdata; /* Platform data */ /* When set indicates multiple transfers in a single message */ Loading Loading
drivers/spi/spi_qsd.c +13 −10 Original line number Diff line number Diff line Loading @@ -1830,15 +1830,15 @@ err_setup_exit: static int debugfs_iomem_x32_set(void *data, u64 val) { struct msm_spi_regs *debugfs_spi_regs = (struct msm_spi_regs *)data; struct msm_spi *dd = debugfs_spi_regs->dd; struct msm_spi_debugfs_data *reg = (struct msm_spi_debugfs_data *)data; struct msm_spi *dd = reg->dd; int ret; ret = pm_runtime_get_sync(dd->dev); if (ret < 0) return ret; writel_relaxed(val, (dd->base + debugfs_spi_regs->offset)); writel_relaxed(val, (dd->base + reg->offset)); /* Ensure the previous write completed. */ mb(); Loading @@ -1849,14 +1849,14 @@ static int debugfs_iomem_x32_set(void *data, u64 val) static int debugfs_iomem_x32_get(void *data, u64 *val) { struct msm_spi_regs *debugfs_spi_regs = (struct msm_spi_regs *)data; struct msm_spi *dd = debugfs_spi_regs->dd; struct msm_spi_debugfs_data *reg = (struct msm_spi_debugfs_data *)data; struct msm_spi *dd = reg->dd; int ret; ret = pm_runtime_get_sync(dd->dev); if (ret < 0) return ret; *val = readl_relaxed(dd->base + debugfs_spi_regs->offset); *val = readl_relaxed(dd->base + reg->offset); /* Ensure the previous read completed. */ mb(); Loading @@ -1870,18 +1870,21 @@ DEFINE_SIMPLE_ATTRIBUTE(fops_iomem_x32, debugfs_iomem_x32_get, static void spi_debugfs_init(struct msm_spi *dd) { dd->dent_spi = debugfs_create_dir(dev_name(dd->dev), NULL); char dir_name[20]; scnprintf(dir_name, sizeof(dir_name), "%s_dbg", dev_name(dd->dev)); dd->dent_spi = debugfs_create_dir(dir_name, NULL); if (dd->dent_spi) { int i; for (i = 0; i < ARRAY_SIZE(debugfs_spi_regs); i++) { debugfs_spi_regs[i].dd = dd; dd->reg_data[i].offset = debugfs_spi_regs[i].offset; dd->reg_data[i].dd = dd; dd->debugfs_spi_regs[i] = debugfs_create_file( debugfs_spi_regs[i].name, debugfs_spi_regs[i].mode, dd->dent_spi, debugfs_spi_regs+i, dd->dent_spi, &dd->reg_data[i], &fops_iomem_x32); } } Loading
drivers/spi/spi_qsd.h +35 −38 Original line number Diff line number Diff line Loading @@ -214,52 +214,48 @@ struct spi_cs_gpio { }; #ifdef CONFIG_DEBUG_FS struct msm_spi_debugfs_data { int offset; struct msm_spi *dd; }; /* Used to create debugfs entries */ static struct msm_spi_regs{ const char *name; mode_t mode; int offset; struct msm_spi *dd; } debugfs_spi_regs[] = { {"config", S_IRUGO | S_IWUSR, SPI_CONFIG, NULL}, {"io_control", S_IRUGO | S_IWUSR, SPI_IO_CONTROL, NULL}, {"io_modes", S_IRUGO | S_IWUSR, SPI_IO_MODES, NULL}, {"sw_reset", S_IWUSR, SPI_SW_RESET, NULL}, {"time_out_current", S_IRUGO, SPI_TIME_OUT_CURRENT, NULL}, {"mx_output_count", S_IRUGO | S_IWUSR, SPI_MX_OUTPUT_COUNT, NULL}, {"mx_output_cnt_current", S_IRUGO, SPI_MX_OUTPUT_CNT_CURRENT, NULL}, {"mx_input_count", S_IRUGO | S_IWUSR, SPI_MX_INPUT_COUNT, NULL}, {"mx_input_cnt_current", S_IRUGO, SPI_MX_INPUT_CNT_CURRENT, NULL}, {"mx_read_count", S_IRUGO | S_IWUSR, SPI_MX_READ_COUNT, NULL}, {"mx_read_cnt_current", S_IRUGO, SPI_MX_READ_CNT_CURRENT, NULL}, {"operational", S_IRUGO | S_IWUSR, SPI_OPERATIONAL, NULL}, {"error_flags", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS, NULL}, {"error_flags_en", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS_EN, NULL}, {"deassert_wait", S_IRUGO | S_IWUSR, SPI_DEASSERT_WAIT, NULL}, {"output_debug", S_IRUGO, SPI_OUTPUT_DEBUG, NULL}, {"input_debug", S_IRUGO, SPI_INPUT_DEBUG, NULL}, {"test_ctrl", S_IRUGO | S_IWUSR, SPI_TEST_CTRL, NULL}, {"output_fifo", S_IWUSR, SPI_OUTPUT_FIFO, NULL}, {"input_fifo" , S_IRUSR, SPI_INPUT_FIFO, NULL}, {"spi_state", S_IRUGO | S_IWUSR, SPI_STATE, NULL}, {"config", S_IRUGO | S_IWUSR, SPI_CONFIG }, {"io_control", S_IRUGO | S_IWUSR, SPI_IO_CONTROL }, {"io_modes", S_IRUGO | S_IWUSR, SPI_IO_MODES }, {"sw_reset", S_IWUSR, SPI_SW_RESET }, {"time_out_current", S_IRUGO, SPI_TIME_OUT_CURRENT }, {"mx_output_count", S_IRUGO | S_IWUSR, SPI_MX_OUTPUT_COUNT }, {"mx_output_cnt_current", S_IRUGO, SPI_MX_OUTPUT_CNT_CURRENT }, {"mx_input_count", S_IRUGO | S_IWUSR, SPI_MX_INPUT_COUNT }, {"mx_input_cnt_current", S_IRUGO, SPI_MX_INPUT_CNT_CURRENT }, {"mx_read_count", S_IRUGO | S_IWUSR, SPI_MX_READ_COUNT, }, {"mx_read_cnt_current", S_IRUGO, SPI_MX_READ_CNT_CURRENT }, {"operational", S_IRUGO | S_IWUSR, SPI_OPERATIONAL }, {"error_flags", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS }, {"error_flags_en", S_IRUGO | S_IWUSR, SPI_ERROR_FLAGS_EN }, {"deassert_wait", S_IRUGO | S_IWUSR, SPI_DEASSERT_WAIT }, {"output_debug", S_IRUGO, SPI_OUTPUT_DEBUG }, {"input_debug", S_IRUGO, SPI_INPUT_DEBUG }, {"test_ctrl", S_IRUGO | S_IWUSR, SPI_TEST_CTRL }, {"output_fifo", S_IWUSR, SPI_OUTPUT_FIFO }, {"input_fifo" , S_IRUSR, SPI_INPUT_FIFO }, {"spi_state", S_IRUGO | S_IWUSR, SPI_STATE }, #if defined(CONFIG_SPI_QSD) || defined(CONFIG_SPI_QSD_MODULE) {"fifo_word_cnt", S_IRUGO, SPI_FIFO_WORD_CNT, NULL}, {"fifo_word_cnt", S_IRUGO, SPI_FIFO_WORD_CNT }, #else {"qup_config", S_IRUGO | S_IWUSR, QUP_CONFIG, NULL}, {"qup_error_flags", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS, NULL}, {"qup_error_flags_en", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS_EN, NULL}, {"mx_write_cnt", S_IRUGO | S_IWUSR, QUP_MX_WRITE_COUNT, NULL}, {"mx_write_cnt_current", S_IRUGO, QUP_MX_WRITE_CNT_CURRENT, NULL}, {"output_fifo_word_cnt", S_IRUGO, SPI_OUTPUT_FIFO_WORD_CNT, NULL}, {"input_fifo_word_cnt", S_IRUGO, SPI_INPUT_FIFO_WORD_CNT, NULL}, {"qup_config", S_IRUGO | S_IWUSR, QUP_CONFIG }, {"qup_error_flags", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS }, {"qup_error_flags_en", S_IRUGO | S_IWUSR, QUP_ERROR_FLAGS_EN }, {"mx_write_cnt", S_IRUGO | S_IWUSR, QUP_MX_WRITE_COUNT }, {"mx_write_cnt_current", S_IRUGO, QUP_MX_WRITE_CNT_CURRENT }, {"output_fifo_word_cnt", S_IRUGO, SPI_OUTPUT_FIFO_WORD_CNT }, {"input_fifo_word_cnt", S_IRUGO, SPI_INPUT_FIFO_WORD_CNT }, #endif }; #endif Loading Loading @@ -349,6 +345,7 @@ struct msm_spi { #ifdef CONFIG_DEBUG_FS struct dentry *dent_spi; struct dentry *debugfs_spi_regs[ARRAY_SIZE(debugfs_spi_regs)]; struct msm_spi_debugfs_data reg_data[ARRAY_SIZE(debugfs_spi_regs)]; #endif struct msm_spi_platform_data *pdata; /* Platform data */ /* When set indicates multiple transfers in a single message */ Loading