13 Nov, 2020

1 commit


12 Nov, 2020

1 commit

  • Fix PTR_ERR build warning from below patch:
    commit bb9da18bac91 ("MA-18186 mfd: pca9450: handle EPROBE_DEFER when get pmic_plat_data")
    drivers/mfd/pca9450.c:169:25: warning: passing argument 1
    of ‘PTR_ERR’ makes pointer from integer without a cast [-Wint-conversion]
    169 | if (PTR_ERR(board_info->gpio_intr) != -EPROBE_DEFER)

    Signed-off-by: Jindong Yue
    Reviewed-by: Robin Gong

    Jindong Yue
     

29 Oct, 2020

1 commit


20 Oct, 2020

2 commits


08 Oct, 2020

1 commit

  • * tag 'v5.4.70': (3051 commits)
    Linux 5.4.70
    netfilter: ctnetlink: add a range check for l3/l4 protonum
    ep_create_wakeup_source(): dentry name can change under you...
    ...

    Conflicts:
    arch/arm/mach-imx/pm-imx6.c
    arch/arm64/boot/dts/freescale/imx8mm-evk.dts
    arch/arm64/boot/dts/freescale/imx8mn-ddr4-evk.dts
    drivers/crypto/caam/caamalg.c
    drivers/gpu/drm/imx/dw_hdmi-imx.c
    drivers/gpu/drm/imx/imx-ldb.c
    drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c
    drivers/mmc/host/sdhci-esdhc-imx.c
    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c
    drivers/net/ethernet/freescale/enetc/enetc.c
    drivers/net/ethernet/freescale/enetc/enetc_pf.c
    drivers/thermal/imx_thermal.c
    drivers/usb/cdns3/ep0.c
    drivers/xen/swiotlb-xen.c
    sound/soc/fsl/fsl_esai.c
    sound/soc/fsl/fsl_sai.c

    Signed-off-by: Jason Liu

    Jason Liu
     

01 Oct, 2020

1 commit

  • [ Upstream commit b195e101580db390f50b0d587b7f66f241d2bc88 ]

    If a child device calls mfd_cell_{en,dis}able() without an appropriate
    call-back being set, we are likely to encounter a panic. Avoid this
    by adding suitable checking.

    Signed-off-by: Lee Jones
    Reviewed-by: Daniel Thompson
    Reviewed-by: Mark Brown
    Signed-off-by: Sasha Levin

    Lee Jones
     

03 Sep, 2020

2 commits


21 Aug, 2020

2 commits

  • [ Upstream commit 3d858942250820b9adc35f963a257481d6d4c81d ]

    The event handler loop must be run with interrupts disabled.
    Otherwise we will have a warning:

    [ 1970.785649] irq 31 handler lineevent_irq_handler+0x0/0x20 enabled interrupts
    [ 1970.792739] WARNING: CPU: 0 PID: 0 at kernel/irq/handle.c:159 __handle_irq_event_percpu+0x162/0x170
    [ 1970.860732] RIP: 0010:__handle_irq_event_percpu+0x162/0x170
    ...
    [ 1970.946994] Call Trace:
    [ 1970.949446]
    [ 1970.951471] handle_irq_event_percpu+0x2c/0x80
    [ 1970.955921] handle_irq_event+0x23/0x43
    [ 1970.959766] handle_simple_irq+0x57/0x70
    [ 1970.963695] generic_handle_irq+0x42/0x50
    [ 1970.967717] dln2_rx+0xc1/0x210 [dln2]
    [ 1970.971479] ? usb_hcd_unmap_urb_for_dma+0xa6/0x1c0
    [ 1970.976362] __usb_hcd_giveback_urb+0x77/0xe0
    [ 1970.980727] usb_giveback_urb_bh+0x8e/0xe0
    [ 1970.984837] tasklet_action_common.isra.0+0x4a/0xe0
    ...

    Recently xHCI driver switched to tasklets in the commit 36dc01657b49
    ("usb: host: xhci: Support running urb giveback in tasklet context").

    The handle_irq_event_* functions are expected to be called with interrupts
    disabled and they rightfully complain here because we run in tasklet context
    with interrupts enabled.

    Use a event spinlock to protect event handler from being interrupted.

    Note, that there are only two users of this GPIO and ADC drivers and both of
    them are using generic_handle_irq() which makes above happen.

    Fixes: 338a12814297 ("mfd: Add support for Diolan DLN-2 devices")
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Andy Shevchenko
     
  • [ Upstream commit ddff6c45b21d0437ce0c85f8ac35d7b5480513d7 ]

    Whilst it doesn't matter if the internal 32k clock register settings
    are cleaned up on exit, as the part will be turned off losing any
    settings, hence the driver hasn't historially bothered. The external
    clock should however be cleaned up, as it could cause clocks to be
    left on, and will at best generate a warning on unbind.

    Add clean up on both the probe error path and unbind for the 32k
    clock.

    Fixes: cdd8da8cc66b ("mfd: arizona: Add gating of external MCLKn clocks")
    Signed-off-by: Charles Keepax
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Charles Keepax
     

24 Jun, 2020

4 commits

  • [ Upstream commit 97eda5dcc2cde5dcc778bef7a9344db3b6bf8ef5 ]

    When STMFX supply is stopped, spurious interrupt can occur. To avoid that,
    disable the interrupt in suspend before disabling the regulator and
    re-enable it at the end of resume.

    Fixes: 06252ade9156 ("mfd: Add ST Multi-Function eXpander (STMFX) core driver")
    Signed-off-by: Amelie Delaunay
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Amelie Delaunay
     
  • [ Upstream commit 60c2c4bcb9202acad4cc26af20b44b6bd7874f7b ]

    In case the interrupt signal can't be configured, IRQ domain needs to be
    removed.

    Fixes: 06252ade9156 ("mfd: Add ST Multi-Function eXpander (STMFX) core driver")
    Signed-off-by: Amelie Delaunay
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Amelie Delaunay
     
  • [ Upstream commit e583649d87ec090444aa5347af0927cd6e8581ae ]

    STMFX supply is disabled during suspend. To avoid a too early access to
    the STMFX firmware on resume, reset the chip and wait for its firmware to
    be loaded.

    Fixes: 06252ade9156 ("mfd: Add ST Multi-Function eXpander (STMFX) core driver")
    Signed-off-by: Amelie Delaunay
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Amelie Delaunay
     
  • [ Upstream commit d4f9b5428b53dd67f49ee8deed8d4366ed6b1933 ]

    WM8994 chip has built-in regulators, which might be used for chip
    operation. They are controlled by a separate wm8994-regulator driver,
    which should be loaded before this driver calls regulator_get(), because
    that driver also provides consumer-supply mapping for the them. If that
    driver is not yet loaded, regulator core substitute them with dummy
    regulator, what breaks chip operation, because the built-in regulators are
    never enabled. Fix this by annotating this driver with MODULE_SOFTDEP()
    "pre" dependency to "wm8994_regulator" module.

    Signed-off-by: Marek Szyprowski
    Acked-by: Charles Keepax
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Marek Szyprowski
     

19 Jun, 2020

1 commit

  • * tag 'v5.4.47': (2193 commits)
    Linux 5.4.47
    KVM: arm64: Save the host's PtrAuth keys in non-preemptible context
    KVM: arm64: Synchronize sysreg state on injecting an AArch32 exception
    ...

    Conflicts:
    arch/arm/boot/dts/imx6qdl.dtsi
    arch/arm/mach-imx/Kconfig
    arch/arm/mach-imx/common.h
    arch/arm/mach-imx/suspend-imx6.S
    arch/arm64/boot/dts/freescale/imx8qxp-mek.dts
    arch/powerpc/include/asm/cacheflush.h
    drivers/cpufreq/imx6q-cpufreq.c
    drivers/dma/imx-sdma.c
    drivers/edac/synopsys_edac.c
    drivers/firmware/imx/imx-scu.c
    drivers/net/ethernet/freescale/fec.h
    drivers/net/ethernet/freescale/fec_main.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
    drivers/net/phy/phy_device.c
    drivers/perf/fsl_imx8_ddr_perf.c
    drivers/usb/cdns3/gadget.c
    drivers/usb/dwc3/gadget.c
    include/uapi/linux/dma-buf.h

    Signed-off-by: Jason Liu

    Jason Liu
     

10 May, 2020

