20 Mar, 2020

8 commits

  • i.MX8/8X SCU MU is dedicated for communication between SCU and Cortex-A
    cores from hardware design, and could not be reused for other purpose.

    Per i.MX8/8X Reference mannual, Chapter "12.9.2.3.2 Messaging Examples",
    Passing short messages: Transmit register(s) can be used to pass
    short messages from one to four words in length. For example, when
    a four-word message is desired, only one of the registers needs to
    have its corresponding interrupt enable bit set at the receiver side;
    the message’s first three words are written to the registers whose
    interrupt is masked, and the fourth word is written to the other
    register (which triggers an interrupt at the receiver side).

    i.MX8/8X SCU firmware IPC is an implementation of passing short
    messages. But current imx-mailbox driver only support one word
    message, i.MX8/8X linux side firmware has to request four TX
    and four RX to support IPC to SCU firmware. This is low efficent
    and more interrupts triggered compared with one TX and
    one RX.

    To make SCU MU work,
    - parse the size of msg.
    - Only enable TR0/RR0 interrupt for transmit/receive message.
    - For TX/RX, only support one TX channel and one RX channel
    - For RX, support receive msg larger than 4 u32 words.
    - Support 6 channels, TX0/RX0/RXDB[0-3], not support TXDB.

    Reviewed-by: Oleksij Rempel
    Signed-off-by: Peng Fan
    Signed-off-by: Jassi Brar

    Peng Fan
     
  • Add imx_mu_generic_tx for data send and imx_mu_generic_rx for interrupt
    data receive.

    Pack original mu chans related code into imx_mu_init_generic

    Add tx/rx/init hooks into imx_mu_dcfg

    With these, it will be a bit easy to introduce i.MX8/8X SCU type
    MU dedicated to communicate with SCU.

    Reviewed-by: Oleksij Rempel
    Signed-off-by: Peng Fan
    Signed-off-by: Jassi Brar

    Peng Fan
     
  • After implement flush, client can flush the executing
    command buffer or abort the still waiting for event
    command buffer, so controller do not need to implement
    atomic_exe feature. remove it.

    Signed-off-by: Bibby Hsieh
    Reviewed-by: CK Hu
    Signed-off-by: Jassi Brar

    Bibby Hsieh
     
  • For client driver which need to reorganize the command buffer, it could
    use this function to flush the send command buffer.
    If the channel doesn't be started (usually in waiting for event), this
    function will abort it directly.

    Signed-off-by: Bibby Hsieh
    Reviewed-by: CK Hu
    Signed-off-by: Jassi Brar

    Bibby Hsieh
     
  • Handle 'cmpl_pool' dma memory allocation failure.

    Fixes: a9a9da47f8e6 ("mailbox: no need to check return value of debugfs_create functions")
    Signed-off-by: Rayagonda Kokatanur
    Reviewed-by: Tyler Hicks
    Signed-off-by: Jassi Brar

    Rayagonda Kokatanur
     
  • Allwinner sun6i, sun8i, sun9i, and sun50i SoCs contain a hardware
    message box used for communication between the ARM CPUs and the ARISC
    management coprocessor. This mailbox contains 8 unidirectional
    4-message FIFOs.

    Add a driver for it, so it can be used with the Linux mailbox framework.

    Reviewed-by: Philipp Zabel
    Signed-off-by: Samuel Holland
    Signed-off-by: Jassi Brar

    Samuel Holland
     
  • Since snprintf() returns the would-be-output size instead of the
    actual output size, the succeeding calls may go beyond the given
    buffer limit. Fix it by replacing with scnprintf().

    Signed-off-by: Takashi Iwai
    Signed-off-by: Jassi Brar

    Takashi Iwai
     
  • In this function,we don't need dev_err() message because when something
    goes wrong,platform_get_irq() and devm_platform_ioremap_resource() have
    print an error message itself, so we should remove duplicate dev_err().

    Signed-off-by: Tang Bin
    Signed-off-by: Jassi Brar

    Tang Bin
     

08 Jan, 2020

1 commit


02 Dec, 2019

