[11/21] mmc: core: First step in cleaning up public mmc header files

Message ID 1483102054-1752-12-git-send-email-ulf.hansson@linaro.org
State Superseded
Headers show

Commit Message

Ulf Hansson Dec. 30, 2016, 12:47 p.m.
This is the first step in cleaning up the public mmc header files. In this
change we makes sure each header file builds standalone, as that helps to
resolve dependencies.

While changing this, it also seems reasonable to stop including other
headers from inside a header itself which it don't depend upon.
Additionally, in some cases such dependencies are better resolved by
forward declaring the needed struct.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

---
 include/linux/mmc/card.h      | 2 --
 include/linux/mmc/core.h      | 3 +--
 include/linux/mmc/host.h      | 9 ++-------
 include/linux/mmc/mmc.h       | 2 ++
 include/linux/mmc/slot-gpio.h | 3 +++
 5 files changed, 8 insertions(+), 11 deletions(-)

-- 
1.9.1

Comments

kbuild test robot Dec. 30, 2016, 2:52 p.m. | #1
Hi Ulf,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.10-rc1 next-20161224]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ulf-Hansson/mmc-core-A-start-to-slim-down-public-mmc-headers/20161230-205340
config: arm-multi_v5_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/mm-imx21.c:28:
>> include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'

     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
--
   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/devices-imx21.h:9,
                    from arch/arm/mach-imx/mach-mx21ads.c:28:
>> include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'

     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
