1. 05 Oct, 2020 32 commits
  2. 29 Sep, 2020 3 commits
  3. 27 Sep, 2020 5 commits
    • Krzysztof Kozlowski's avatar
      dt-bindings: i2c: imx: Fix i.MX 7 compatible matching · d0fa235c
      Krzysztof Kozlowski authored
      The i.MX 7 DTSes use two compatibles so update the binding to fix
      dtbs_check warnings like:
      
        arch/arm/boot/dts/imx7d-cl-som-imx7.dt.yaml: i2c@30a20000:
          compatible: ['fsl,imx7d-i2c', 'fsl,imx21-i2c'] is not valid under any of the given schemas (Possible causes of the failure):
      
        arch/arm/boot/dts/imx7d-cl-som-imx7.dt.yaml: i2c@30a20000:
          compatible: ['fsl,imx7d-i2c', 'fsl,imx21-i2c'] is too long
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      d0fa235c
    • Krzysztof Kozlowski's avatar
      dt-bindings: i2c: imx: Add properties and use unevaluatedProperties · 37859693
      Krzysztof Kozlowski authored
      Additional properties actually might appear (e.g. power-domains) so
      describe all typical properties, reference generic i2c schema and use
      unevaluatedProperties to fix dtbs_check warnings like:
      
        arch/arm64/boot/dts/freescale/imx8mn-evk.dt.yaml: i2c@30a20000:
          '#address-cells', '#size-cells', 'pmic@25' do not match any of the regexes: 'pinctrl-[0-9]+'
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      37859693
    • Krzysztof Kozlowski's avatar
      dt-bindings: i2c: imx-lpi2c: Fix i.MX 8QXP compatible matching · 755f6292
      Krzysztof Kozlowski authored
      The i.MX 8QXP DTSes use two compatibles so update the binding to fix
      dtbs_check warnings like:
      
        arch/arm64/boot/dts/freescale/imx8qxp-mek.dt.yaml: i2c@5a820000:
          compatible: ['fsl,imx8qxp-lpi2c', 'fsl,imx7ulp-lpi2c'] is too long
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      755f6292
    • Krzysztof Kozlowski's avatar
      dt-bindings: i2c: imx-lpi2c: Add properties and use unevaluatedProperties · 41c38c27
      Krzysztof Kozlowski authored
      Additional properties actually might appear (e.g. power-domains) so
      describe all typical properties, reference generic i2c schema and use
      unevaluatedProperties to fix dtbs_check warnings like:
      
        arch/arm64/boot/dts/freescale/imx8qxp-ai_ml.dt.yaml: i2c@5a800000:
          'assigned-clock-rates', 'assigned-clocks', 'clock-names', 'power-domains' do not match any of the regexes: 'pinctrl-[0-9]+'
      
        arch/arm64/boot/dts/freescale/imx8qxp-colibri-eval-v3.dt.yaml: i2c@5a800000:
          'touchscreen@2c' does not match any of the regexes: 'pinctrl-[0-9]+'
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Reviewed-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      41c38c27
    • Krzysztof Kozlowski's avatar
      i2c: imx: Fix external abort on interrupt in exit paths · e50e4f0b
      Krzysztof Kozlowski authored
      If interrupt comes late, during probe error path or device remove (could
      be triggered with CONFIG_DEBUG_SHIRQ), the interrupt handler
      i2c_imx_isr() will access registers with the clock being disabled.  This
      leads to external abort on non-linefetch on Toradex Colibri VF50 module
      (with Vybrid VF5xx):
      
          Unhandled fault: external abort on non-linefetch (0x1008) at 0x8882d003
          Internal error: : 1008 [#1] ARM
          Modules linked in:
          CPU: 0 PID: 1 Comm: swapper Not tainted 5.7.0 #607
          Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
            (i2c_imx_isr) from [<8017009c>] (free_irq+0x25c/0x3b0)
            (free_irq) from [<805844ec>] (release_nodes+0x178/0x284)
            (release_nodes) from [<80580030>] (really_probe+0x10c/0x348)
            (really_probe) from [<80580380>] (driver_probe_device+0x60/0x170)
            (driver_probe_device) from [<80580630>] (device_driver_attach+0x58/0x60)
            (device_driver_attach) from [<805806bc>] (__driver_attach+0x84/0xc0)
            (__driver_attach) from [<8057e228>] (bus_for_each_dev+0x68/0xb4)
            (bus_for_each_dev) from [<8057f3ec>] (bus_add_driver+0x144/0x1ec)
            (bus_add_driver) from [<80581320>] (driver_register+0x78/0x110)
            (driver_register) from [<8010213c>] (do_one_initcall+0xa8/0x2f4)
            (do_one_initcall) from [<80c0100c>] (kernel_init_freeable+0x178/0x1dc)
            (kernel_init_freeable) from [<80807048>] (kernel_init+0x8/0x110)
            (kernel_init) from [<80100114>] (ret_from_fork+0x14/0x20)
      
      Additionally, the i2c_imx_isr() could wake up the wait queue
      (imx_i2c_struct->queue) before its initialization happens.
      
      The resource-managed framework should not be used for interrupt handling,
      because the resource will be released too late - after disabling clocks.
      The interrupt handler is not prepared for such case.
      
      Fixes: 1c4b6c3b ("i2c: imx: implement bus recovery")
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Acked-by: default avatarOleksij Rempel <o.rempel@pengutronix.de>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      e50e4f0b