lkml.org 
[lkml]   [2023]   [Feb]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] i3c: update dw-i3c-master i3c_clk_cfg function
    Hi Jack,

    Thank you for the patch! Perhaps something to improve:

    [auto build test WARNING on linus/master]
    [also build test WARNING on v6.2-rc8 next-20230213]
    [If your patch is applied to the wrong git tree, kindly drop us a note.
    And when submitting patch, we suggest to use '--base' as documented in
    https://git-scm.com/docs/git-format-patch#_base_tree_information]

    url: https://github.com/intel-lab-lkp/linux/commits/Jack-Chen/i3c-update-dw-i3c-master-i3c_clk_cfg-function/20230213-222533
    patch link: https://lore.kernel.org/r/20230213142336.192875-1-zenghuchen%40google.com
    patch subject: [PATCH] i3c: update dw-i3c-master i3c_clk_cfg function
    config: i386-randconfig-s001 (https://download.01.org/0day-ci/archive/20230214/202302141029.2CS1z9de-lkp@intel.com/config)
    compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
    reproduce:
    # apt-get install sparse
    # sparse version: v0.6.4-39-gce1a6720-dirty
    # https://github.com/intel-lab-lkp/linux/commit/e85b41ae5bb17077ac7d01bdd13c48ea1f83ea42
    git remote add linux-review https://github.com/intel-lab-lkp/linux
    git fetch --no-tags linux-review Jack-Chen/i3c-update-dw-i3c-master-i3c_clk_cfg-function/20230213-222533
    git checkout e85b41ae5bb17077ac7d01bdd13c48ea1f83ea42
    # save the config file
    mkdir build_dir && cp config build_dir/.config
    make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 olddefconfig
    make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/i3c/master/

    If you fix the issue, kindly add following tag where applicable
    | Reported-by: kernel test robot <lkp@intel.com>
    | Link: https://lore.kernel.org/oe-kbuild-all/202302141029.2CS1z9de-lkp@intel.com/

    sparse warnings: (new ones prefixed by >>)
    >> drivers/i3c/master/dw-i3c-master.c:544:16: sparse: sparse: incompatible types in comparison expression (different type sizes):
    >> drivers/i3c/master/dw-i3c-master.c:544:16: sparse: unsigned long *
    >> drivers/i3c/master/dw-i3c-master.c:544:16: sparse: unsigned char *

    vim +544 drivers/i3c/master/dw-i3c-master.c

    517
    518 static int dw_i3c_clk_cfg(struct dw_i3c_master *master)
    519 {
    520 unsigned long core_rate, core_period;
    521 u32 scl_timing;
    522 u8 hcnt, lcnt;
    523
    524 core_rate = clk_get_rate(master->core_clk);
    525 if (!core_rate)
    526 return -EINVAL;
    527
    528 core_period = DIV_ROUND_UP(1000000000, core_rate);
    529
    530 hcnt = DIV_ROUND_UP(I3C_BUS_THIGH_MAX_NS, core_period) - 1;
    531 if (hcnt < SCL_I3C_TIMING_CNT_MIN)
    532 hcnt = SCL_I3C_TIMING_CNT_MIN;
    533
    534 lcnt = DIV_ROUND_UP(core_rate, master->base.bus.scl_rate.i3c) - hcnt;
    535 if (lcnt < SCL_I3C_TIMING_CNT_MIN)
    536 lcnt = SCL_I3C_TIMING_CNT_MIN;
    537
    538 scl_timing = SCL_I3C_TIMING_HCNT(hcnt) | SCL_I3C_TIMING_LCNT(lcnt);
    539 writel(scl_timing, master->regs + SCL_I3C_PP_TIMING);
    540
    541 if (!(readl(master->regs + DEVICE_CTRL) & DEV_CTRL_I2C_SLAVE_PRESENT))
    542 writel(BUS_I3C_MST_FREE(lcnt), master->regs + BUS_FREE_TIMING);
    543
    > 544 lcnt = max(DIV_ROUND_UP(I3C_BUS_TLOW_OD_MIN_NS, core_period), lcnt);
    545 scl_timing = SCL_I3C_TIMING_HCNT(hcnt) | SCL_I3C_TIMING_LCNT(lcnt);
    546 writel(scl_timing, master->regs + SCL_I3C_OD_TIMING);
    547
    548 lcnt = DIV_ROUND_UP(core_rate, I3C_BUS_SDR1_SCL_RATE) - hcnt;
    549 scl_timing = SCL_EXT_LCNT_1(lcnt);
    550 lcnt = DIV_ROUND_UP(core_rate, I3C_BUS_SDR2_SCL_RATE) - hcnt;
    551 scl_timing |= SCL_EXT_LCNT_2(lcnt);
    552 lcnt = DIV_ROUND_UP(core_rate, I3C_BUS_SDR3_SCL_RATE) - hcnt;
    553 scl_timing |= SCL_EXT_LCNT_3(lcnt);
    554 lcnt = DIV_ROUND_UP(core_rate, I3C_BUS_SDR4_SCL_RATE) - hcnt;
    555 scl_timing |= SCL_EXT_LCNT_4(lcnt);
    556 writel(scl_timing, master->regs + SCL_EXT_LCNT_TIMING);
    557
    558 return 0;
    559 }
    560

    --
    0-DAY CI Kernel Test Service
    https://github.com/intel/lkp-tests

    \
     
     \ /
      Last update: 2023-03-27 00:20    [W:5.502 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site