>> arch/arm/mach-imx/mach-mx21ads.c:257:50: error: unknown type name 'irq_handler_t'

    static int mx21ads_sdhc_init(struct device *dev, irq_handler_t detect_irq,
                                                     ^~~~~~~~~~~~~
   arch/arm/mach-imx/mach-mx21ads.c: In function 'mx21ads_sdhc_exit':
>> arch/arm/mach-imx/mach-mx21ads.c:272:2: error: implicit declaration of function 'free_irq' [-Werror=implicit-function-declaration]

     free_irq(gpio_to_irq(MX21ADS_MMC_CD), data);
     ^~~~~~~~
   arch/arm/mach-imx/mach-mx21ads.c: At top level:
>> arch/arm/mach-imx/mach-mx21ads.c:279:2: error: unknown field 'init' specified in initializer

     .init = mx21ads_sdhc_init,
     ^
>> arch/arm/mach-imx/mach-mx21ads.c:279:10: error: 'mx21ads_sdhc_init' undeclared here (not in a function)

     .init = mx21ads_sdhc_init,
             ^~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/devices-imx27.h:9,
                    from arch/arm/mach-imx/mach-mx27ads.c:36:
>> include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'

     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
>> arch/arm/mach-imx/mach-mx27ads.c:294:51: error: unknown type name 'irq_handler_t'

    static int mx27ads_sdhc1_init(struct device *dev, irq_handler_t detect_irq,
                                                      ^~~~~~~~~~~~~
   arch/arm/mach-imx/mach-mx27ads.c:301:51: error: unknown type name 'irq_handler_t'
    static int mx27ads_sdhc2_init(struct device *dev, irq_handler_t detect_irq,
                                                      ^~~~~~~~~~~~~
   arch/arm/mach-imx/mach-mx27ads.c: In function 'mx27ads_sdhc1_exit':
>> arch/arm/mach-imx/mach-mx27ads.c:310:2: error: implicit declaration of function 'free_irq' [-Werror=implicit-function-declaration]

     free_irq(gpio_to_irq(IMX_GPIO_NR(5, 21)), data);
     ^~~~~~~~
   arch/arm/mach-imx/mach-mx27ads.c: At top level:
>> arch/arm/mach-imx/mach-mx27ads.c:319:2: error: unknown field 'init' specified in initializer

     .init = mx27ads_sdhc1_init,
     ^
>> arch/arm/mach-imx/mach-mx27ads.c:319:10: error: 'mx27ads_sdhc1_init' undeclared here (not in a function)

     .init = mx27ads_sdhc1_init,
             ^~~~~~~~~~~~~~~~~~
   arch/arm/mach-imx/mach-mx27ads.c:324:2: error: unknown field 'init' specified in initializer
     .init = mx27ads_sdhc2_init,
     ^
>> arch/arm/mach-imx/mach-mx27ads.c:324:10: error: 'mx27ads_sdhc2_init' undeclared here (not in a function)

     .init = mx27ads_sdhc2_init,
             ^~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/devices-imx27.h:9,
                    from arch/arm/mach-imx/mach-imx27_visstrim_m10.c:45:
>> include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'

     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
>> arch/arm/mach-imx/mach-imx27_visstrim_m10.c:341:3: error: unknown type name 'irq_handler_t'

      irq_handler_t detect_irq, void *data)
      ^~~~~~~~~~~~~
   arch/arm/mach-imx/mach-imx27_visstrim_m10.c: In function 'visstrim_m10_sdhc1_exit':
>> arch/arm/mach-imx/mach-imx27_visstrim_m10.c:352:2: error: implicit declaration of function 'free_irq' [-Werror=implicit-function-declaration]

     free_irq(gpio_to_irq(SDHC1_IRQ_GPIO), data);
     ^~~~~~~~
   arch/arm/mach-imx/mach-imx27_visstrim_m10.c: At top level:
>> arch/arm/mach-imx/mach-imx27_visstrim_m10.c:356:2: error: unknown field 'init' specified in initializer

     .init = visstrim_m10_sdhc1_init,
     ^
>> arch/arm/mach-imx/mach-imx27_visstrim_m10.c:356:10: error: 'visstrim_m10_sdhc1_init' undeclared here (not in a function)

     .init = visstrim_m10_sdhc1_init,
             ^~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/irq_handler_t +24 include/linux/platform_data/mmc-mxcmmc.h

d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06   8  /* board specific SDHC data, optional.
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06   9   * If not present, a writable card with 3,3V is assumed.
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  10   */
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  11  struct imxmmc_platform_data {
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  12  	/* Return values for the get_ro callback should be:
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  13  	 *   0 for a read/write card
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  14  	 *   1 for a read-only card
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  15  	 *   -ENOSYS when not supported (equal to NULL callback)
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  16  	 *   or a negative errno value when something bad happened
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  17  	 */
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  18  	int (*get_ro)(struct device *);
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  19  
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  20  	/* board specific hook to (de)initialize the SD slot.
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  21  	 * The board code can call 'handler' on a card detection
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  22  	 * change giving data as argument.
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  23  	 */
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06 @24  	int (*init)(struct device *dev, irq_handler_t handler, void *data);
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  25  	void (*exit)(struct device *dev, void *data);
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  26  
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  27  	/* available voltages. If not given, assume
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  28  	 * MMC_VDD_32_33 | MMC_VDD_33_34
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  29  	 */
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  30  	unsigned int ocr_avail;
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  31  
d96be879 arch/arm/plat-mxc/include/mach/mmc.h Sascha Hauer 2009-01-06  32  	/* adjust slot voltage */

:::::: The code at line 24 was first introduced by commit
:::::: d96be879ff469759af6d7fcebdb66237c18da6f8 mmc: Add a MX2/MX3 specific SDHC driver

:::::: TO: Sascha Hauer <s.hauer@pengutronix.de>
:::::: CC: Pierre Ossman <drzeus@drzeus.cx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kbuild test robot Dec. 30, 2016, 3:11 p.m. | #2
Hi Ulf,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.10-rc1 next-20161224]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Ulf-Hansson/mmc-core-A-start-to-slim-down-public-mmc-headers/20161230-205340
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/devices-imx31.h:9,
                    from arch/arm/mach-imx/mx31lilly-db.c:35:
   include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'
     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
>> arch/arm/mach-imx/mx31lilly-db.c:90:5: error: unknown type name 'irq_handler_t'

        irq_handler_t detect_irq, void *data)
        ^~~~~~~~~~~~~
   arch/arm/mach-imx/mx31lilly-db.c: In function 'mxc_mmc1_exit':
>> arch/arm/mach-imx/mx31lilly-db.c:136:2: error: implicit declaration of function 'free_irq' [-Werror=implicit-function-declaration]

     free_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)), data);
     ^~~~~~~~
   arch/arm/mach-imx/mx31lilly-db.c: At top level:
>> arch/arm/mach-imx/mx31lilly-db.c:141:2: error: unknown field 'init' specified in initializer

     .init = mxc_mmc1_init,
     ^
>> arch/arm/mach-imx/mx31lilly-db.c:141:10: error: 'mxc_mmc1_init' undeclared here (not in a function)

     .init = mxc_mmc1_init,
             ^~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from arch/arm/mach-imx/devices/devices-common.h:216:0,
                    from arch/arm/mach-imx/devices-imx31.h:9,
                    from arch/arm/mach-imx/mx31lite-db.c:36:
   include/linux/platform_data/mmc-mxcmmc.h:24:34: error: unknown type name 'irq_handler_t'
     int (*init)(struct device *dev, irq_handler_t handler, void *data);
                                     ^~~~~~~~~~~~~
>> arch/arm/mach-imx/mx31lite-db.c:70:5: error: unknown type name 'irq_handler_t'

        irq_handler_t detect_irq, void *data)
        ^~~~~~~~~~~~~
   arch/arm/mach-imx/mx31lite-db.c: In function 'mxc_mmc1_exit':
>> arch/arm/mach-imx/mx31lite-db.c:122:2: error: implicit declaration of function 'free_irq' [-Werror=implicit-function-declaration]

     free_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_DCD_DCE1)), data);
     ^~~~~~~~
   arch/arm/mach-imx/mx31lite-db.c: At top level:
>> arch/arm/mach-imx/mx31lite-db.c:127:2: error: unknown field 'init' specified in initializer

     .init    = mxc_mmc1_init,
     ^
>> arch/arm/mach-imx/mx31lite-db.c:127:13: error: 'mxc_mmc1_init' undeclared here (not in a function)

     .init    = mxc_mmc1_init,
                ^~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/irq_handler_t +90 arch/arm/mach-imx/mx31lilly-db.c

