lkml.org 
[lkml]   [2018]   [Jul]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v5 06/11] soc: mediatek: add new flow for mtcmos power.
    Hi Owen,

    Thank you for the patch! Yet something to improve:

    [auto build test ERROR on robh/for-next]
    [also build test ERROR on v4.18-rc5 next-20180717]
    [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/Mars-Cheng/Add-basic-SoC-support-for-mt6765/20180717-205540
    base: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
    config: powerpc-allyesconfig (attached as .config)
    compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
    reproduce:
    wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
    chmod +x ~/bin/make.cross
    # save the attached .config to linux build tree
    GCC_VERSION=7.2.0 make.cross ARCH=powerpc

    All error/warnings (new ones prefixed by >>):

    In file included from include/linux/kernel.h:14:0,
    from include/linux/clk.h:16,
    from drivers/soc/mediatek/mtk-scpsys-ext.c:6:
    drivers/soc/mediatek/mtk-scpsys-ext.c: In function 'bus_clk_enable_disable':
    >> drivers/soc/mediatek/mtk-scpsys-ext.c:141:12: error: implicit declaration of function '__clk_get_name'; did you mean 'clk_get_rate'? [-Werror=implicit-function-declaration]
    __clk_get_name(cc->clk));
    ^
    include/linux/printk.h:304:33: note: in definition of macro 'pr_err'
    printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
    ^~~~~~~~~~~
    In file included from include/linux/printk.h:7:0,
    from include/linux/kernel.h:14,
    from include/linux/clk.h:16,
    from drivers/soc/mediatek/mtk-scpsys-ext.c:6:
    >> include/linux/kern_levels.h:5:18: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=]
    #define KERN_SOH "\001" /* ASCII Start Of Header */
    ^
    include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
    #define KERN_ERR KERN_SOH "3" /* error conditions */
    ^~~~~~~~
    include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
    printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
    ^~~~~~~~
    >> drivers/soc/mediatek/mtk-scpsys-ext.c:139:5: note: in expansion of macro 'pr_err'
    pr_err("Failed to %s %s\n",
    ^~~~~~
    drivers/soc/mediatek/mtk-scpsys-ext.c:139:28: note: format string is defined here
    pr_err("Failed to %s %s\n",
    ~^
    %d
    cc1: some warnings being treated as errors
    --
    In file included from include/linux/kernel.h:14:0,
    from include/linux/clk.h:16,
    from drivers/soc//mediatek/mtk-scpsys-ext.c:6:
    drivers/soc//mediatek/mtk-scpsys-ext.c: In function 'bus_clk_enable_disable':
    drivers/soc//mediatek/mtk-scpsys-ext.c:141:12: error: implicit declaration of function '__clk_get_name'; did you mean 'clk_get_rate'? [-Werror=implicit-function-declaration]
    __clk_get_name(cc->clk));
    ^
    include/linux/printk.h:304:33: note: in definition of macro 'pr_err'
    printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
    ^~~~~~~~~~~
    In file included from include/linux/printk.h:7:0,
    from include/linux/kernel.h:14,
    from include/linux/clk.h:16,
    from drivers/soc//mediatek/mtk-scpsys-ext.c:6:
    >> include/linux/kern_levels.h:5:18: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'int' [-Wformat=]
    #define KERN_SOH "\001" /* ASCII Start Of Header */
    ^
    include/linux/kern_levels.h:11:18: note: in expansion of macro 'KERN_SOH'
    #define KERN_ERR KERN_SOH "3" /* error conditions */
    ^~~~~~~~
    include/linux/printk.h:304:9: note: in expansion of macro 'KERN_ERR'
    printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
    ^~~~~~~~
    drivers/soc//mediatek/mtk-scpsys-ext.c:139:5: note: in expansion of macro 'pr_err'
    pr_err("Failed to %s %s\n",
    ^~~~~~
    drivers/soc//mediatek/mtk-scpsys-ext.c:139:28: note: format string is defined here
    pr_err("Failed to %s %s\n",
    ~^
    %d
    cc1: some warnings being treated as errors

    vim +141 drivers/soc/mediatek/mtk-scpsys-ext.c

    > 6 #include <linux/clk.h>
    7 #include <linux/clk-provider.h>
    8 #include <linux/slab.h>
    9 #include <linux/export.h>
    10 #include <linux/mfd/syscon.h>
    11 #include <linux/of_device.h>
    12 #include <linux/platform_device.h>
    13 #include <linux/regmap.h>
    14 #include <linux/soc/mediatek/infracfg.h>
    15 #include <linux/soc/mediatek/scpsys-ext.h>
    16
    17
    18 #define MAX_CLKS 10
    19 #define INFRA "infracfg"
    20 #define SMIC "smi_comm"
    21
    22 static LIST_HEAD(ext_clk_map_list);
    23 static LIST_HEAD(ext_attr_map_list);
    24
    25 static struct regmap *infracfg;
    26 static struct regmap *smi_comm;
    27
    28 enum regmap_type {
    29 IFR_TYPE,
    30 SMI_TYPE,
    31 MAX_REGMAP_TYPE,
    32 };
    33
    34 /**
    35 * struct ext_reg_ctrl - set multiple register for bus protect
    36 * @regmap: The bus protect regmap, 1: infracfg, 2: other master regmap
    37 * such as SMI.
    38 * @set_ofs: The set register offset to set corresponding bit to 1.
    39 * @clr_ofs: The clr register offset to clear corresponding bit to 0.
    40 * @sta_ofs: The status register offset to show bus protect enable/disable.
    41 */
    42 struct ext_reg_ctrl {
    43 enum regmap_type type;
    44 u32 set_ofs;
    45 u32 clr_ofs;
    46 u32 sta_ofs;
    47 };
    48
    49 /**
    50 * struct ext_clk_ctrl - enable multiple clks for bus protect
    51 * @clk: The clk need to enable before pwr on/bus protect.
    52 * @scpd_n: The name present the scpsys domain where the clks belongs to.
    53 * @clk_list: The list node linked to ext_clk_map_list.
    54 */
    55 struct ext_clk_ctrl {
    56 struct clk *clk;
    57 const char *scpd_n;
    58 struct list_head clk_list;
    59 };
    60
    61 struct bus_mask_ops {
    62 int (*set)(struct regmap *regmap, u32 set_ofs,
    63 u32 sta_ofs, u32 mask);
    64 int (*release)(struct regmap *regmap, u32 clr_ofs,
    65 u32 sta_ofs, u32 mask);
    66 };
    67
    68 static struct scpsys_ext_attr *__get_attr_parent(const char *parent_n)
    69 {
    70 struct scpsys_ext_attr *attr;
    71
    72 if (!parent_n)
    73 return ERR_PTR(-EINVAL);
    74
    75 list_for_each_entry(attr, &ext_attr_map_list, attr_list) {
    76 if (attr->scpd_n && !strcmp(parent_n, attr->scpd_n))
    77 return attr;
    78 }
    79
    80 return ERR_PTR(-EINVAL);
    81 }
    82
    83 int bus_ctrl_set_release(struct scpsys_ext_attr *attr, bool set)
    84 {
    85 int i;
    86 int ret = 0;
    87
    88 for (i = 0; i < MAX_STEP_NUM && attr->mask[i].mask; i++) {
    89 struct ext_reg_ctrl *rc = attr->mask[i].regs;
    90 struct regmap *regmap;
    91
    92 if (rc->type == IFR_TYPE)
    93 regmap = infracfg;
    94 else if (rc->type == SMI_TYPE)
    95 regmap = smi_comm;
    96 else
    97 return -EINVAL;
    98
    99 if (set)
    100 ret = attr->mask[i].ops->set(regmap,
    101 rc->set_ofs,
    102 rc->sta_ofs,
    103 attr->mask[i].mask);
    104 else
    105 ret = attr->mask[i].ops->release(regmap,
    106 rc->clr_ofs,
    107 rc->sta_ofs,
    108 attr->mask[i].mask);
    109 }
    110
    111 return ret;
    112 }
    113
    114 int bus_ctrl_set(struct scpsys_ext_attr *attr)
    115 {
    116 return bus_ctrl_set_release(attr, CMD_ENABLE);
    117 }
    118
    119 int bus_ctrl_release(struct scpsys_ext_attr *attr)
    120 {
    121 return bus_ctrl_set_release(attr, CMD_DISABLE);
    122 }
    123
    124 int bus_clk_enable_disable(struct scpsys_ext_attr *attr, bool enable)
    125 {
    126 int i = 0;
    127 int ret = 0;
    128 struct ext_clk_ctrl *cc;
    129 struct clk *clk[MAX_CLKS];
    130
    131 list_for_each_entry(cc, &ext_clk_map_list, clk_list) {
    132 if (!strcmp(cc->scpd_n, attr->scpd_n)) {
    133 if (enable)
    134 ret = clk_prepare_enable(cc->clk);
    135 else
    136 clk_disable_unprepare(cc->clk);
    137
    138 if (ret) {
    > 139 pr_err("Failed to %s %s\n",
    140 enable ? "enable" : "disable",
    > 141 __clk_get_name(cc->clk));
    142 goto err;
    143 } else {
    144 clk[i] = cc->clk;
    145 i++;
    146 }
    147 }
    148 }
    149
    150 return ret;
    151
    152 err:
    153 for (--i; i >= 0; i--)
    154 if (enable)
    155 clk_disable_unprepare(clk[i]);
    156 else
    157 clk_prepare_enable(clk[i]);
    158 return ret;
    159 }
    160

    ---
    0-DAY kernel test infrastructure Open Source Technology Center
    https://lists.01.org/pipermail/kbuild-all Intel Corporation
    [unhandled content-type:application/gzip]
    \
     
     \ /
      Last update: 2018-07-17 17:50    [W:21.419 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site