[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201603061722.6YMRvw3K%fengguang.wu@intel.com>
Date: Sun, 6 Mar 2016 17:11:36 +0800
From: kbuild test robot <lkp@...el.com>
To: Guodong Xu <guodong.xu@...aro.org>
Cc: kbuild-all@...org, robh+dt@...nel.org, pawel.moll@....com,
mark.rutland@....com, ijc+devicetree@...lion.org.uk,
galak@...eaurora.org, jh80.chung@...sung.com,
ulf.hansson@...aro.org, shawn.lin@...k-chips.com,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-mmc@...r.kernel.org, Guodong Xu <guodong.xu@...aro.org>,
Xinwei Kong <kong.kongxinwei@...ilicon.com>,
Zhangfei Gao <zhangfei.gao@...aro.org>
Subject: Re: [PATCH 2/2] mmc: dw_mmc: add resets support to dw_mmc
Hi Guodong,
[auto build test ERROR on ulf.hansson-mmc/next]
[also build test ERROR on v4.5-rc6 next-20160304]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Guodong-Xu/Documentation-synopsys-dw-mshc-add-binding-for-resets/20160306-164955
base: https://git.linaro.org/people/ulf.hansson/mmc next
config: sparc64-allyesconfig (attached as .config)
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=sparc64
All errors (new ones prefixed by >>):
drivers/mmc/host/dw_mmc.c: In function 'dw_mci_parse_dt':
>> drivers/mmc/host/dw_mmc.c:2882:7: error: 'struct dw_mci_board' has no member named 'rstc'
pdata->rstc = devm_reset_control_get_optional(dev, NULL);
^
>> drivers/mmc/host/dw_mmc.c:2882:2: error: implicit declaration of function 'devm_reset_control_get_optional' [-Werror=implicit-function-declaration]
pdata->rstc = devm_reset_control_get_optional(dev, NULL);
^
drivers/mmc/host/dw_mmc.c:2883:18: error: 'struct dw_mci_board' has no member named 'rstc'
if (IS_ERR(pdata->rstc)) {
^
drivers/mmc/host/dw_mmc.c:2884:20: error: 'struct dw_mci_board' has no member named 'rstc'
if (PTR_ERR(pdata->rstc) == -EPROBE_DEFER)
^
drivers/mmc/host/dw_mmc.c:2886:8: error: 'struct dw_mci_board' has no member named 'rstc'
pdata->rstc = NULL;
^
drivers/mmc/host/dw_mmc.c: In function 'dw_mci_probe':
drivers/mmc/host/dw_mmc.c:3025:17: error: 'struct dw_mci_board' has no member named 'rstc'
if (host->pdata->rstc != NULL)
^
>> drivers/mmc/host/dw_mmc.c:3026:3: error: implicit declaration of function 'reset_control_deassert' [-Werror=implicit-function-declaration]
reset_control_deassert(host->pdata->rstc);
^
drivers/mmc/host/dw_mmc.c:3026:37: error: 'struct dw_mci_board' has no member named 'rstc'
reset_control_deassert(host->pdata->rstc);
^
drivers/mmc/host/dw_mmc.c:3180:17: error: 'struct dw_mci_board' has no member named 'rstc'
if (host->pdata->rstc != NULL)
^
>> drivers/mmc/host/dw_mmc.c:3181:3: error: implicit declaration of function 'reset_control_assert' [-Werror=implicit-function-declaration]
reset_control_assert(host->pdata->rstc);
^
drivers/mmc/host/dw_mmc.c:3181:35: error: 'struct dw_mci_board' has no member named 'rstc'
reset_control_assert(host->pdata->rstc);
^
drivers/mmc/host/dw_mmc.c: In function 'dw_mci_remove':
drivers/mmc/host/dw_mmc.c:3215:17: error: 'struct dw_mci_board' has no member named 'rstc'
if (host->pdata->rstc != NULL)
^
drivers/mmc/host/dw_mmc.c:3216:35: error: 'struct dw_mci_board' has no member named 'rstc'
reset_control_assert(host->pdata->rstc);
^
cc1: some warnings being treated as errors
vim +2882 drivers/mmc/host/dw_mmc.c
2876
2877 pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
2878 if (!pdata)
2879 return ERR_PTR(-ENOMEM);
2880
2881 /* find reset controller when exist */
> 2882 pdata->rstc = devm_reset_control_get_optional(dev, NULL);
2883 if (IS_ERR(pdata->rstc)) {
2884 if (PTR_ERR(pdata->rstc) == -EPROBE_DEFER)
2885 return ERR_PTR(-EPROBE_DEFER);
> 2886 pdata->rstc = NULL;
2887 }
2888
2889 /* find out number of slots supported */
2890 of_property_read_u32(np, "num-slots", &pdata->num_slots);
2891
2892 if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
2893 dev_info(dev,
2894 "fifo-depth property not found, using value of FIFOTH register as default\n");
2895
2896 of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms);
2897
2898 if (!of_property_read_u32(np, "clock-frequency", &clock_frequency))
2899 pdata->bus_hz = clock_frequency;
2900
2901 if (drv_data && drv_data->parse_dt) {
2902 ret = drv_data->parse_dt(host);
2903 if (ret)
2904 return ERR_PTR(ret);
2905 }
2906
2907 if (of_find_property(np, "supports-highspeed", NULL)) {
2908 dev_info(dev, "supports-highspeed property is deprecated.\n");
2909 pdata->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED;
2910 }
2911
2912 return pdata;
2913 }
2914
2915 #else /* CONFIG_OF */
2916 static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
2917 {
2918 return ERR_PTR(-EINVAL);
2919 }
2920 #endif /* CONFIG_OF */
2921
2922 static void dw_mci_enable_cd(struct dw_mci *host)
2923 {
2924 unsigned long irqflags;
2925 u32 temp;
2926 int i;
2927 struct dw_mci_slot *slot;
2928
2929 /*
2930 * No need for CD if all slots have a non-error GPIO
2931 * as well as broken card detection is found.
2932 */
2933 for (i = 0; i < host->num_slots; i++) {
2934 slot = host->slot[i];
2935 if (slot->mmc->caps & MMC_CAP_NEEDS_POLL)
2936 return;
2937
2938 if (IS_ERR_VALUE(mmc_gpio_get_cd(slot->mmc)))
2939 break;
2940 }
2941 if (i == host->num_slots)
2942 return;
2943
2944 spin_lock_irqsave(&host->irq_lock, irqflags);
2945 temp = mci_readl(host, INTMASK);
2946 temp |= SDMMC_INT_CD;
2947 mci_writel(host, INTMASK, temp);
2948 spin_unlock_irqrestore(&host->irq_lock, irqflags);
2949 }
2950
2951 int dw_mci_probe(struct dw_mci *host)
2952 {
2953 const struct dw_mci_drv_data *drv_data = host->drv_data;
2954 int width, i, ret = 0;
2955 u32 fifo_size;
2956 int init_slots = 0;
2957
2958 if (!host->pdata) {
2959 host->pdata = dw_mci_parse_dt(host);
2960 if (PTR_ERR(host->pdata) == -EPROBE_DEFER)
2961 return -EPROBE_DEFER;
2962 else if (IS_ERR(host->pdata)) {
2963 dev_err(host->dev, "platform data not available\n");
2964 return -EINVAL;
2965 }
2966 }
2967
2968 host->biu_clk = devm_clk_get(host->dev, "biu");
2969 if (IS_ERR(host->biu_clk)) {
2970 dev_dbg(host->dev, "biu clock not available\n");
2971 } else {
2972 ret = clk_prepare_enable(host->biu_clk);
2973 if (ret) {
2974 dev_err(host->dev, "failed to enable biu clock\n");
2975 return ret;
2976 }
2977 }
2978
2979 host->ciu_clk = devm_clk_get(host->dev, "ciu");
2980 if (IS_ERR(host->ciu_clk)) {
2981 dev_dbg(host->dev, "ciu clock not available\n");
2982 host->bus_hz = host->pdata->bus_hz;
2983 } else {
2984 ret = clk_prepare_enable(host->ciu_clk);
2985 if (ret) {
2986 dev_err(host->dev, "failed to enable ciu clock\n");
2987 goto err_clk_biu;
2988 }
2989
2990 if (host->pdata->bus_hz) {
2991 ret = clk_set_rate(host->ciu_clk, host->pdata->bus_hz);
2992 if (ret)
2993 dev_warn(host->dev,
2994 "Unable to set bus rate to %uHz\n",
2995 host->pdata->bus_hz);
2996 }
2997 host->bus_hz = clk_get_rate(host->ciu_clk);
2998 }
2999
3000 if (!host->bus_hz) {
3001 dev_err(host->dev,
3002 "Platform data must supply bus speed\n");
3003 ret = -ENODEV;
3004 goto err_clk_ciu;
3005 }
3006
3007 if (drv_data && drv_data->init) {
3008 ret = drv_data->init(host);
3009 if (ret) {
3010 dev_err(host->dev,
3011 "implementation specific init failed\n");
3012 goto err_clk_ciu;
3013 }
3014 }
3015
3016 if (drv_data && drv_data->setup_clock) {
3017 ret = drv_data->setup_clock(host);
3018 if (ret) {
3019 dev_err(host->dev,
3020 "implementation specific clock setup failed\n");
3021 goto err_clk_ciu;
3022 }
3023 }
3024
3025 if (host->pdata->rstc != NULL)
> 3026 reset_control_deassert(host->pdata->rstc);
3027
3028 setup_timer(&host->cmd11_timer,
3029 dw_mci_cmd11_timer, (unsigned long)host);
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/octet-stream" (45097 bytes)
Powered by blists - more mailing lists