1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   29  #include <asm/mach-types.h>
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   30  #include <asm/mach/arch.h>
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   31  #include <asm/mach/map.h>
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   32  
3ed0bcb4 arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2012-09-13   33  #include "board-mx31lilly.h"
e3372474 arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2012-09-13   34  #include "common.h"
16cf5c41 arch/arm/mach-mx3/mx31lilly-db.c Uwe Kleine-König   2010-06-23  @35  #include "devices-imx31.h"
50f2de61 arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2012-09-14   36  #include "hardware.h"
267dd34c arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2012-09-13   37  #include "iomux-mx3.h"
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   38  
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   39  /*
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   40   * This file contains board-specific initialization routines for the
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   41   * LILLY-1131 development board. If you design an own baseboard for the
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   42   * module, use this file as base for support code.
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   43   */
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   44  
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   45  static unsigned int lilly_db_board_pins[] __initdata = {
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   46  	MX31_PIN_SD1_DATA3__SD1_DATA3,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   47  	MX31_PIN_SD1_DATA2__SD1_DATA2,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   48  	MX31_PIN_SD1_DATA1__SD1_DATA1,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   49  	MX31_PIN_SD1_DATA0__SD1_DATA0,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   50  	MX31_PIN_SD1_CLK__SD1_CLK,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   51  	MX31_PIN_SD1_CMD__SD1_CMD,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   52  	MX31_PIN_LD0__LD0,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   53  	MX31_PIN_LD1__LD1,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   54  	MX31_PIN_LD2__LD2,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   55  	MX31_PIN_LD3__LD3,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   56  	MX31_PIN_LD4__LD4,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   57  	MX31_PIN_LD5__LD5,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   58  	MX31_PIN_LD6__LD6,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   59  	MX31_PIN_LD7__LD7,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   60  	MX31_PIN_LD8__LD8,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   61  	MX31_PIN_LD9__LD9,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   62  	MX31_PIN_LD10__LD10,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   63  	MX31_PIN_LD11__LD11,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   64  	MX31_PIN_LD12__LD12,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   65  	MX31_PIN_LD13__LD13,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   66  	MX31_PIN_LD14__LD14,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   67  	MX31_PIN_LD15__LD15,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   68  	MX31_PIN_LD16__LD16,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   69  	MX31_PIN_LD17__LD17,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   70  	MX31_PIN_VSYNC3__VSYNC3,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   71  	MX31_PIN_HSYNC__HSYNC,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   72  	MX31_PIN_FPSHIFT__FPSHIFT,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   73  	MX31_PIN_DRDY0__DRDY0,
b9923872 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   74  	MX31_PIN_CONTRAST__CONTRAST,
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   75  };
1bc34f79 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   76  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   77  /* MMC support */
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   78  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   79  static int mxc_mmc1_get_ro(struct device *dev)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   80  {
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   81  	return gpio_get_value(IOMUX_TO_GPIO(MX31_PIN_LCS0));
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   82  }
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   83  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   84  static int gpio_det, gpio_wp;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   85  
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   86  #define MMC_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   87  			PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   88  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   89  static int mxc_mmc1_init(struct device *dev,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  @90  			 irq_handler_t detect_irq, void *data)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   91  {
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   92  	int ret;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   93  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   94  	gpio_det = IOMUX_TO_GPIO(MX31_PIN_GPIO1_1);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   95  	gpio_wp = IOMUX_TO_GPIO(MX31_PIN_LCS0);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20   96  
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   97  	mxc_iomux_set_pad(MX31_PIN_SD1_DATA0, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   98  	mxc_iomux_set_pad(MX31_PIN_SD1_DATA1, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26   99  	mxc_iomux_set_pad(MX31_PIN_SD1_DATA2, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26  100  	mxc_iomux_set_pad(MX31_PIN_SD1_DATA3, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26  101  	mxc_iomux_set_pad(MX31_PIN_SD1_CLK, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26  102  	mxc_iomux_set_pad(MX31_PIN_SD1_CMD, MMC_PAD_CFG);
24fb8422 arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-10-26  103  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  104  	ret = gpio_request(gpio_det, "MMC detect");
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  105  	if (ret)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  106  		return ret;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  107  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  108  	ret = gpio_request(gpio_wp, "MMC w/p");
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  109  	if (ret)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  110  		goto exit_free_det;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  111  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  112  	gpio_direction_input(gpio_det);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  113  	gpio_direction_input(gpio_wp);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  114  
ed175343 arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2011-12-02  115  	ret = request_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)),
4c1dd3e5 arch/arm/mach-imx/mx31lilly-db.c Michael Opdenacker 2013-09-04  116  			  detect_irq, IRQF_TRIGGER_FALLING,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  117  			  "MMC detect", data);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  118  	if (ret)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  119  		goto exit_free_wp;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  120  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  121  	return 0;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  122  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  123  exit_free_wp:
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  124  	gpio_free(gpio_wp);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  125  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  126  exit_free_det:
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  127  	gpio_free(gpio_det);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  128  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  129  	return ret;
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  130  }
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  131  
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  132  static void mxc_mmc1_exit(struct device *dev, void *data)
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  133  {
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  134  	gpio_free(gpio_det);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  135  	gpio_free(gpio_wp);
ed175343 arch/arm/mach-imx/mx31lilly-db.c Shawn Guo          2011-12-02 @136  	free_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_1)), data);
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  137  }
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  138  
6a697e3d arch/arm/mach-mx3/mx31lilly-db.c Uwe Kleine-König   2010-11-12  139  static const struct imxmmc_platform_data mmc_pdata __initconst = {
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  140  	.get_ro	= mxc_mmc1_get_ro,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20 @141  	.init	= mxc_mmc1_init,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  142  	.exit	= mxc_mmc1_exit,
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  143  };
d0b1eabc arch/arm/mach-mx3/mx31lilly-db.c Daniel Mack        2009-05-20  144  