1 commit

  • Pull mailbox updates from Jassi Brar:

    - omap : misc - catch error returned from pm_runtime_put_sync

    - hisi : misc - drop .owner from platform_driver

    - stm : change how wakeup is handled

    - imx : fix - bailout on error and nuke correct irq

    - imx : add support for imx7ulp platform

    * tag 'mailbox-v5.5' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
    mailbox: imx: add support for imx v1 mu
    dt-bindings: mailbox: imx-mu: add imx7ulp MU support
    mailbox: imx: Clear the right interrupts at shutdown
    mailbox: imx: Fix Tx doorbell shutdown path
    mailbox: stm32-ipcc: Update wakeup management
    mailbox: no need to set .owner platform_driver_register
    mailbox/omap: Handle if CONFIG_PM is disabled

    Linus Torvalds
     

01 Dec, 2019

4 commits

  • There is a version 1.0 MU on i.MX7ULP platform.
    One new version ID register is added, and it's offset is 0.
    TRn registers are defined at the offset 0x20 ~ 0x2C.
    RRn registers are defined at the offset 0x40 ~ 0x4C.
    SR/CR registers are defined at 0x60/0x64.
    Extend this driver to support it.

    Signed-off-by: Richard Zhu
    Suggested-by: Oleksij Rempel
    Reviewed-by: Dong Aisheng
    Reviewed-by: Oleksij Rempel
    Reviewed-by: Daniel Baluta
    Signed-off-by: Jassi Brar

    Richard Zhu
     
  • Make sure to only clear enabled interrupts keeping count
    of the connection type.

    Suggested-by: Oleksij Rempel
    Signed-off-by: Daniel Baluta
    Signed-off-by: Richard Zhu
    Reviewed-by: Dong Aisheng
    Signed-off-by: Jassi Brar

    Daniel Baluta
     
  • Tx doorbell is handled by txdb_tasklet and doesn't
    have an associated IRQ.

    Anyhow, imx_mu_shutdown ignores this and tries to
    free an IRQ that wasn't requested for Tx DB resulting
    in the following warning:

    [ 1.967644] Trying to free already-free IRQ 26
    [ 1.972108] WARNING: CPU: 2 PID: 157 at kernel/irq/manage.c:1708 __free_irq+0xc0/0x358
    [ 1.980024] Modules linked in:
    [ 1.983088] CPU: 2 PID: 157 Comm: kworker/2:1 Tainted: G
    [ 1.993524] Hardware name: Freescale i.MX8QXP MEK (DT)
    [ 1.998668] Workqueue: events deferred_probe_work_func
    [ 2.003812] pstate: 60000085 (nZCv daIf -PAN -UAO)
    [ 2.008607] pc : __free_irq+0xc0/0x358
    [ 2.012364] lr : __free_irq+0xc0/0x358
    [ 2.016111] sp : ffff00001179b7e0
    [ 2.019422] x29: ffff00001179b7e0 x28: 0000000000000018
    [ 2.024736] x27: ffff000011233000 x26: 0000000000000004
    [ 2.030053] x25: 000000000000001a x24: ffff80083bec74d4
    [ 2.035369] x23: 0000000000000000 x22: ffff80083bec7588
    [ 2.040686] x21: ffff80083b1fe8d8 x20: ffff80083bec7400
    [ 2.046003] x19: 0000000000000000 x18: ffffffffffffffff
    [ 2.051320] x17: 0000000000000000 x16: 0000000000000000
    [ 2.056637] x15: ffff0000111296c8 x14: ffff00009179b517
    [ 2.061953] x13: ffff00001179b525 x12: ffff000011142000
    [ 2.067270] x11: ffff000011129f20 x10: ffff0000105da970
    [ 2.072587] x9 : 00000000ffffffd0 x8 : 0000000000000194
    [ 2.077903] x7 : 612065657266206f x6 : ffff0000111e7b09
    [ 2.083220] x5 : 0000000000000003 x4 : 0000000000000000
    [ 2.088537] x3 : 0000000000000000 x2 : 00000000ffffffff
    [ 2.093854] x1 : 28b70f0a2b60a500 x0 : 0000000000000000
    [ 2.099173] Call trace:
    [ 2.101618] __free_irq+0xc0/0x358
    [ 2.105021] free_irq+0x38/0x98
    [ 2.108170] imx_mu_shutdown+0x90/0xb0
    [ 2.111921] mbox_free_channel.part.2+0x24/0xb8
    [ 2.116453] mbox_free_channel+0x18/0x28

    This bug is present from the beginning of times.

    Cc: Oleksij Rempel
    Signed-off-by: Daniel Baluta
    Signed-off-by: Richard Zhu
    Reviewed-by: Dong Aisheng
    Signed-off-by: Jassi Brar

    Daniel Baluta
     
  • The wakeup specific IRQ management is no more needed to wake up the
    stm32 platform. A relationship has been established between the EXTI and
    the RX IRQ, just need to declare the EXTI interrupt instead of the
    IPCC RX IRQ.

    Signed-off-by: Alexandre Torgue
    Signed-off-by: Fabien Dessenne
    Signed-off-by: Jassi Brar

    Fabien Dessenne
     

