mmc: mmci: add missing include of mmci_qcom_dml.h
Subsystems (2)
PATCH v3 1/1 mmc: mmci: add missing include of mmci_qcom_dml.h
Fix the missing declarations of dml_start_xfer() and dml_hw_init() by including mmci_qcom_dml.h to fix the following warnings:
drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static? drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static?
Since the module build doesn't export symbols, also export the symbols from the mmci_qcom_dml.c file as otherwise the module link process won't work.
It is possible this also fixes up module loading when both drivers are built as modules and not inserted in the correct order.
Note, since this is a very small addition to the mmci module, it would better to build it into the main mmci driver (either by direct copy, or multiple linked module)
---
V1..V2:
- deal with module build errors
V2..V3:
- add original authour and update list of recipients
---
Cc: Srinivas Kandagatla <[email protected]>
Cc: Ulf Hansson <[email protected]>
Cc: linux-mmc at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org
--- drivers/mmc/host/mmci_qcom_dml.c | 3 +++ drivers/mmc/host/mmci_qcom_dml.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-)
drivers/mmc/host/mmci_qcom_dml.c +3 -0
@@ -18,6 +18,7 @@#include <linux/mmc/host.h> #include <linux/mmc/card.h> #include "mmci.h" +#include "mmci_qcom_dml.h" /* Registers */ #define DML_CONFIG 0x00
@@ -97,6 +98,7 @@ void dml_start_xfer(struct mmci_host *host, struct mmc_data *data)/* make sure the dml is configured before dma is triggered */ wmb (); } +EXPORT_SYMBOL_GPL (dml_start_xfer);static int of_get_dml_pipe_index (struct device_node *np,const char *name) {
@@ -175,3 +177,4 @@ int dml_hw_init(struct mmci_host *host, struct device_node *np)return 0 ; } +EXPORT_SYMBOL_GPL (dml_hw_init);
drivers/mmc/host/mmci_qcom_dml.h +1 -1
@@ -15,7 +15,7 @@#ifndef __MMC_QCOM_DML_H__#define __MMC_QCOM_DML_H__ -#ifdef CONFIG_MMC_QCOM_DML +#if defined(CONFIG_MMC_QCOM_DML ) || defined(CONFIG_MMC_QCOM_DML_MODULE )int dml_hw_init (struct mmci_host *host,struct device_node *np);void dml_start_xfer (struct mmci_host *host,struct mmc_data *data);#else
Signature · 1 line
2.8.1
PATCH v3 1/1 mmc: mmci: add missing include of mmci_qcom_dml.h
Quoted 20 lines · Ben Dooks
Fix the missing declarations of
dml_start_xfer()anddml_hw_init()by includingmmci_qcom_dml.hto fix the following warnings:
drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static?drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static?Since the module build doesn't export symbols, also export the symbols from the
mmci_qcom_dml.cfile as otherwise the module link process won't work.It is possible this also fixes up module loading when both drivers are built as modules and not inserted in the correct order.
Note, since this is a very small addition to the mmci module, it would better to build it into the main mmci driver (either by direct copy, or multiple linked module)
Quoted 7 lines
Signed-off-by Ben Dooks <[email protected]>---
V1..V2:
- deal with module build errors
V2..V3:
- add original authour and update list of recipients
---
I'm now wondering if I should split it into fixup the module issues and fix the include once those are fixed. Anyone want to comment?
Quoted 48 lines
Cc Srinivas Kandagatla <[email protected]>Cc Ulf Hansson <[email protected]>Cc linux-mmc at vger.kernel.orgCc linux-arm-kernel at lists.infradead.org--- drivers/mmc/host/mmci_qcom_dml.c | 3 +++ drivers/mmc/host/mmci_qcom_dml.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-)drivers/mmc/host/mmci_qcom_dml.c +3
-0@@ -18,6 +18,7 @@#include <linux/mmc/host.h> #include <linux/mmc/card.h> #include "mmci.h" +#include "mmci_qcom_dml.h" /* Registers */ #define DML_CONFIG 0x00@@ -97,6 +98,7 @@ void dml_start_xfer(struct mmci_host *host, struct mmc_data *data)/* make sure the dml is configured before dma is triggered */ wmb (); } +EXPORT_SYMBOL_GPL (dml_start_xfer);static int of_get_dml_pipe_index (struct device_node *np,const char *name) {@@ -175,3 +177,4 @@ int dml_hw_init(struct mmci_host *host, struct device_node *np)return 0 ; } +EXPORT_SYMBOL_GPL (dml_hw_init);drivers/mmc/host/mmci_qcom_dml.h +1
-1@@ -15,7 +15,7 @@#ifndef __MMC_QCOM_DML_H__#define __MMC_QCOM_DML_H__ -#ifdef CONFIG_MMC_QCOM_DML +#if defined(CONFIG_MMC_QCOM_DML ) || defined(CONFIG_MMC_QCOM_DML_MODULE )int dml_hw_init (struct mmci_host *host,struct device_node *np);void dml_start_xfer (struct mmci_host *host,struct mmc_data *data);#else
Signature · 2 lines
Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius
PATCH v3 1/1 mmc: mmci: add missing include of mmci_qcom_dml.h
In reply to Ben DooksThanks for the patch.
Quoted 11 lines · Ben Dooks
Fix the missing declarations of
dml_start_xfer()anddml_hw_init()by includingmmci_qcom_dml.hto fix the following warnings:
drivers/mmc/host/mmci_qcom_dml.c:57:6: warning: symbol 'dml_start_xfer' was not declared. Should it be static?drivers/mmc/host/mmci_qcom_dml.c:122:5: warning: symbol 'dml_hw_init' was not declared. Should it be static?Since the module build doesn't export symbols, also export the symbols from the
mmci_qcom_dml.cfile as otherwise the module link process won't work.
Quoted 9 lines
It is possible this also fixes up module loading when both drivers are built as modules and not inserted in the correct order.
Note, since this is a very small addition to the mmci module, it would better to build it into the main mmci driver (either by direct copy, or multiple linked module)
Let's fix this in a go, making it possible to insert this as a module. As this patch only fixes a part of the problem.
Some comments below.
Quoted 21 lines
Signed-off-by Ben Dooks <[email protected]>---
V1..V2:
- deal with module build errors
V2..V3:
- add original authour and update list of recipients
---
Cc: Srinivas Kandagatla <[email protected]>
Cc: Ulf Hansson <[email protected]>
Cc: linux-mmc at vger.kernel.org
Cc: linux-arm-kernel at lists.infradead.org--- drivers/mmc/host/mmci_qcom_dml.c | 3 +++ drivers/mmc/host/mmci_qcom_dml.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-)drivers/mmc/host/mmci_qcom_dml.c +0
-0
drivers/mmc/host/mmci_qcom_dml.c line 20
Quoted 3 lines
drivers/mmc/host/mmci_qcom_dml.c +0
-0@@ -18,6 +18,7 @@#include <linux/mmc/host.h> #include <linux/mmc/card.h> #include "mmci.h"
also include
#include <linux/module.h>
Quoted 13 lines
drivers/mmc/host/mmci_qcom_dml.c +2
-0+#include "mmci_qcom_dml.h" /* Registers */ #define DML_CONFIG 0x00@@ -97,6 +98,7 @@ void dml_start_xfer(struct mmci_host *host, struct mmc_data *data)/* make sure the dml is configured before dma is triggered */ wmb (); } +EXPORT_SYMBOL_GPL (dml_start_xfer);static int of_get_dml_pipe_index (struct device_node *np,const char *name) {
drivers/mmc/host/mmci_qcom_dml.c int dml_hw_init(struct mmci_host *host, struct device_node *np) · line 180
Quoted 4 lines
drivers/mmc/host/mmci_qcom_dml.c +1
-0@@ -175,3 +177,4 @@ int dml_hw_init(struct mmci_host *host, struct device_node *np)return 0 ; } +EXPORT_SYMBOL_GPL (dml_hw_init);
You would also need this at the end of the file, to be able to successfully insert the module.
MODULE_DESCRIPTION("QCOM DML Driver");MODULE_LICENSE("GPL v2");
drivers/mmc/host/mmci_qcom_dml.h line 18
Quoted 10 lines
drivers/mmc/host/mmci_qcom_dml.h +1
-1@@ -15,7 +15,7 @@#ifndef __MMC_QCOM_DML_H__#define __MMC_QCOM_DML_H__ -#ifdef CONFIG_MMC_QCOM_DML +#if defined(CONFIG_MMC_QCOM_DML ) || defined(CONFIG_MMC_QCOM_DML_MODULE )
should be
#if IS_ENABLED(CONFIG_MMC_QCOM_DML)
Quoted 4 lines
drivers/mmc/host/mmci_qcom_dml.h +0
-0int dml_hw_init (struct mmci_host *host,struct device_node *np);void dml_start_xfer (struct mmci_host *host,struct mmc_data *data);#else
PATCH v3 1/1 mmc: mmci: add missing include of mmci_qcom_dml.h
In reply to Ben DooksQuoted 4 lines · CEST Ben Dooks
Note, since this is a very small addition to the mmci module, it would better to build it into the main mmci driver (either by direct copy, or multiple linked module)
I suspect the latter is actually what the author intended, except they accidentally made the symbol tristate and got the Makefile logic wrong.
Most likely, the qcom developers never considered the case of having loadable modules.
Arnd