1. 13 Aug, 2020 5 commits
    • Tony Lindgren's avatar
      mfd: motorola-cpcap: Disable interrupt for suspend · 819e42e0
      Tony Lindgren authored
      Otherwise we get spammed with errors on resume after rtcwake:
      
       cpcap-core spi0.0: Failed to read IRQ status: -108
      
      Note that rtcwake is still capable of waking up the system with
      this patch.
      
      Cc: Merlijn Wajer <merlijn@wizzup.org>
      Cc: Pavel Machek <pavel@ucw.cz>
      Cc: Sebastian Reichel <sebastian.reichel@collabora.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      819e42e0
    • Michael Walle's avatar
      mfd: smsc-ece1099: Remove driver · 7d2594cd
      Michael Walle authored
      This MFD driver has no user. The keypad driver of this device never made
      it into the kernel. Therefore, this driver is useless. Remove it.
      Signed-off-by: default avatarMichael Walle <michael@walle.cc>
      Cc: Sourav Poddar <sourav.poddar@ti.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      7d2594cd
    • Lee Jones's avatar
      mfd: core: Add OF_MFD_CELL_REG() helper · 44e6171e
      Lee Jones authored
      Extend current list of helpers to provide support for parent drivers
      wishing to match specific child devices to particular OF nodes.
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      44e6171e
    • Lee Jones's avatar
      mfd: core: Fix formatting of MFD helpers · d097965b
      Lee Jones authored
      Remove unnecessary '\'s and leading tabs.
      
      This will help to clean-up future diffs when subsequent changes are
      made.
      
      Hint: The aforementioned changes follow this patch.
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      d097965b
    • Lee Jones's avatar
      mfd: core: Make a best effort attempt to match devices with the correct of_nodes · 466a62d7
      Lee Jones authored
      Currently, when a child platform device (sometimes referred to as a
      sub-device) is registered via the Multi-Functional Device (MFD) API,
      the framework attempts to match the newly registered platform device
      with its associated Device Tree (OF) node.  Until now, the device has
      been allocated the first node found with an identical OF compatible
      string.  Unfortunately, if there are, say for example '3' devices
      which are to be handled by the same driver and therefore have the same
      compatible string, each of them will be allocated a pointer to the
      *first* node.
      
      An example Device Tree entry might look like this:
      
        mfd_of_test {
                compatible = "mfd,of-test-parent";
                #address-cells = <0x02>;
                #size-cells = <0x02>;
      
                child@aaaaaaaaaaaaaaaa {
                        compatible = "mfd,of-test-child";
                        reg = <0xaaaaaaaa 0xaaaaaaaa 0 0x11>,
                              <0xbbbbbbbb 0xbbbbbbbb 0 0x22>;
                };
      
                child@cccccccc {
                        compatible = "mfd,of-test-child";
                        reg = <0x00000000 0xcccccccc 0 0x33>;
                };
      
                child@dddddddd00000000 {
                        compatible = "mfd,of-test-child";
                        reg = <0xdddddddd 0x00000000 0 0x44>;
                };
        };
      
      When used with example sub-device registration like this:
      
        static const struct mfd_cell mfd_of_test_cell[] = {
              OF_MFD_CELL("mfd-of-test-child", NULL, NULL, 0, 0, "mfd,of-test-child"),
              OF_MFD_CELL("mfd-of-test-child", NULL, NULL, 0, 1, "mfd,of-test-child"),
              OF_MFD_CELL("mfd-of-test-child", NULL, NULL, 0, 2, "mfd,of-test-child")
        };
      
      ... the current implementation will result in all devices being allocated
      the first OF node found containing a matching compatible string:
      
        [0.712511] mfd-of-test-child mfd-of-test-child.0: Probing platform device: 0
        [0.712710] mfd-of-test-child mfd-of-test-child.0: Using OF node: child@aaaaaaaaaaaaaaaa
        [0.713033] mfd-of-test-child mfd-of-test-child.1: Probing platform device: 1
        [0.713381] mfd-of-test-child mfd-of-test-child.1: Using OF node: child@aaaaaaaaaaaaaaaa
        [0.713691] mfd-of-test-child mfd-of-test-child.2: Probing platform device: 2
        [0.713889] mfd-of-test-child mfd-of-test-child.2: Using OF node: child@aaaaaaaaaaaaaaaa
      
      After this patch each device will be allocated a unique OF node:
      
        [0.712511] mfd-of-test-child mfd-of-test-child.0: Probing platform device: 0
        [0.712710] mfd-of-test-child mfd-of-test-child.0: Using OF node: child@aaaaaaaaaaaaaaaa
        [0.713033] mfd-of-test-child mfd-of-test-child.1: Probing platform device: 1
        [0.713381] mfd-of-test-child mfd-of-test-child.1: Using OF node: child@cccccccc
        [0.713691] mfd-of-test-child mfd-of-test-child.2: Probing platform device: 2
        [0.713889] mfd-of-test-child mfd-of-test-child.2: Using OF node: child@dddddddd00000000
      
      Which is fine if all OF nodes are identical.  However if we wish to
      apply an attribute to particular device, we really need to ensure the
      correct OF node will be associated with the device containing the
      correct address.  We accomplish this by matching the device's address
      expressed in DT with one provided during sub-device registration.
      Like this:
      
        static const struct mfd_cell mfd_of_test_cell[] = {
              OF_MFD_CELL_REG("mfd-of-test-child", NULL, NULL, 0, 1, "mfd,of-test-child", 0xdddddddd00000000),
              OF_MFD_CELL_REG("mfd-of-test-child", NULL, NULL, 0, 2, "mfd,of-test-child", 0xaaaaaaaaaaaaaaaa),
              OF_MFD_CELL_REG("mfd-of-test-child", NULL, NULL, 0, 3, "mfd,of-test-child", 0x00000000cccccccc)
        };
      
      This will ensure a specific device (designated here using the
      platform_ids; 1, 2 and 3) is matched with a particular OF node:
      
        [0.712511] mfd-of-test-child mfd-of-test-child.0: Probing platform device: 0
        [0.712710] mfd-of-test-child mfd-of-test-child.0: Using OF node: child@dddddddd00000000
        [0.713033] mfd-of-test-child mfd-of-test-child.1: Probing platform device: 1
        [0.713381] mfd-of-test-child mfd-of-test-child.1: Using OF node: child@aaaaaaaaaaaaaaaa
        [0.713691] mfd-of-test-child mfd-of-test-child.2: Probing platform device: 2
        [0.713889] mfd-of-test-child mfd-of-test-child.2: Using OF node: child@cccccccc
      
      This implementation is still not infallible, hence the mention of
      "best effort" in the commit subject.  Since we have not *insisted* on
      the existence of 'reg' properties (in some scenarios they just do not
      make sense) and no device currently uses the new 'of_reg' attribute,
      we have to make an on-the-fly judgement call whether to associate the
      OF node anyway.  Which we do in cases where parent drivers haven't
      specified a particular OF node to match to.  So there is a *slight*
      possibility of the following result (note: the implementation here is
      convoluted, but it shows you one means by which this process can
      still break):
      
        /*
         * First entry will match to the first OF node with matching compatible
         * Second will fail, since the first took its OF node and is no longer available
         * Third will succeed
         */
        static const struct mfd_cell mfd_of_test_cell[] = {
              OF_MFD_CELL("mfd-of-test-child", NULL, NULL, 0, 1, "mfd,of-test-child"),
      	OF_MFD_CELL_REG("mfd-of-test-child", NULL, NULL, 0, 2, "mfd,of-test-child", 0xaaaaaaaaaaaaaaaa),
              OF_MFD_CELL_REG("mfd-of-test-child", NULL, NULL, 0, 3, "mfd,of-test-child", 0x00000000cccccccc)
        };
      
      The result:
      
        [0.753869] mfd-of-test-parent mfd_of_test: Registering 3 devices
        [0.756597] mfd-of-test-child: Failed to locate of_node [id: 2]
        [0.759999] mfd-of-test-child mfd-of-test-child.1: Probing platform device: 1
        [0.760314] mfd-of-test-child mfd-of-test-child.1: Using OF node: child@aaaaaaaaaaaaaaaa
        [0.760908] mfd-of-test-child mfd-of-test-child.2: Probing platform device: 2
        [0.761183] mfd-of-test-child mfd-of-test-child.2: No OF node associated with this device
        [0.761621] mfd-of-test-child mfd-of-test-child.3: Probing platform device: 3
        [0.761899] mfd-of-test-child mfd-of-test-child.3: Using OF node: child@cccccccc
      
      We could code around this with some pre-parsing semantics, but the
      added complexity required to cover each and every corner-case is not
      justified.  Merely patching the current failing (via this patch) is
      already working with some pretty small corner-cases.  Other issues
      should be patched in the parent drivers which can be achieved simply
      by implementing OF_MFD_CELL_REG().
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      466a62d7
  2. 14 Jul, 2020 1 commit
  3. 07 Jul, 2020 1 commit
  4. 06 Jul, 2020 32 commits
    • Lee Jones's avatar
      mfd: sprd-sc27xx-spi: Fix-up bogus IRQ register offset and mask setting · ec46855d
      Lee Jones authored
      'i / pdata->num_irqs' always equates to 0 and 'BIT(i % pdata->num_irqs)'
      always ends up being BIT(i) here, so make that clearer in the code.  If
      the code base needs to support more than 32 IRQs in the future, this will
      have to be reworked, but lets just keep it simple for as long as we can.
      
      This fixes the following W=1 warning:
      
       drivers/mfd/sprd-sc27xx-spi.c:255 sprd_pmic_probe() debug: sval_binop_unsigned: divide by zero
      
      Cc: Orson Zhai <orsonzhai@gmail.com>
      Cc: Chunyan Zhang <zhang.lyra@gmail.com>
      Suggested-by: default avatarBaolin Wang <baolin.wang7@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Reviewed-by: default avatarBaolin Wang <baolin.wang7@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      ec46855d
    • Lee Jones's avatar
      mfd: rave-sp: Fix mistake in 'struct rave_sp_deframer's kerneldoc · 768c1e38
      Lee Jones authored
      Argument 'received' was incorrectly named by its struct type 'completion'
      instead of its name.
      
      Fixes the following W=1 warning:
      
       drivers/mfd/rave-sp.c:107: warning: Function parameter or member 'received' not described in 'rave_sp_reply'
      
      Cc: Andrey Vostrikov <andrey.vostrikov@cogentembedded.com>
      Cc: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      768c1e38
    • Lee Jones's avatar
      mfd: si476x-cmd: Add missing documentation for si476x_cmd_fm_rds_status()'s arg 'report' · 981b1261
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.
      
      Descriptions are required for all arguments.
      
      Fixes the following W=1 build warning:
      
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'report' not described in 'si476x_core_cmd_fm_rds_status'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      981b1261
    • Lee Jones's avatar
      mfd: si476x-cmd: Update si476x_cmd_am_rsq_status()'s kerneldoc · 748160e7
      Lee Jones authored
      4 of the old arguments were grouped and moved into a struct which
      is now passed as a pointer instead of the arguments themselves.
      However, whoever carried out this work forgot to update the
      function's kerneldoc header.
      
      Fixes the following W=1 warnings:
      
       drivers/mfd/si476x-cmd.c:746: warning: Function parameter or member 'rsqargs' not described in 'si476x_core_cmd_am_rsq_s
       drivers/mfd/si476x-cmd.c:746: warning: Excess function parameter 'rsqack' description in 'si476x_core_cmd_am_rsq_status'
       drivers/mfd/si476x-cmd.c:746: warning: Excess function parameter 'attune' description in 'si476x_core_cmd_am_rsq_status'
       drivers/mfd/si476x-cmd.c:746: warning: Excess function parameter 'cancel' description in 'si476x_core_cmd_am_rsq_status'
       drivers/mfd/si476x-cmd.c:746: warning: Excess function parameter 'stcack' description in 'si476x_core_cmd_am_rsq_status'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      748160e7
    • Lee Jones's avatar
      mfd: si476x-i2c: Fix spelling mistake in case() statement's FALLTHROUGH comment · b1ded80a
      Lee Jones authored
      's/FALLTHROUG/FALLTHROUGH'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      b1ded80a
    • Lee Jones's avatar
      mfd: si476x-i2c: Add description for si476x_core_fwver_to_revision()'s arg 'func' · c9b55f99
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.
      
      Descriptions are required for all arguments.
      
      Fixes the following W=1 build warning:
      
       drivers/mfd/si476x-i2c.c:550: warning: Function parameter or member 'func' not described in 'si476x_core_fwver_to_revision'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      c9b55f99
    • Lee Jones's avatar
      mfd: si476x-cmd: Add missing colon(s) for all documented kerneldoc arguments · 9745ef7d
      Lee Jones authored
      Kerneldoc validation gets confused if syntax isn't "@.*: ".
      
      Adding the missing colons squashes the following W=1 warnings:
      
       drivers/mfd/si476x-cmd.c:525: warning: Function parameter or member 'dout' not described in 'si476x_core_cmd_dig_audio_pin_c
       drivers/mfd/si476x-cmd.c:525: warning: Function parameter or member 'xout' not described in 'si476x_core_cmd_dig_audio_pin_c
       drivers/mfd/si476x-cmd.c:574: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_zif_pin_cfg'
       drivers/mfd/si476x-cmd.c:574: warning: Function parameter or member 'iqclk' not described in 'si476x_core_cmd_zif_pin_cfg'
       drivers/mfd/si476x-cmd.c:574: warning: Function parameter or member 'iqfs' not described in 'si476x_core_cmd_zif_pin_cfg'
       drivers/mfd/si476x-cmd.c:574: warning: Function parameter or member 'iout' not described in 'si476x_core_cmd_zif_pin_cfg'
       drivers/mfd/si476x-cmd.c:574: warning: Function parameter or member 'qout' not described in 'si476x_core_cmd_zif_pin_cfg'
       drivers/mfd/si476x-i2c.c:550: warning: Function parameter or member 'func' not described in 'si476x_core_fwver_to_revision'
       drivers/mfd/si476x-cmd.c:631: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_ic_link_gpo_ctl
       drivers/mfd/si476x-cmd.c:631: warning: Function parameter or member 'icin' not described in 'si476x_core_cmd_ic_link_gpo_ctl
       drivers/mfd/si476x-cmd.c:631: warning: Function parameter or member 'icip' not described in 'si476x_core_cmd_ic_link_gpo_ctl
       drivers/mfd/si476x-cmd.c:631: warning: Function parameter or member 'icon' not described in 'si476x_core_cmd_ic_link_gpo_ctl
       drivers/mfd/si476x-cmd.c:631: warning: Function parameter or member 'icop' not described in 'si476x_core_cmd_ic_link_gpo_ctl
       drivers/mfd/si476x-cmd.c:662: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_ana_audio_pin_c
       drivers/mfd/si476x-cmd.c:662: warning: Function parameter or member 'lrout' not described in 'si476x_core_cmd_ana_audio_pin_
       drivers/mfd/si476x-cmd.c:697: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_intb_pin_cfg_a1
       drivers/mfd/si476x-cmd.c:697: warning: Function parameter or member 'intb' not described in 'si476x_core_cmd_intb_pin_cfg_a1
       drivers/mfd/si476x-cmd.c:697: warning: Function parameter or member 'a1' not described in 'si476x_core_cmd_intb_pin_cfg_a10'
       drivers/mfd/si476x-cmd.c:746: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_am_rsq_status'
       drivers/mfd/si476x-cmd.c:746: warning: Function parameter or member 'rsqargs' not described in 'si476x_core_cmd_am_rsq_statu
       drivers/mfd/si476x-cmd.c:746: warning: Function parameter or member 'report' not described in 'si476x_core_cmd_am_rsq_status
       drivers/mfd/si476x-cmd.c:878: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_fm_seek_start'
       drivers/mfd/si476x-cmd.c:878: warning: Function parameter or member 'seekup' not described in 'si476x_core_cmd_fm_seek_start
       drivers/mfd/si476x-cmd.c:878: warning: Function parameter or member 'wrap' not described in 'si476x_core_cmd_fm_seek_start'
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_fm_rds_status'
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'status_only' not described in 'si476x_core_cmd_fm_rds_s
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'mtfifo' not described in 'si476x_core_cmd_fm_rds_status
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'intack' not described in 'si476x_core_cmd_fm_rds_status
       drivers/mfd/si476x-cmd.c:907: warning: Function parameter or member 'report' not described in 'si476x_core_cmd_fm_rds_status
       drivers/mfd/si476x-cmd.c:1052: warning: Function parameter or member 'core' not described in 'si476x_core_cmd_am_seek_start'
       drivers/mfd/si476x-cmd.c:1052: warning: Function parameter or member 'seekup' not described in 'si476x_core_cmd_am_seek_star
       drivers/mfd/si476x-cmd.c:1052: warning: Function parameter or member 'wrap' not described in 'si476x_core_cmd_am_seek_start'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      9745ef7d
    • Lee Jones's avatar
      mfd: si476x-cmd: Repair wrongly described function argument 's/response/resp' · 3c719388
      Lee Jones authored
      si476x_core_send_command()'s 5th argument has never been called response.
      
      This change must have occurred prior to the driver being Mainlined.
      
      We're also taking the opportunity to bring the first description back
      into line, making my OCD happy!
      
      This fixes the following W=1 warning(s):
      
       drivers/mfd/si476x-cmd.c:264: warning: Function parameter or member 'resp' not described in 'si476x_core_send_command
       drivers/mfd/si476x-cmd.c:264: warning: Excess function parameter 'response' description in 'si476x_core_send_command'
      
      Cc: Andrey Smirnov <andrew.smirnov@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      3c719388
    • Lee Jones's avatar
      mfd: tps65010: Remove delcared and set, but never used variable 'status' · 2fbd5834
      Lee Jones authored
      'status' hasn't been checked since 2008.
      
      It's probably safe to remove it.
      
      Fixes W=1 warning:
      
       drivers/mfd/tps65010.c:407:7: warning: variable ‘status’ set but not used [-Wunused-but-set-variable]
       407 | int status;
       | ^~~~~~
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      2fbd5834
    • Lee Jones's avatar
      mfd: ab3100-otp: Add missing colon(s) for all documented kerneldoc arguments · 20d60f85
      Lee Jones authored
      Kerneldoc validation gets confused if syntax isn't "@.*: ".
      
      Adding the missing colons squashes the following W=1 warnings:
      
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'dev' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'locked' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'freq' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'paf' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'imeich' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'cid' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'tac' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'fac' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'svn' not described in 'ab3100_otp'
       drivers/mfd/ab3100-otp.c:60: warning: Function parameter or member 'debugfs' not described in 'ab3100_otp'
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      20d60f85
    • Lee Jones's avatar
      mfd: tps65217: Repair incorrect function argument name 's/tps65217/tps/' · 4976bfb8
      Lee Jones authored
      The kerneldocs for both tps65217_reg_write() and tps65217_update_bits()
      describe their first arguments as 'tps65217', when in reality these are
      simply called 'tps'.
      
      Fixes the following W=1 warnings:
      
       drivers/mfd/tps65217.c:215: warning: Function parameter or member 'tps' not described in 'tps65217_reg_write'
       drivers/mfd/tps65217.c:215: warning: Excess function parameter 'tps65217' description in 'tps65217_reg_write'
       drivers/mfd/tps65217.c:261: warning: Function parameter or member 'tps' not described in 'tps65217_update_bits'
       drivers/mfd/tps65217.c:261: warning: Excess function parameter 'tps65217' description in 'tps65217_update_bits'
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: AnilKumar Ch <anilkumar@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      4976bfb8
    • Lee Jones's avatar
      mfd: tps65218: Repair incorrect function argument name 's/tps65218/tps/' · 9c3739ee
      Lee Jones authored
      The kerneldocs for both tps65218_reg_write() and tps65218_update_bits()
      describe their first arguments as 'tps65218', when in reality these are
      simply called 'tps'.
      
      Fixes the following W=1 warnings:
      
       drivers/mfd/tps65218.c:58: warning: Function parameter or member 'tps' not described in 'tps65218_reg_write'
       drivers/mfd/tps65218.c:58: warning: Excess function parameter 'tps65218' description in 'tps65218_reg_write'
       drivers/mfd/tps65218.c:90: warning: Function parameter or member 'tps' not described in 'tps65218_update_bits'
       drivers/mfd/tps65218.c:90: warning: Excess function parameter 'tps65218' description in 'tps65218_update_bits'
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: J Keerthy <j-keerthy@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      9c3739ee
    • Lee Jones's avatar
      mfd: cros_ec_dev: Fix cros_feature_to_{name,cells} struct descriptions · 5ae3d1bc
      Lee Jones authored
      Kerneldoc expects kernel structures to be prefixed with 'struct'.
      
      Fixes the following W=1 level warnings:
      
       drivers/mfd/cros_ec_dev.c:32: warning: cannot understand function prototype: 'struct cros_feature_to_name '
       drivers/mfd/cros_ec_dev.c:44: warning: cannot understand function prototype: 'struct cros_feature_to_cells '
      
      Cc: Benson Leung <bleung@chromium.org>
      Cc: Guenter Roeck <groeck@chromium.org>
      Cc: Bill Richardson <wfrichar@chromium.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Acked-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      5ae3d1bc
    • Lee Jones's avatar
      mfd: altera-sysmgr: Supply descriptions for 'np' and 'property' function args · 0824c889
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Arg descriptions are required.
      
      Fixes the following W=1 build warnings:
      
       drivers/mfd/altera-sysmgr.c:95: warning: Function parameter or member 'np' not described in 'altr_sysmgr_regmap_lookup_by_phandle'
       drivers/mfd/altera-sysmgr.c:95: warning: Function parameter or member 'property' not described in 'altr_sysmgr_regmap_lookup_by_phandle'
      
      Cc: Thor Thayer <thor.thayer@linux.intel.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      0824c889
    • Lee Jones's avatar
      mfd: atmel-smc: Add missing colon(s) for 'conf' arguments · 1574360a
      Lee Jones authored
      Kerneldoc valication gets confused if syntax isn't "@.*: ".
      
      Adding the missing colons squashes the following W=1 warnings:
      
      drivers/mfd/atmel-smc.c:247: warning: Function parameter or member 'conf' not described in 'atmel_smc_cs_conf_apply'
      drivers/mfd/atmel-smc.c:268: warning: Function parameter or member 'conf' not described in 'atmel_hsmc_cs_conf_apply'
      
      Cc: Nicolas Ferre <nicolas.ferre@microchip.com>
      Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
      Cc: Ludovic Desroches <ludovic.desroches@microchip.com>
      Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      1574360a
    • Lee Jones's avatar
      mfd: omap-usb-tll: Provide description for 'pdev' argument to .probe() · 55bbf5d4
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Arg descriptions required.
      
      Prevents warnings like:
      
       drivers/mfd/omap-usb-tll.c:204: warning: Function parameter or member 'pdev' not described in 'usbtll_omap_probe
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Keshava Munegowda <keshava_mgowda@ti.com>
      Cc: Roger Quadros <rogerq@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      55bbf5d4
    • Lee Jones's avatar
      mfd: omap-usb-host: Provide description for 'pdev' argument to .probe() · 3fc65627
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Arg descriptions required.
      
      Prevents warnings like:
      
       drivers/mfd/omap-usb-host.c:531: warning: Function parameter or member 'pdev' not described in 'usbhs_omap_probe'
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Keshava Munegowda <keshava_mgowda@ti.com>
      Cc: Roger Quadros <rogerq@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      3fc65627
    • Lee Jones's avatar
      mfd: omap-usb-host: Remove invalid use of kerneldoc syntax · 5d36df75
      Lee Jones authored
      Kerneldoc is for documenting function arguments and return values.
      
      Prevents warnings like:
      
       drivers/mfd/omap-usb-host.c:128: warning: cannot understand function prototype: 'const char * const port_modes[] = '
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Keshava Munegowda <keshava_mgowda@ti.com>
      Cc: Roger Quadros <rogerq@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      5d36df75
    • Lee Jones's avatar
      mfd: db8500-prcmu: Remove incorrect function header from .probe() function · 07d88c97
      Lee Jones authored
      Not only is the current header incorrect, the isn't actually a
      need to document the ubiquitous platform probe call.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      07d88c97
    • Lee Jones's avatar
      mfd: db8500-prcmu: Add description for 'reset_reason' in kerneldoc · 3ecbcd20
      Lee Jones authored
      Each function parameter should be documented in kerneldoc format.
      
      Squashes the following W=1 warnings:
      
       drivers/mfd/db8500-prcmu.c:2281: warning: Function parameter or member 'reset_code' not described in 'db8500_prcmu_system_reset'
       drivers/mfd/db8500-prcmu.c:3012: warning: Function parameter or member 'pdev' not described in 'db8500_prcmu_probe'
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      3ecbcd20
    • Lee Jones's avatar
      mfd: mfd-core: Complete kerneldoc header for devm_mfd_add_devices() · 5a0ffef8
      Lee Jones authored
      Each function parameter should be documented in kerneldoc format.
      
      Squashes the following W=1 warnings:
      
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'dev' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'id' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'cells' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'n_devs' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'mem_base' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'irq_base' not described in 'devm_mfd_add_devices'
       drivers/mfd/mfd-core.c:326: warning: Function parameter or member 'domain' not described in 'devm_mfd_add_devices'
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      5a0ffef8
    • Lee Jones's avatar
      mfd: wm8350-core: Supply description wm8350_reg_{un}lock args · afb718a8
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Descriptions required.
      
      Prevents warnings like:
      
       drivers/mfd/wm8350-core.c:136: warning: Function parameter or member 'wm8350' not described in 'wm8350_reg_lock'
       drivers/mfd/wm8350-core.c:165: warning: Function parameter or member 'wm8350' not described in 'wm8350_reg_unlock'
      
      Cc: patches@opensource.cirrus.com
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      afb718a8
    • Lee Jones's avatar
      mfd: wm831x-core: Supply description wm831x_reg_{un}lock args · 38ea9f47
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Descriptions required.
      
      Prevents warnings like:
      
       drivers/mfd/wm831x-core.c:119: warning: Function parameter or member 'wm831x' not described in 'wm831x_reg_lock'
       drivers/mfd/wm831x-core.c:145: warning: Function parameter or member 'wm831x' not described in 'wm831x_reg_unlock'
      
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: patches@opensource.cirrus.com
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Acked-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      38ea9f47
    • Lee Jones's avatar
      mfd: wm8400-core: Supply description for wm8400_reset_codec_reg_cache's arg · f139ef70
      Lee Jones authored
      Kerneldoc syntax is used, but not complete.  Descriptions required.
      
      Prevents warnings like:
      
       drivers/mfd/wm8400-core.c:113: warning: Function parameter or member 'wm8400' not described in 'wm8400_reset_codec_reg_cache'
      
      Cc: Mark Brown <broonie@opensource.wolfsonmicro.com>
      Cc: patches@opensource.cirrus.com
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Acked-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      f139ef70
    • Lee Jones's avatar
      mfd: tc3589x: Remove invalid use of kerneldoc syntax · 0dfae4a3
      Lee Jones authored
      Kerneldoc is for documenting function arguments and return values.
      
      Prevents warnings like:
      
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35890' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35892' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35893' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35894' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35895' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_TC35896' not described in enum 'tc3589x_version'
       drivers/mfd/tc3589x.c:32: warning: Enum value 'TC3589X_UNKNOWN' not described in enum 'tc3589x_version'
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      0dfae4a3
    • Lee Jones's avatar
      mfd: ab8500-debugfs: Fix incompatible types in comparison expression issue · ddb6b26c
      Lee Jones authored
      Smatch reports:
      
       drivers/mfd/ab8500-debugfs.c:1804:20: error: incompatible types in comparison expression (different type sizes):
       drivers/mfd/ab8500-debugfs.c:1804:20:    unsigned int *
       drivers/mfd/ab8500-debugfs.c:1804:20:    unsigned long *
      
      This is due to mixed types being compared in a min() comparison.  Fix
      this by treating values as signed and casting them to the same type
      as the receiving variable.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      ddb6b26c
    • Lee Jones's avatar
      mfd: ab3100-core: Fix incompatible types in comparison expression warning · 54daa5d4
      Lee Jones authored
      Smatch reports:
      
       drivers/mfd/ab3100-core.c:501:20: error: incompatible types in comparison expression (different type sizes):
       drivers/mfd/ab3100-core.c:501:20:    unsigned int *
       drivers/mfd/ab3100-core.c:501:20:    unsigned long *
       drivers/mfd/ab8500-debugfs.c:1804:20: error: incompatible types in comparison expression (different type sizes):
       drivers/mfd/ab8500-debugfs.c:1804:20:    unsigned int *
       drivers/mfd/ab8500-debugfs.c:1804:20:    unsigned long *
      
      Since the second min() argument can be less than 0 a signed
      variable is required for assignment.  However, the non-sized
      type size_t is passed in from the userspace handlers.  In order
      to firstly compare, then assign the smallest value, we firstly
      need to cast them both to the same as the receiving size_t typed
      variable.
      
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      54daa5d4
    • Lee Jones's avatar
      mfd: sprd-sc27xx-spi: Fix symbol 'sprd_pmic_detect_charger_type' was not declared warning · 3d4a8757
      Lee Jones authored
      Sparse reports:
      
       drivers/mfd/sprd-sc27xx-spi.c:59:23: warning: symbol 'sprd_pmic_detect_charger_type' was not declared. Should it be static?
      
      ... due to a missing header file.
      
      Cc: Orson Zhai <orsonzhai@gmail.com>
      Cc: Chunyan Zhang <zhang.lyra@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Reviewed-by: default avatarBaolin Wang <baolin.wang7@gmail.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      3d4a8757
    • Lee Jones's avatar
      mfd: altera-sysmgr: Fix physical address storing hacks · d9ca7801
      Lee Jones authored
      Sparse reports:
      
       drivers/mfd/altera-sysmgr.c:150:30: warning: incorrect type in assignment (different address spaces)
       drivers/mfd/altera-sysmgr.c:150:30:    expected unsigned int [usertype] *base
       drivers/mfd/altera-sysmgr.c:150:30:    got void [noderef] <asn:2> *
       drivers/mfd/altera-sysmgr.c:156:26: warning: incorrect type in argument 3 (different address spaces)
       drivers/mfd/altera-sysmgr.c:156:26:    expected void [noderef] <asn:2> *regs
       drivers/mfd/altera-sysmgr.c:156:26:    got unsigned int [usertype] *base
      
      It appears as though the driver data property 'resource_size_t *base'
      was being used to store 2 different types of addresses (physical and
      IO-mapped) under a single declared type.
      
      Fortunately, no value is recalled from the driver data entry, so it
      can be easily omitted.  Instead we can use the value obtained directly
      from the platform resource to pass through  Regmap into the call-backs
      to be used for the SMCC call and use a local dedicated __iomem
      variable for IO-remapping.
      
      Cc: Thor Thayer <thor.thayer@linux.intel.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      d9ca7801
    • Lee Jones's avatar
      mfd: tps6586x: Fix cast to restricted __le32 warning · c504a248
      Lee Jones authored
      Silences Sparse warning(s):
      
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
       drivers/mfd/tps6586x.c:323:16: warning: cast to restricted __le32
      
      Cc: Mike Rapoport <mike@compulab.co.il>
      Cc: Eric Miao <eric.miao@marvell.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      c504a248
    • Lee Jones's avatar
      mfd: twl4030-irq: Fix cast to restricted __le32 warning · b174015b
      Lee Jones authored
      Silences Sparse warning(s):
      
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
       drivers/mfd/twl4030-irq.c:573:40: warning: cast to restricted __le32
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Kai Svahn <kai.svahn@nokia.com>
      Cc: Syed Khasim <x0khasim@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      b174015b
    • Lee Jones's avatar
      mfd: twl4030-irq: Fix incorrect type in assignment warning · 6fef0d4e
      Lee Jones authored
      Silences Sparse warning:
      
       drivers/mfd/twl4030-irq.c:485:26: warning: incorrect type in assignment (different base types)
       drivers/mfd/twl4030-irq.c:485:26:    expected unsigned int [usertype] word
       drivers/mfd/twl4030-irq.c:485:26:    got restricted __le32 [usertype]
      
      Cc: Tony Lindgren <tony@atomide.com>
      Cc: Kai Svahn <kai.svahn@nokia.com>
      Cc: Syed Khasim <x0khasim@ti.com>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      6fef0d4e
  5. 01 Jul, 2020 1 commit
    • Johan Hovold's avatar
      mfd: lm3533: Expand control-bank accessors · 4d3ec936
      Johan Hovold authored
      Expand the control-bank accessors that were implemented using macros.
      This allows the definitions of these exported functions to be found more
      easily and specifically avoids a W=1 compiler warning due to the
      redundant brightness sanity check:
      
      drivers/mfd/lm3533-ctrlbank.c: In function 'lm3533_ctrlbank_set_brightness':
      drivers/mfd/lm3533-ctrlbank.c:98:10: warning: comparison is always false due to limited range of data type [-Wtype-limits]
         98 |  if (val > LM3533_##_NAME##_MAX)     \
            |          ^
      drivers/mfd/lm3533-ctrlbank.c:125:1: note: in expansion of macro 'lm3533_ctrlbank_set'
        125 | lm3533_ctrlbank_set(brightness, BRIGHTNESS);
            | ^~~~~~~~~~~~~~~~~~~
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      4d3ec936