27 Nov, 2019

2 commits


12 Nov, 2019

1 commit

  • Commit 7723f4c5ecdb ("driver core: platform: Add an error message to
    platform_get_irq*()") added an error message to avoid drivers having
    to print an error message when IRQ lookup fails. However, there are
    some cases where IRQs are optional and so new optional versions of
    the platform_get_irq*() APIs have been added for these cases.

    The IRQs for Tegra HSP module are optional because not all instances
    of the module have the doorbell and all of the shared interrupts.
    Hence, since the above commit was applied the following error messages
    are now seen on Tegra194 ...

    ERR KERN tegra-hsp c150000.hsp: IRQ doorbell not found
    ERR KERN tegra-hsp c150000.hsp: IRQ shared0 not found

    The Tegra HSP driver deliberately does not fail if these are not found
    and so fix the above errors by updating the Tegra HSP driver to use
    the platform_get_irq_byname_optional() API.

    Signed-off-by: Jon Hunter
    Acked-by: Thierry Reding
    Link: https://lore.kernel.org/r/20191011083459.11551-1-jonathanh@nvidia.com
    Signed-off-by: Greg Kroah-Hartman

    Jon Hunter
     

17 Sep, 2019

9 commits


15 Jul, 2019

1 commit

  • Pull mailbox updates from Jassi Brar:

    - stm32: race fix by adding a spinlock

    - mhu: trim included headers

    - omap: add support for K3 SoCs

    - imx: Irq disable fix

    - bcm: tidy up extracting driver data

    - tegra: make resume 'noirq'

    - api: fix error handling

    * tag 'mailbox-v5.3' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
    mailbox: handle failed named mailbox channel request
    mailbox: tegra: avoid resume NULL mailboxes
    mailbox: tegra: hsp: add noirq resume
    mailbox: bcm-flexrm-mailbox: using dev_get_drvdata directly
    mailbox: imx: Clear GIEn bit at shutdown
    mailbox: omap: Add support for TI K3 SoCs
    dt-bindings: mailbox: omap: Update bindings for TI K3 SoCs
    mailbox: arm_mhu: reorder header inclusion and drop unneeded ones
    mailbox: stm32_ipcc: add spinlock to fix channels concurrent access

    Linus Torvalds
     

13 Jul, 2019

1 commit

  • Pull driver core and debugfs updates from Greg KH:
    "Here is the "big" driver core and debugfs changes for 5.3-rc1

    It's a lot of different patches, all across the tree due to some api
    changes and lots of debugfs cleanups.

    Other than the debugfs cleanups, in this set of changes we have:

    - bus iteration function cleanups

    - scripts/get_abi.pl tool to display and parse Documentation/ABI
    entries in a simple way

    - cleanups to Documenatation/ABI/ entries to make them parse easier
    due to typos and other minor things

    - default_attrs use for some ktype users

    - driver model documentation file conversions to .rst

    - compressed firmware file loading

    - deferred probe fixes

    All of these have been in linux-next for a while, with a bunch of
    merge issues that Stephen has been patient with me for"

    * tag 'driver-core-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (102 commits)
    debugfs: make error message a bit more verbose
    orangefs: fix build warning from debugfs cleanup patch
    ubifs: fix build warning after debugfs cleanup patch
    driver: core: Allow subsystems to continue deferring probe
    drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT
    arch_topology: Remove error messages on out-of-memory conditions
    lib: notifier-error-inject: no need to check return value of debugfs_create functions
    swiotlb: no need to check return value of debugfs_create functions
    ceph: no need to check return value of debugfs_create functions
    sunrpc: no need to check return value of debugfs_create functions
    ubifs: no need to check return value of debugfs_create functions
    orangefs: no need to check return value of debugfs_create functions
    nfsd: no need to check return value of debugfs_create functions
    lib: 842: no need to check return value of debugfs_create functions
    debugfs: provide pr_fmt() macro
    debugfs: log errors when something goes wrong
    drivers: s390/cio: Fix compilation warning about const qualifiers
    drivers: Add generic helper to match by of_node
    driver_find_device: Unify the match function with class_find_device()
    bus_find_device: Unify the match callback with class_find_device
    ...

    Linus Torvalds
     

11 Jul, 2019

8 commits

  • Previously, if mbox_request_channel_byname was used with a name
    which did not exist in the "mbox-names" property of a mailbox
    client, the mailbox corresponding to the last entry in the
    "mbox-names" list would be incorrectly selected.
    With this patch, -EINVAL is returned if the named mailbox is
    not found.

    Signed-off-by: Morten Borup Petersen
    Signed-off-by: Jassi Brar

    morten petersen
     
  • If Tegra HSP device tree does not have 'shared irqs',
    mailboxes pointer is NULL. Add non-NULL HSP mailboxes
    check in resume callback before tegra_hsp_mailbox_startup()
    call and prevent NULL pointer exception.

    Signed-off-by: Bitan Biswas
    Signed-off-by: Jassi Brar

    Bitan Biswas
     
  • Add noirq resume instead of resume callback for Tegra HSP. Tegra HSP
    resume needs tegra_hsp_doorbell_startup() call to fix timeout error for
    tegra_bpmp_transfer() during genpd resume noirq on Jetson TX2.

    Signed-off-by: Bitan Biswas
    Signed-off-by: Jassi Brar

    Bitan Biswas
     
  • Several drivers cast a struct device pointer to a struct
    platform_device pointer only to then call platform_get_drvdata().
    To improve readability, these constructs can be simplified
    by using dev_get_drvdata() directly.

    Signed-off-by: Fuqian Huang
    Signed-off-by: Jassi Brar

    Fuqian Huang
     
  • GIEn is enabled at startup for RX doorbell mailboxes so
    we need to clear the bit at shutdown in order to avoid
    leaving the interrupt line enabled.

    Signed-off-by: Daniel Baluta
    Reviewed-by: Oleksij Rempel
    Signed-off-by: Jassi Brar

    Daniel Baluta
     
  • The TI K3 AM65x and J721E family of SoCs have a new Mailbox IP that
    is based on the existing Mailbox IP present in OMAP architecture based
    SoCs. Each instance of the legacy OMAP Mailbox IP is now a single cluster
    within the newer Mailbox IP instance on K3 architecture based SoCs. A
    single K3 Mailbox IP instance has multiple clusters with each cluster
    providing the same functionality as the existing OMAP Mailbox IP.

    Reuse the existing OMAP Mailbox driver to extend the support for this
    newer IP present within the Main NavSS block on K3 SoCs. The K3 family
    of SoCs use 64-bit ARMv8 processors for running Linux, so the driver is
    also enhanced to deal with the differences between the 32-bit message
    payloads and the 64-bit pointers used by the client drivers.

    Signed-off-by: Suman Anna
    Signed-off-by: Jassi Brar

    Suman Anna
     
  • This patch just re-orders some of the headers includes and also drop
    the ones that are unnecessary.

    Signed-off-by: Sudeep Holla
    Signed-off-by: Jassi Brar

    Sudeep Holla
     
  • Add spinlock protection on IPCC register update to avoid race condition.
    Without this fix, stm32_ipcc_set_bits and stm32_ipcc_clr_bits can be
    called in parallel for different channels. This results in register
    corruptions.

    Signed-off-by: Arnaud Pouliquen
    Reviewed-by: Fabien Dessenne
    Signed-off-by: Jassi Brar

    Arnaud Pouliquen
     

19 Jun, 2019

2 commits

  • Based on 2 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation #

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 4122 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Kate Stewart
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081206.933168790@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation the gpl this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    version 2 gplv2 for more details you should have received a copy of
    the gnu general public license version 2 gplv2 along with this
    source code

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 16 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Enrico Weigelt
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190604081201.771169395@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

05 Jun, 2019

2 commits

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms and conditions of the gnu general public license
    version 2 as published by the free software foundation this program
    is distributed in the hope it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 263 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Alexios Zavras
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190529141901.208660670@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation version 2 of the license this program
    is distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 100 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190529141900.918357685@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner