18 Nov, 2024

1 commit

  • Running the v4l2-compliance (1.27.0-5208, SHA: af114250d48d) on the m2m
    device fails on the MMAP streaming tests, with the following messages:

    fail: v4l2-test-buffers.cpp(240): g_field() == V4L2_FIELD_ANY
    fail: v4l2-test-buffers.cpp(1508): buf.qbuf(node)

    Apparently, the driver does not properly set the field member of
    vb2_v4l2_buffer struct, returning the default V4L2_FIELD_ANY value which
    is against the guidelines.

    Fixes: cf21f328fcaf ("media: nxp: Add i.MX8 ISI driver")
    Signed-off-by: Laurentiu Palcu
    Reviewed-by: Laurent Pinchart
    Tested-by: Guoniu Zhou
    Reviewed-by: Robert Chiras
    Acked-by: Jason Liu

    Laurentiu Palcu
     

15 Nov, 2024

1 commit


13 Nov, 2024

2 commits

  • Currently, interrogating the controls, before they're set for the first
    time, will return all-zero values. To fix this, use the init() callback
    in the v4l2_ctrl_type_ops structure to populate the initial control
    values.

    Also, when running the sensor initialization sequence, make sure we
    don't cache the settings for the embedded data because they do not
    contain register values. They contain ranges. Otherwise we'll end up
    with wrong register values in the regmap cache.

    Signed-off-by: Laurentiu Palcu
    Reviewed-by: Robert Chiras
    Reviewed-by: Mirela Rabulea
    Tested-by: Celine Laurencin
    Reviewed-by: Celine Laurencin
    Acked-by: Jason Liu

    Laurentiu Palcu
     
  • Currently, the registers returned in the embedded data contain RW
    registers for gains and exposure. That affects the way the registers are
    updated which does not follow the specifications. Using the RO registers
    fixes the problem. Also, move the embedded data initialization sequence
    to the end and add a comment to be easier to find it out in the future.

    Signed-off-by: Laurentiu Palcu
    Reviewed-by: Mirela Rabulea
    Tested-by: Celine Laurencin
    Reviewed-by: Celine Laurencin
    Acked-by: Jason Liu

    Laurentiu Palcu
     

12 Nov, 2024

1 commit

  • The imx95 driver requests the necessary mailbox channels during imx-dsp's
    probe operation. If WAKEUP domain is shut down during system suspend, MU7A
    (used by Linux side) will end up losing its register state. This means that
    GI's will end up being masked when the system is resumed (since GIER is set
    to 0x0, which means all GI's are masked). As such, SOF will assert the GIP
    bits required for triggering an interrupt on Linux side but no interrupt
    will be triggered since GI's are masked, thus resulting on a crash on
    Linux side as it will assume that the firmware did not boot.

    This was reproduced using the following steps:
    1) Put Linux into suspend-to-RAM state by running:
    echo 'mem' > /sys/power/state
    2) Put SM into idle mode by running:
    idle
    3) Resume the system by running:
    wakeupsource

    What seems to happen is that if all CPUs are either in STOP/SLEEP
    state and SM is put into idle state it will attempt to system suspend,
    during which WAKEUP domain is powered off, thus leading to the
    aforementioned register state loss. If SM is not put into idle state,
    then WAKEUP domain is not powered off, thus if step 2) is left out then
    everything will work as expected.

    To fix this, make sure the mailbox channels are requested during resume()
    and released during suspend(). This way, by requesting the mailbox
    channels during resume() we make sure to unmask the GI's used in firmware
    communcation.

    Signed-off-by: Laurentiu Mihalcea
    Reviewed-by: Iuliana Prodan
    Acked-by: Jason Liu

    Laurentiu Mihalcea
     

11 Nov, 2024

2 commits

  • Initialized the err variable to fix the coverity issue,
    "Uninitialized scalar variable"

    Signed-off-by: Rahul Kumar Yadav
    Reviewed-by: Pankaj Gupta
    Acked-by: Jason Liu

    Rahul Kumar Yadav
     
  • The ipu_task_thread thread ran by kthread_run() could be excuted
    before kthread_run() returns especially when 'nosmp' or 'maxcpus=1'
    kernel bootup parameters are used. So, in this case, the thread[0]
    or thread[1] entries in struct ipu_soc are not yet set before
    ipu_task_thread() references them to set thread affinity, hence a
    NULL pointer de-referencing issue happens. Fix this by referencing
    *current* task in ipu_task_thread() instead of the uninitialized
    thread[0] or thread[1] entries.

    This fixes an old bug introduced by the below commit in linux-imx:
    commit 0d36f8226d22 ("ENGR00175724-2 IPU: change ipu_device thread
    process mode to interrupt mode.")

    Signed-off-by: Liu Ying
    Reviewed-by: Sandor Yu
    Acked-by: Jason Liu

    Liu Ying
     

09 Nov, 2024

1 commit

  • The following community commit make FSL_IFC config selectable, but the
    side effect is disabling the built-in FSL_IFC_NAND drive, add the related
    configs back to the lsdk config file to enable this driver by default.

    Fixes: c22649e21745 ("memory: fsl_ifc: Make FSL_IFC config visible and selectable")

    Signed-off-by: Han Xu
    Reviewed-by: Frank Li
    Acked-by: Jason Liu

    Han Xu
     

08 Nov, 2024

1 commit


06 Nov, 2024

1 commit


05 Nov, 2024

9 commits


31 Oct, 2024

1 commit

  • The edma CHn_MUX isn't reset after warm reboot on imx95. If the dma
    client request channel is different the last channel, the src id is
    unique and can't be written the new edma CHn_MUX on imx95 so that
    the transfer fail.

    This patch writes the CHn_MUX to reserved value 0.

    Fixes: 9e34c0115e39 ("LF-10579-02: dmaengine: fsl-edma-v3: add imx95 edma support")
    Signed-off-by: Joy Zou
    Reviewed-by: Ye Li
    Acked-by: Jason Liu

    Joy Zou
     

30 Oct, 2024

2 commits


24 Oct, 2024

3 commits

  • As mentioned in reference manual, ISI actual output line
    value will be rounded up to an integer. For example, if
    the input line value equal to 800 and the output line
    value equal to 720, you must set [Y_SCALE] to a value
    such that the theoretical output line value (800/[Y_SCALE])
    is equal to or less than 720, which means:

    1. If [Y_SCALE] is set to 1C8h, the theoretical output line
    value equal to 719.859375 which will be rounded up to 720.
    2. If [Y_SCALE] is set to 1C7h, the theoretical output line
    value equal to 720.017578 which will be rounded up to 721.

    There will be one excessive line in the actual output, So
    adjust scale factor to make them equal.

    Signed-off-by: Guoniu Zhou
    Reviewed-by: Robby Cai

    Guoniu Zhou
     
  • Keep subdev name as v4l2 core set since libcamera camera module
    model identification heuristic does not work properly, it will
    identify camera modules by parsing the default name.

    Signed-off-by: Guoniu Zhou
    Reviewed-by: Robby Cai

    Guoniu Zhou
     
  • Add more RGB formats which supported by ISI.

    Signed-off-by: Guoniu Zhou
    Reviewed-by: Robby Cai

    Guoniu Zhou
     

23 Oct, 2024

9 commits


22 Oct, 2024

6 commits