06 Apr, 2023

1 commit

  • The .remove() callback for a platform driver returns an int which makes
    many driver authors wrongly assume it's possible to do error handling by
    returning an error code. However the value returned is (mostly) ignored
    and this typically results in resource leaks. To improve here there is a
    quest to make the remove callback return void. In the first step of this
    quest all drivers are converted to .remove_new() which already returns
    void.

    Trivially convert this driver from always returning zero in the remove
    callback to the void returning variant.

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20230321154039.355098-3-u.kleine-koenig@pengutronix.de

    Uwe Kleine-König
     

15 Feb, 2023

3 commits

  • The code is peeking into the buffers, not peaking. Fix this throughout
    the glink drivers.

    Signed-off-by: Bjorn Andersson
    Reviewed-by: Chris Lew
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20230214224746.1996130-1-quic_bjorande@quicinc.com

    Bjorn Andersson
     
  • Not all GLINK transports uses an interrupt and a mailbox instance. The
    interrupt for RPM needs to be IRQF_NOSUSPEND, while it seems reasonable
    for the SMEM interrupt to use irq_set_wake. The glink struct device is
    constructed in the SMEM and RPM drivers but torn down in the core
    driver.

    Move the interrupt and kick handling into the SMEM and RPM driver, to
    improve this and facilitate further improvements.

    Signed-off-by: Bjorn Andersson
    Reviewed-by: Chris Lew
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20230213155215.1237059-5-quic_bjorande@quicinc.com

    Bjorn Andersson
     
  • As with the SMEM driver update, wrap the RPM context in a struct to
    facilitate the upcoming changes of moving IRQ and mailbox registration
    to the driver.

    Reviewed-by: Chris Lew
    Signed-off-by: Bjorn Andersson
    Signed-off-by: Bjorn Andersson
    Link: https://lore.kernel.org/r/20230213155215.1237059-4-quic_bjorande@quicinc.com

    Bjorn Andersson
     

04 Jun, 2018

1 commit


30 Aug, 2017

8 commits

  • To fully read the received rx data from FIFO both the command and data
    has to be read. Currently we read command, data separately and process
    them. By adding an offset parameter to RX FIFO peak accessor, command
    and data can be read together, simplifying things. So introduce this.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • Intents are nothing but pre-allocated buffers of appropriate size that
    are allocated on the local side and communicated to the remote side and
    the remote stores the list of intent ids that it is informed.

    Later when remote side is intenting to send data, it picks up a right
    intent (based on the size) and sends the data buffer and the intent id.
    Local side receives the data and copies it to the local intent buffer.

    The whole idea is to avoid stalls on the transport for allocating
    memory, used for copy based transports.

    When the remote request to allocate buffers using CMD_RX_INTENT_REQ, we
    allocate buffers of requested size, store the buffer id locally and also
    communicate the intent id to the remote.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Sricharan R
     
  • G-link supports a version number and feature flags for each transport.
    A combination of the version number and feature flags enable/disable:

    (*) G-Link software updates for each edge
    (*) Individual features for each edge

    Endpoints negotiate both the version and the supported flags when
    the transport is opened and they cannot be changed after negotiation has
    been completed.

    Each full implementation of G-Link must support a minimum of the current
    version, the previous version, and the base negotiation version called v0.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Sricharan R
     
  • Glink protocol requires that each message is aligned on a 8 byte offset.
    This is purely a restriction from glink, so in order to support clients
    which do not adher to this, allow data packets of any size, but align
    the head index accordingly, effectively removing the alignment
    restriction.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • Move the common part of glink core protocol implementation to
    glink_native.c that can be shared with the smem based glink
    transport in the later patches.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • There is quite some code common in glink_rpm_probe that can reused for
    glink-smem based transport as well. So split the function and move the
    code to glink_native_probe that can be used later when we add the
    support for glink-smem based transport. Also reuse driver's remove as
    well.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • With the intention of reusing the glink core protocol commands and code
    across both rpm and smem based transports, the only thing different is
    way of accessing the shared-memory of the transport (FIFO). So put the
    fifo accessor's of the transport's pipe (rx/tx) behind indirections, so
    that the rest of the code can be shared.

    For this, have a qcom_glink_pipe that can be used in the common code
    containing the indirections and wrap it with glink_rpm_pipe that
    contains the transport specific members.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     
  • Renaming the glink_rpm_xx functions and structs to qcom_glink_xx
    equivalents helps to reuse the core glink protocol while adding
    support for smem based glink transport in the later patches.

    Acked-by: Arun Kumar Neelakantam
    Signed-off-by: Sricharan R
    Signed-off-by: Bjorn Andersson

    Bjorn Andersson
     

31 May, 2017

1 commit