1 commit

  • commit a8ff78f7f773142eb8a8befe5a95dd6858ebd635 upstream.

    Some BIOS erroneously specifies write-combining BAR for intel-lpss-pci
    in MTRR. This will cause the system to hang during boot. If possible,
    this bug could be corrected with a firmware update.

    This patch use devm_ioremap_uc to overwrite/ignore the MTRR settings
    by forcing the use of strongly uncachable pages for intel-lpss.

    The BIOS bug is present on Dell XPS 13 7390 2-in-1:

    [ 0.001734] 5 base 4000000000 mask 6000000000 write-combining

    4000000000-7fffffffff : PCI Bus 0000:00
    4000000000-400fffffff : 0000:00:02.0 (i915)
    4010000000-4010000fff : 0000:00:15.0 (intel-lpss-pci)

    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203485
    Cc: # v4.19+
    Tested-by: AceLan Kao
    Signed-off-by: Tuowen Zhao
    Acked-by: Mika Westerberg
    Acked-by: Andy Shevchenko
    Tested-by: Roman Gilg
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Tuowen Zhao
     

17 Apr, 2020

1 commit

  • [ Upstream commit fb945c95a482200876993977008b67ea658bd938 ]

    While the commit 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
    tries to harden the sanity checks it made at the same time a regression,
    i.e. mixed in and out endpoints. Obviously it should have been not tested on
    real hardware at that time, but unluckily it didn't happen.

    So, fix above mentioned typo and make device being enumerated again.

    While here, introduce an enumerator for magic values to prevent similar issue
    to happen in the future.

    Fixes: 2b8bd606b1e6 ("mfd: dln2: More sanity checking for endpoints")
    Cc: Oliver Neukum
    Cc: Greg Kroah-Hartman
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin

    Andy Shevchenko
     

08 Mar, 2020

1 commit

  • Merge Linux stable release v5.4.24 into imx_5.4.y

    * tag 'v5.4.24': (3306 commits)
    Linux 5.4.24
    blktrace: Protect q->blk_trace with RCU
    kvm: nVMX: VMWRITE checks unsupported field before read-only field
    ...

    Signed-off-by: Jason Liu

    Conflicts:
    arch/arm/boot/dts/imx6sll-evk.dts
    arch/arm/boot/dts/imx7ulp.dtsi
    arch/arm64/boot/dts/freescale/fsl-ls1028a.dtsi
    drivers/clk/imx/clk-composite-8m.c
    drivers/gpio/gpio-mxc.c
    drivers/irqchip/Kconfig
    drivers/mmc/host/sdhci-of-esdhc.c
    drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
    drivers/net/can/flexcan.c
    drivers/net/ethernet/freescale/dpaa/dpaa_eth.c
    drivers/net/ethernet/mscc/ocelot.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
    drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c
    drivers/net/phy/realtek.c
    drivers/pci/controller/mobiveil/pcie-mobiveil-host.c
    drivers/perf/fsl_imx8_ddr_perf.c
    drivers/tee/optee/shm_pool.c
    drivers/usb/cdns3/gadget.c
    kernel/sched/cpufreq.c
    net/core/xdp.c
    sound/soc/fsl/fsl_esai.c
    sound/soc/fsl/fsl_sai.c
    sound/soc/sof/core.c
    sound/soc/sof/imx/Kconfig
    sound/soc/sof/loader.c

    Jason Liu
     

15 Feb, 2020