:::::: The code at line 90 was first introduced by commit
:::::: d0b1eabc7b255daa978849229703b4d70a4c0555 ARM: MX3: add MMC suuport for lilly1131-db

:::::: TO: Daniel Mack <daniel@caiaq.de>
:::::: CC: Sascha Hauer <s.hauer@pengutronix.de>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Patch

diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 00449e5..ca64f5b 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -11,7 +11,6 @@ 
 #define LINUX_MMC_CARD_H
 
 #include <linux/device.h>
-#include <linux/mmc/core.h>
 #include <linux/mod_devicetable.h>
 
 struct mmc_cid {
@@ -206,7 +205,6 @@  struct sdio_cis {
 };
 
 struct mmc_host;
-struct mmc_ios;
 struct sdio_func;
 struct sdio_func_tuple;
 
diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
index e33cc74..64e2ddf 100644
--- a/include/linux/mmc/core.h
+++ b/include/linux/mmc/core.h
@@ -8,10 +8,9 @@ 
 #ifndef LINUX_MMC_CORE_H
 #define LINUX_MMC_CORE_H
 
-#include <linux/interrupt.h>
 #include <linux/completion.h>
+#include <linux/types.h>
 
-struct request;
 struct mmc_data;
 struct mmc_request;
 
diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
index 8bc8841..8d38c76 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -10,16 +10,12 @@ 
 #ifndef LINUX_MMC_HOST_H
 #define LINUX_MMC_HOST_H
 
-#include <linux/leds.h>
-#include <linux/mutex.h>
-#include <linux/timer.h>
 #include <linux/sched.h>
 #include <linux/device.h>
 #include <linux/fault-inject.h>
 
 #include <linux/mmc/core.h>
 #include <linux/mmc/card.h>
-#include <linux/mmc/mmc.h>
 #include <linux/mmc/pm.h>
 
 struct mmc_ios {
@@ -82,6 +78,8 @@  struct mmc_ios {
 	bool enhanced_strobe;			/* hs400es selection */
 };
 
+struct mmc_host;
+
 struct mmc_host_ops {
 	/*
 	 * It is optional for the host to implement pre_req and post_req in
@@ -162,9 +160,6 @@  struct mmc_host_ops {
 				  unsigned int direction, int blk_size);
 };
 
-struct mmc_card;
-struct device;
-
 struct mmc_async_req {
 	/* active mmc request */
 	struct mmc_request	*mrq;
diff --git a/include/linux/mmc/mmc.h b/include/linux/mmc/mmc.h
index a074082..261772e 100644
--- a/include/linux/mmc/mmc.h
+++ b/include/linux/mmc/mmc.h
@@ -24,6 +24,8 @@ 
 #ifndef LINUX_MMC_MMC_H
 #define LINUX_MMC_MMC_H
 
+#include <linux/types.h>
+
 /* Standard MMC commands (4.1)           type  argument     response */
    /* class 1 */
 #define MMC_GO_IDLE_STATE         0   /* bc                          */
diff --git a/include/linux/mmc/slot-gpio.h b/include/linux/mmc/slot-gpio.h
index a7972cd..82f0d28 100644
--- a/include/linux/mmc/slot-gpio.h
+++ b/include/linux/mmc/slot-gpio.h
@@ -11,6 +11,9 @@ 
 #ifndef MMC_SLOT_GPIO_H
 #define MMC_SLOT_GPIO_H
 
+#include <linux/types.h>
+#include <linux/irqreturn.h>
+
 struct mmc_host;
 
 int mmc_gpio_get_ro(struct mmc_host *host);