1 commit

  • commit cb7a374a5e7a5af3f8c839f74439193add6d0589 upstream.

    MAX77650 MFD driver uses regmap_irq API but doesn't select the required
    REGMAP_IRQ option in Kconfig. This can cause the following build error
    if regmap irq is not enabled implicitly by someone else:

    ld: drivers/mfd/max77650.o: in function `max77650_i2c_probe':
    max77650.c:(.text+0xcb): undefined reference to `devm_regmap_add_irq_chip'
    ld: max77650.c:(.text+0xdb): undefined reference to `regmap_irq_get_domain'
    make: *** [Makefile:1079: vmlinux] Error 1

    Fix it by adding the missing option.

    Fixes: d0f60334500b ("mfd: Add new driver for MAX77650 PMIC")
    Reported-by: Paul Gazzillo
    Signed-off-by: Bartosz Golaszewski
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Bartosz Golaszewski
     

11 Feb, 2020

4 commits

  • commit 2f3dc25c0118de03a00ddc88b61f7216854f534d upstream.

    There is a bit which gets cleared after conversion.

    Fixes: 9bb9e29c78f8 ("mfd: Add Ricoh RN5T618 PMIC core driver")
    Signed-off-by: Andreas Kemnade
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Andreas Kemnade
     
  • commit 1112ba02ff1190ca9c15a912f9269e54b46d2d82 upstream.

    The watchdog driver compatible is "dlg,da9062-watchdog" and not
    "dlg,da9062-wdt". Therefore the mfd-core can't populate the of_node and
    fwnode. As result the watchdog driver can't parse the devicetree.

    Fixes: 9b40b030c4ad ("mfd: da9062: Supply core driver")
    Signed-off-by: Marco Felsch
    Acked-by: Guenter Roeck
    Reviewed-by: Adam Thomson
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Marco Felsch
     
  • commit dc91c3b6fe66a13ac76f6cb3b2100c0779cd3350 upstream.

    On AXP288 and newer PMICs, bit 7 of AXP20X_VBUS_IPSOUT_MGMT can be set
    to prevent using the VBUS input. However, when the VBUS unplugged and
    plugged back in, the bit automatically resets to zero.

    We need to set the register as volatile to prevent regmap from caching
    that bit. Otherwise, regcache will think the bit is already set and not
    write the register.

    Fixes: cd53216625a0 ("mfd: axp20x: Fix axp288 volatile ranges")
    Cc: stable@vger.kernel.org
    Signed-off-by: Samuel Holland
    Reviewed-by: Chen-Yu Tsai
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Samuel Holland
     
  • commit 2b8bd606b1e60ca28c765f69c1eedd7d2a2e9dca upstream.

    It is not enough to check for the number of endpoints.
    The types must also be correct.

    Reported-and-tested-by: syzbot+48a2851be24583b864dc@syzkaller.appspotmail.com
    Signed-off-by: Oliver Neukum
    Reviewed-by: Greg Kroah-Hartman
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Oliver Neukum
     

01 Feb, 2020

1 commit


26 Jan, 2020

1 commit

  • commit 3f31bc67e4dc6a555341dffefe328ddd58e8b431 upstream.

    It turned out Intel Gemini Lake doesn't use the same I2C timing
    parameters as Broxton.

    I got confirmation from the Windows team that Gemini Lake systems should
    use updated timing parameters that differ from those used in Broxton
    based systems.

    Fixes: f80e78aa11ad ("mfd: intel-lpss: Add Intel Gemini Lake PCI IDs")
    Tested-by: Chris Chiu
    Signed-off-by: Jarkko Nikula
    Acked-by: Andy Shevchenko
    Signed-off-by: Lee Jones
    Signed-off-by: Greg Kroah-Hartman

    Jarkko Nikula
     

18 Jan, 2020

1 commit

  • Some of the i.MX SoCs have a IP for interfacing the audio dedicated IPs with
    clocks, resets and interrupts, plus some DSP specific control registers.
    To allow the functionality to be split between drivers, this MFD driver is
    added that has only two purposes: register the devices and map the entire
    register addresses. Everything else is left to the dedicated drivers that will
    bind to the registered devices.

    Signed-off-by: Abel Vesa
    Reviewed-by: Leonard Crestez

    Abel Vesa
     

02 Dec, 2019

2 commits

  • * regulator/next: (14 commits)
    MLK-22824-2: regulator: pca9450: add pca9450 regulator driver
    MLK-22824-1: mfd: pca9450: add pca9450 mfd driver
    LF-53: regulator: pf1550-regulator-rpmsg: fix ldo2 voltage changing failure
    MLK-13638-4 regulator: fixed: add system pm routines for pinctrl
    regulator: fixed: add off-on-delay
    ...

    Dong Aisheng
     
  • * mxc/next: (119 commits)
    mxc: hdmi-cec: Add imx6 hdmi cec driver
    driver: mfd: hdmi: Add hdmi core driver
    MLK-22399 mxc IPUv3: cpmem: Get 0 u/v_offset in __ipu_ch_offset_calc() for some pfmts
    mxc: IPU3: Fix not including uapi/linux/sched/types.h
    media: platform: mxc: output: Forward IPUv3 V4L2 output driver from imx_4.19.y
    ...

    Dong Aisheng
     

29 Nov, 2019

1 commit


25 Nov, 2019

10 commits

  • There is issue that system can't enter suspend while the si476x is
    working.

    The reason is that with the workqueue thread is still working after
    i2c enter suspend, then cause the cpu_suspend function failed.

    This patch is to use the system_freezable_wq instead of the system_wq,
    that the workqueue will be freeze before system enter suspend.

    Signed-off-by: Shengjiu Wang
    Reviewed-by: Viorel Suman

    Shengjiu Wang
     
  • The si476x_core_get_revision_info will send i2c command to FM module, if it
    return error, there is no FM modules attached, so we need't to register the
    sound card. otherwise, the pulseaudio will access this sound card, but
    return a lot of i2c error.

    Signed-off-by: Shengjiu Wang
    (cherry picked from commit 4c8e9916128f05f9b4115e1ee1af4a1e7d800c4a)
    Signed-off-by: Vipul Kumar

    Shengjiu Wang
     
  • Currently, si476x-rev1.0 and si476x-rev4.0 board just support A10
    compatible command set. For si476x-rev1.0 board, its firmware revision is
    unsupported and will revert to A10 compatible function. For si476x-rev4.0
    board, its firmware revision is two and will use A30 function, but A30
    command set function can't work for the rev4.0 board.
    So make the command set configurable in dts. If "revision-a10" is present,
    set the revision to SI476X_REVISION_A10 to use A10 compatible commit set.
    Otherwise, get the revision from si476x register.

    Signed-off-by: Zidan Wang
    (cherry picked from commit b648714c3b71ee084188ae04b1e6a6f2554fe2cb)
    Signed-off-by: Vipul Kumar

    Zidan Wang
     
  • Add of_compatible for si476x-codec, then si476x-codec driver will have
    codec_of_node, So machine driver can use the codec_of_node.

    Signed-off-by: Shengjiu Wang
    (cherry picked from commit e2ec44f91a21b127e155e8317d06e8ead7fd2678)
    (cherry picked from commit ac6decaf5414e784ae81a524edc2f32060061b59)
    Signed-off-by: Vipul Kumar

    Shengjiu Wang
     
  • cherry-pick below patch from imx_3.14.y
    ENGR00276567-6 mfd: si476x: Use default configuration when no platform data

    This would allow the driver to work normally without specific platform
    data, when using devicetree for example.

    Signed-off-by: Nicolin Chen
    (cherry picked from commit 23e369b88b546d7b699ca9ec46e195a05c61b717)
    (cherry picked from commit a2449e1d303e341f32556fb7f4ebc7dcbdd9ead1)
    Signed-off-by: Vipul Kumar

    Nicolin Chen
     
  • cherry-pick below patch from imx_3.14.y
    ENGR00276567-4 mfd: si476x: Fix power up failure

    This's some logical error in power-up code, thus fix it.

    Signed-off-by: Nicolin Chen
    (cherry picked from commit 77d97ad1bb77c0e3c60b9781a06b61d4b4667de1)
    (cherry picked from commit b656522da2685ef9a4da2229b6786d5cd0c12189)
    Signed-off-by: Vipul Kumar
    Signed-off-by: Shengjiu Wang

    Nicolin Chen
     
  • Add imx6 hdmi code driver.
    This patch forwards imx6 HDMI code driver from imx_4.19.y kernel.

    Signed-off-by: Sandor Yu

    Sandor Yu
     
  • in 5451781dadf85000665e0e2c3288e9e0f34b860a commit, it added the check that
    the regulator need to be disabled before calling regulator_put().
    If not do so, the kernel will print warning message as below.

    To fix this, need to disable regulator before probe function return if this
    PMIC is not found. regulator_put() will be called when probe fails in this case
    as devm_regulator_get() already called in probe function.

    [ 0.269916] i2c i2c-2: Max17135 PMIC not found!
    [ 0.270004] ------------[ cut here ]------------
    [ 0.270145] WARNING: CPU: 0 PID: 1 at drivers/regulator/core.c:2039 _regulator_put.part.4+0x100/0x120
    [ 0.270166] Modules linked in:
    [ 0.270196] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.3.0-rc3-next-20190809-02777-g23dc3ed #22
    [ 0.270214] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [ 0.270250] [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [ 0.270281] [] (show_stack) from [] (dump_stack+0xd8/0x110)
    [ 0.270310] [] (dump_stack) from [] (__warn.part.3+0xa8/0xe8)
    [ 0.270335] [] (__warn.part.3) from [] (warn_slowpath_null+0x40/0x4c)
    [ 0.270361] [] (warn_slowpath_null) from [] (_regulator_put.part.4+0x100/0x120)
    [ 0.270385] [] (_regulator_put.part.4) from [] (regulator_put+0x2c/0x3c)
    [ 0.270414] [] (regulator_put) from [] (release_nodes+0x1ac/0x1f8)
    [ 0.270444] [] (release_nodes) from [] (really_probe+0x104/0x340)
    [ 0.270467] [] (really_probe) from [] (driver_probe_device+0x84/0x194)
    [ 0.270492] [] (driver_probe_device) from [] (bus_for_each_drv+0x7c/0xc4)
    [ 0.270516] [] (bus_for_each_drv) from [] (__device_attach+0xcc/0x140)
    [ 0.270539] [] (__device_attach) from [] (bus_probe_device+0x88/0x90)
    [ 0.270563] [] (bus_probe_device) from [] (device_add+0x608/0x754)
    [ 0.270591] [] (device_add) from [] (i2c_new_client_device+0x12c/0x20c)
    [ 0.270615] [] (i2c_new_client_device) from [] (i2c_new_device+0x8/0x14)
    [ 0.270641] [] (i2c_new_device) from [] (of_i2c_register_devices+0x90/0x110)
    [ 0.270666] [] (of_i2c_register_devices) from [] (i2c_register_adapter+0x148/0x3ec)
    [ 0.270691] [] (i2c_register_adapter) from [] (i2c_imx_probe+0x37c/0x830)
    [ 0.270719] [] (i2c_imx_probe) from [] (platform_drv_probe+0x48/0x98)
    [ 0.270747] [] (platform_drv_probe) from [] (really_probe+0x1dc/0x340)
    [ 0.270773] [] (really_probe) from [] (driver_probe_device+0x84/0x194)
    [ 0.270797] [] (driver_probe_device) from [] (device_driver_attach+0x58/0x60)
    [ 0.270821] [] (device_driver_attach) from [] (__driver_attach+0x58/0xd0)
    [ 0.270844] [] (__driver_attach) from [] (bus_for_each_dev+0x70/0xb4)
    [ 0.270867] [] (bus_for_each_dev) from [] (bus_add_driver+0x198/0x1d0)
    [ 0.270890] [] (bus_add_driver) from [] (driver_register+0x74/0x108)
    [ 0.270916] [] (driver_register) from [] (do_one_initcall+0x80/0x338)
    [ 0.270946] [] (do_one_initcall) from [] (kernel_init_freeable+0x2fc/0x3d8)
    [ 0.270973] [] (kernel_init_freeable) from [] (kernel_init+0x8/0x110)
    [ 0.270997] [] (kernel_init) from [] (ret_from_fork+0x14/0x20)
    [ 0.271015] Exception stack(0xec0e9fb0 to 0xec0e9ff8)
    [ 0.271038] 9fa0: 00000000 00000000 00000000 00000000
    [ 0.271059] 9fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [ 0.271077] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [ 0.271094] irq event stamp: 70901
    [ 0.271125] hardirqs last enabled at (70909): [] console_unlock+0x418/0x5f4
    [ 0.271149] hardirqs last disabled at (70916): [] console_unlock+0x88/0x5f4
    [ 0.271173] softirqs last enabled at (69156): [] __do_softirq+0x2c4/0x514
    [ 0.271198] softirqs last disabled at (68881): [] irq_exit+0x100/0x188
    [ 0.271268] ---[ end trace 579e47ca40f2be36 ]---

    Signed-off-by: Robby Cai

    Robby Cai
     
  • export symbols to fix build error as a module:

    ERROR: "max17135_reg_read" [drivers/hwmon/max17135-hwmon.ko] undefined!

    Signed-off-by: Julien Olivain
    Acked-by: Robby Cai

    Julien Olivain
     
  • i2c device client shouldn't be freed by i2c device driver, there have
    problems in below cases:
    - one device match to different drivers, the second matched driver will
    cannot access i2c device client if it is freed by the first matched
    driver.
    - one module driver insmod: the first insmod fail free client due to system
    low memory, after kswapd system free pages and has enough free pages, the
    second insmod will cause match failed.

    Signed-off-by: Fugang Duan
    Signed-off-by: Vipul Kumar

    Fugang Duan