On Wed, 22 May 2024 14:55:28 +0800, kuro wrote:
> From: Kuro Chung
>
> When the system power resumes, the TTL input of IT6505 may experience
> some noise before the video signal stabilizes, necessitating a video
> reset. This patch is implemented to prevent a loop of video error
> interrupts,
Hey,
Thanks for spinning another few revisions.
On Tue, May 21, 2024 at 9:51 AM kuro wrote:
>
> From: Kuro Chung
>
> When the system power resumes, the TTL input of IT6505 may experience
> some noise before the video signal stabilizes, necessitating a video
> reset. This patch is implemented
On Mon, 13 May 2024 04:16:04 +0200, Marek Vasut wrote:
> TC9595 datasheet Video Path0 Control (VPCTRL0) Register bit FRMSYNC
> description
> says "This bit should be disabled only in video mode transmission where Host
> transmits video timing together with video data and where pixel clock source
On Mon, May 13, 2024 at 7:42 PM Robert Foss wrote:
>
> On Mon, May 6, 2024 at 11:36 AM kuro wrote:
> >
> > From: Kuro
> >
> > ITE added a FIFO reset bit for input video. When system power resume,
> > the TTL input of it6505 may get some noise before vide
> { BIT_INT_AUDIO_FIFO_ERROR, it6505_irq_audio_fifo_error },
> { BIT_INT_LINK_TRAIN_FAIL, it6505_irq_link_train_fail },
> - { BIT_INT_VID_FIFO_ERROR, it6505_irq_video_fifo_error },
> - { BIT_INT_IO_FIFO_OVERFLOW, it6505_irq_io_latch_fifo_overflow
> },
> };
> int int_status[3], i;
>
> @@ -2550,6 +2574,7 @@ static irqreturn_t it6505_int_threaded_handler(int
> unused, void *data)
> if (it6505_test_bit(irq_vec[i].bit, (unsigned int
> *)int_status))
> irq_vec[i].handler(it6505);
> }
> + it6505_irq_video_handler(it6505, (unsigned int *) int_status);
> }
>
> pm_runtime_put_sync(dev);
> --
> 2.25.1
>
Reviewed-by: Robert Foss
On Fri, 10 May 2024 16:26:03 +0300, Jani Nikula wrote:
> Resend of the remaining patches from [1].
>
> BR,
> Jani.
>
> [1] https://lore.kernel.org/r/cover.1713273659.git.jani.nik...@intel.com
>
> [...]
Fixed checkpatch issue in "drm/bochs: switch to struct drm_edid"
Applied, thanks!
[1/6]
On Fri, May 10, 2024 at 3:26 PM Jani Nikula wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula
>
> ---
>
> Cc: Andrzej Hajda
> Cc: Neil Armstrong
> Cc: Robert Foss
> Cc: Laurent Pinchart
> Cc:
On Fri, May 10, 2024 at 3:26 PM Jani Nikula wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula
>
> ---
>
> Cc: Andrzej Hajda
> Cc: Neil Armstrong
> Cc: Robert Foss
> Cc: Laurent Pinchart
> Cc:
On Fri, May 10, 2024 at 3:26 PM Jani Nikula wrote:
>
> Prefer struct drm_edid based functions over struct edid.
>
> Signed-off-by: Jani Nikula
>
> ---
>
> Cc: Andrzej Hajda
> Cc: Neil Armstrong
> Cc: Robert Foss
> Cc: Laurent Pinchart
> Cc:
r, edid);
> - priv->sink_has_audio = drm_detect_monitor_audio(edid);
> + n = drm_edid_connector_add_modes(connector);
> + priv->sink_has_audio = connector->display_info.has_audio;
> mutex_unlock(>audio_mutex);
>
> - kfree(edid);
> + drm_edid_free(drm_edid);
>
> return n;
> }
> --
> 2.39.2
>
Reviewed-by: Robert Foss
evice *dev)
> drm_connector_helper_add(connector,
> _connector_connector_helper_funcs);
>
> bochs_hw_load_edid(bochs);
> - if (bochs->edid) {
> + if (bochs->drm_edid) {
> DRM_INFO("Found EDID data blob.\n");
> drm_connector_attach_edid_property(connector);
> - drm_connector_update_edid_property(connector, bochs->edid);
> + drm_edid_connector_update(>connector, bochs->drm_edid);
> }
> }
>
> --
> 2.39.2
>
Reviewed-by: Robert Foss
new_edid);
> + new_edid = drm_edid_read_custom(>conn, virtio_get_edid_block,
> resp);
> + drm_edid_connector_update(>conn, new_edid);
>
> spin_lock(>display_info_lock);
> - old_edid = output->edid;
> - output->edid = new_edid;
> + old_edid = output->drm_edid;
> + output->drm_edid = new_edid;
> spin_unlock(>display_info_lock);
>
> - kfree(old_edid);
> + drm_edid_free(old_edid);
> wake_up(>resp_wq);
> }
>
> --
> 2.39.2
>
Reviewed-by: Robert Foss
aker_allocation(amdgpu_connector->edid,
> );
> if (sad_count < 0) {
> DRM_ERROR("Couldn't read Speaker Allocation Data Block:
> %d\n", sad_count);
> sad_count = 0;
> @@ -1340,7 +1340,7 @@ static void dce_v8_0_audio_write_sad_regs(struct
> drm_encoder *encoder)
> return;
> }
>
> - sad_count = drm_edid_to_sad(amdgpu_connector_edid(connector), );
> + sad_count = drm_edid_to_sad(amdgpu_connector->edid, );
> if (sad_count < 0)
> DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
> if (sad_count <= 0)
> --
> 2.39.2
>
Reviewed-by: Robert Foss
t; extern bool radeon_connector_is_dp12_capable(struct drm_connector
> *connector);
> extern int radeon_get_monitor_bpc(struct drm_connector *connector);
>
> -extern struct edid *radeon_connector_edid(struct drm_connector *connector);
> -
> extern void radeon_connector_hotplug(struct drm_connector *connector);
> extern int radeon_dp_mode_valid_helper(struct drm_connector *connector,
>struct drm_display_mode *mode);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
89d..0f723292409e 100644
> --- a/drivers/gpu/drm/radeon/radeon_encoders.c
> +++ b/drivers/gpu/drm/radeon/radeon_encoders.c
> @@ -386,7 +386,7 @@ bool radeon_dig_monitor_is_duallink(struct drm_encoder
> *encoder,
> case DRM_MODE_CONNECTOR_HDMIB:
> if (radeon_connector->use_digital) {
> /* HDMI 1.3 supports up to 340 Mhz over single link */
> - if (ASIC_IS_DCE6(rdev) &&
> drm_detect_hdmi_monitor(radeon_connector_edid(connector))) {
> + if (ASIC_IS_DCE6(rdev) &&
> connector->display_info.is_hdmi) {
> if (pixel_clock > 34)
> return true;
> else
> @@ -408,7 +408,7 @@ bool radeon_dig_monitor_is_duallink(struct drm_encoder
> *encoder,
> return false;
> else {
> /* HDMI 1.3 supports up to 340 Mhz over single link */
> - if (ASIC_IS_DCE6(rdev) &&
> drm_detect_hdmi_monitor(radeon_connector_edid(connector))) {
> + if (ASIC_IS_DCE6(rdev) &&
> connector->display_info.is_hdmi) {
> if (pixel_clock > 34)
> return true;
> else
> --
> 2.39.2
>
Reviewed-by: Robert Foss
I connector
> already created for us, we should pass DRM_BRIDGE_ATTACH_NO_CONNECTOR
> from the root KMS driver side. Which is to forbidden all potential
> drm bridge drivers to create a connector in the middle.
>
> The KMS display driver side could parse the DT to know if there is
> a hdmi connector, or merely just hdmi connector device node, or
> something else.
>
> However, other maintainer and/or reviewer's opinion are of cause
> more valuable. I send a A-b because I thought the bug is urgency
> and it's probably more important to solve this bug first. And
> maybe you can Cc: if you like.
>
Reviewed-by: Robert Foss
drzej Hajda
> Cc: Daniel Vetter
> Cc: David Airlie
> Cc: Frieder Schrempf
> Cc: Jernej Skrabec
> Cc: Jonas Karlman
> Cc: Laurent Pinchart
> Cc: Lucas Stach
> Cc: Maarten Lankhorst
> Cc: Maxime Ripard
> Cc: Michael Walle
> Cc: Neil Armstrong
> Cc: Robert
On Mon, 13 May 2024 23:30:57 +0800, Sui Jingfeng wrote:
> The checks on the existence of bridge->encoder in the implementation of
> drm_bridge_funcs::attach() is not necessary, as it has already been checked
> in the drm_bridge_attach() function call by previous bridge or KMS driver.
> The
On Wed, 8 May 2024 02:00:00 +0800, Sui Jingfeng wrote:
> Having conditional around the of_node pointer of the drm_bridge structure
> is not necessary, since drm_bridge structure always has the of_node as its
> member.
>
> Let's drop the conditional to get a better looks, please also note that
>
On Fri, May 3, 2024 at 5:12 PM Lucas Stach wrote:
>
> Currently the AUX channel support in the Analogix DP driver is severely
> limited as the AUX block of the bridge is only initialized when the video
> link is to be enabled. This is okay for the purposes of link training,
> but does not allow
On Fri, May 3, 2024 at 5:13 PM Lucas Stach wrote:
>
> Setting the link bandwidth may change the PLL parameters, which will cause
> the PLL to go out of lock, so make sure to apply the MACRO_RST, which
> according to the comment is required to be pulsed after the PLL is locked.
>
> Signed-off-by:
On Fri, May 3, 2024 at 5:13 PM Lucas Stach wrote:
>
> This check is way too late in the DP enable flow. The PLL must be locked
> much earlier, before any link training can happen. If the PLL is unlocked
> at that point in time there is something seriously wrong in the enable flow.
>
>
gt; @@ -1726,6 +1720,8 @@ int analogix_dp_resume(struct analogix_dp_device *dp)
>
> phy_power_on(dp->phy);
>
> + analogix_dp_init_dp(dp);
> +
> return 0;
> }
> EXPORT_SYMBOL_GPL(analogix_dp_resume);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
p->plat_data);
> +
> clk_disable_unprepare(dp->clock);
>
> return 0;
> @@ -1729,6 +1721,11 @@ int analogix_dp_resume(struct analogix_dp_device *dp)
> return ret;
> }
>
> + if (dp->plat_data->power_on)
> + dp->plat_data->power_on(dp->plat_data);
> +
> + phy_power_on(dp->phy);
> +
> return 0;
> }
> EXPORT_SYMBOL_GPL(analogix_dp_resume);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
(dp, POWER_ALL, 1);
> phy_power_off(dp->phy);
>
> - clk_disable_unprepare(dp->clock);
> -
> pm_runtime_put_sync(dp->dev);
>
> ret = analogix_dp_prepare_panel(dp, false, true);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
v, struct analogix_dp_plat_data
> *plat_data);
> int analogix_dp_bind(struct analogix_dp_device *dp, struct drm_device
> *drm_dev);
> void analogix_dp_unbind(struct analogix_dp_device *dp);
> -void analogix_dp_remove(struct analogix_dp_device *dp);
>
> int analogix_dp_start_crc(struct drm_connector *connector);
> int analogix_dp_stop_crc(struct drm_connector *connector);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
sable_unprepare(dp->clock);
> - return 0;
> -}
> -EXPORT_SYMBOL_GPL(analogix_dp_suspend);
> -
> -int analogix_dp_resume(struct analogix_dp_device *dp)
> -{
> - int ret;
> -
> - ret = clk_prepare_enable(dp->clock);
> - if (ret < 0) {
> - DRM_ERROR("Failed to prepare_enable the clock clk [%d]\n",
> ret);
> - return ret;
> - }
> -
> - return 0;
> -}
> -EXPORT_SYMBOL_GPL(analogix_dp_resume);
> -#endif
> -
> int analogix_dp_start_crc(struct drm_connector *connector)
> {
> struct analogix_dp_device *dp = to_dp(connector);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
_aux;
> }
>
> return 0;
>
> +err_unregister_aux:
> + drm_dp_aux_unregister(>aux);
> err_disable_pm_runtime:
> pm_runtime_dont_use_autosuspend(dp->dev);
> pm_runtime_disable(dp->dev);
> - drm_dp_aux_unregister(>aux);
>
> return ret;
> }
> --
> 2.39.2
>
Reviewed-by: Robert Foss
eg = RK3399_GRF_SOC_CON20,
> @@ -485,7 +480,7 @@ struct platform_driver rockchip_dp_driver = {
> .remove_new = rockchip_dp_remove,
> .driver = {
>.name = "rockchip-dp",
> - .pm = _dp_pm_ops,
> + .pm = pm_ptr(_dp_pm_ops),
>.of_match_table = rockchip_dp_dt_ids,
> },
> };
> --
> 2.39.2
>
Reviewed-by: Robert Foss
de/drm/bridge/analogix_dp.h
> +++ b/include/drm/bridge/analogix_dp.h
> @@ -29,8 +29,7 @@ struct analogix_dp_plat_data {
> struct drm_connector *connector;
> bool skip_connector;
>
> - int (*power_on_start)(struct analogix_dp_plat_data *);
> - int (*power_on_end)(struct analogix_dp_plat_data *);
> + int (*power_on)(struct analogix_dp_plat_data *);
> int (*power_off)(struct analogix_dp_plat_data *);
> int (*attach)(struct analogix_dp_plat_data *, struct drm_bridge *,
> struct drm_connector *);
> --
> 2.39.2
>
Reviewed-by: Robert Foss
On Thu, May 2, 2024 at 11:03 AM Hsin-Te Yuan wrote:
>
> For some SoCs, the TDM setting is not to shift the first audio data bit,
> which is not the default setting of anx7625. In such cases, the TDM
> setting should be changed according to the device tree property.
>
> Signed-off-by: Hsin-Te Yuan
On Fri, 26 Apr 2024 14:22:59 +0200, Luca Ceresoli wrote:
> This reverts commit 8a91b29f1f50ce7742cdbe5cf11d17f128511f3f.
>
> The regulator_disable() added by the original commit solves one kind of
> regulator imbalance but adds another one as it allows the regulator to be
> disabled one more time
On Mon, 22 Apr 2024 05:33:52 -0500, Adam Ford wrote:
> When enabling i.MX8MP DWC HDMI driver, it automatically selects
> PHY_FSL_SAMSUNG_HDMI_PHY, since it wont' work without the phy.
> This may cause some Kconfig warnings during various build tests.
> Fix this by implying the phy instead of
King
> Cc: David Airlie
> Cc: Daniel Vetter
> Cc: Andrzej Hajda
> Cc: Neil Armstrong
> Cc: Robert Foss
> Cc: Laurent Pinchart
> Cc: Jonas Karlman
> Cc: Jernej Skrabec
> Cc: Maarten Lankhorst
> Cc: Maxime Ripard
> Cc: Thomas Zimmermann
> Cc: Jani Nikula
On Sun, 25 Feb 2024 08:19:29 +0200, Tony Lindgren wrote:
> Here are v5 patches to improve tc358775 driver and add support for
> tc358765.
>
> Regards,
>
> Tony
>
> [...]
Thanks for the really nice series, sorry about the delay in applying it.
Applied, thanks!
[01/10] dt-bindings: display:
On Tue, Apr 23, 2024 at 10:16 AM kuro wrote:
>
> From: Kuro
>
> ITE added a FIFO reset bit for input video. When system power resume,
> the TTL input of it6505 may get some noise before video signal stable
> and the hardware function reset is required.
> But the input FIFO reset will also
*/
> > - if (px_clock_hz < target_px_clock_hz - CLK_TOLERANCE_HZ ||
> > - px_clock_hz > target_px_clock_hz + CLK_TOLERANCE_HZ)
> > + if (px_clock_hz < mult_frac(target_px_clock_hz, 995, 1000) ||
> > + px_clock_hz > mult_frac(target_px_clock_hz, 1005, 1000))
> > return MODE_CLOCK_RANGE;
> >
> > /* sync packets are codes as DSI short packets (4 bytes) */
> > --
> > 2.44.0
> >
>
Reviewed-by: Robert Foss
Ripard
> Link:
> https://patchwork.freedesktop.org/patch/msgid/20240410141434.157908-1-jani.nik...@intel.com
> Signed-off-by: Jani Nikula
>
> ---
>
> Cc: Jacek Lawrynowicz
> Cc: Stanislaw Gruszka
> Cc: Oded Gabbay
> Cc: Andrzej Hajda
> Cc: Neil Armstrong
>
On Tue, 16 Apr 2024 07:21:35 +, Hsin-Te Yuan wrote:
> Previously, the audio status was not updated during detection, leading
> to a persistent audio despite hot plugging events. To resolve this
> issue, update the audio status during detection.
>
>
Applied, thanks!
[1/1] drm/bridge:
Hey Aleksandr,
On Fri, Apr 12, 2024 at 10:40 AM Aleksandr Mishin wrote:
>
> In cdns_mhdp_atomic_enable(), the return value of drm_mode_duplicate() is
> assigned to mhdp_state->current_mode, and there is a dereference of it in
> drm_mode_set_name(), which will lead to a NULL pointer dereference
On Mon, 15 Apr 2024 17:49:28 -0400, Nícolas F. R. A. Prado wrote:
> This series changes every occurrence of the following pattern:
>
> dsi_host = of_find_mipi_dsi_host_by_node(dsi);
> if (!dsi_host) {
> dev_err(dev, "failed to find dsi host\n");
> return
On Mon, 4 Mar 2024 10:10:06 +0100, Uwe Kleine-König wrote:
> 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 ignored (apart
> from emitting a
On Mon, 4 Mar 2024 10:05:56 +0100, Uwe Kleine-König wrote:
> 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 ignored (apart
> from emitting a
On Mon, 8 Apr 2024 15:58:10 +0300, Aleksandr Mishin wrote:
> In cdns_mhdp_atomic_enable(), the return value of drm_mode_duplicate() is
> assigned to mhdp_state->current_mode, and there is a dereference of it in
> drm_mode_set_name(), which will lead to a NULL pointer dereference on
> failure of
Sorry to ask for this again, but this series has non-trivial merge
conflicts with upstream again.
Could you rebase it and send out an updated version?
On Tue, 28 Mar 2023 22:37:51 +0530, Jagan Teki wrote:
> For a given bridge pipeline if any bridge sets pre_enable_prev_first
> flag then the pre_enable for the previous bridge will be called before
> pre_enable of this bridge and opposite is done for post_disable.
>
> These are the potential
On Thu, Feb 29, 2024 at 12:39 PM Frieder Schrempf
wrote:
>
> Hi,
>
> On 28.03.23 19:07, Jagan Teki wrote:
> > For a given bridge pipeline if any bridge sets pre_enable_prev_first
> > flag then the pre_enable for the previous bridge will be called before
> > pre_enable of this bridge and opposite
On Fri, 23 Feb 2024 16:03:33 +0100, Thierry Reding wrote:
> From: Thierry Reding
>
> Tegra DRM doesn't support display on Tegra234 and later, so make sure
> not to remove any existing framebuffers in that case.
>
> v2: - add comments explaining how this situation can come about
> - clear
On Mon, Feb 26, 2024 at 12:36 PM Javier Martinez Canillas
wrote:
>
> Thomas Zimmermann writes:
>
> > Hi
> >
> > Am 23.02.24 um 16:03 schrieb Thierry Reding:
> >> From: Thierry Reding
> >>
> >> Tegra DRM doesn't support display on Tegra234 and later, so make sure
> >> not to remove any existing
On Mon, 19 Feb 2024 21:21:47 +0100, Alvin Šipraga wrote:
> From: Mads Bligaard Nielsen
>
> Moved IRQ registration down to end of adv7511_probe().
>
> If an IRQ already is pending during adv7511_probe
> (before adv7511_cec_init) then cec_received_msg_ts
> could crash using uninitialized data:
>
On Tue, Feb 20, 2024 at 3:43 PM Alexander Stein
wrote:
>
> Hi everyone,
>
> Am Dienstag, 22. August 2023, 13:52:00 CET schrieb Alexander Stein:
> > When -EPROBE_DEFER is returned do not raise an error, but silently return
> > this error instead. Fixes error like this:
> > [drm:drm_bridge_attach]
On Wed, 03 Jan 2024 15:31:06 +0200, Tomi Valkeinen wrote:
> Two small fixes to sii902x for crashes.
>
>
Applied, thanks!
[1/2] drm/bridge: sii902x: Fix probing race issue
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=dffdfb8f5de1
[2/2] drm/bridge: sii902x: Fix audio codec
On Thu, 18 Jan 2024 23:02:31 +0100, Marek Vasut wrote:
> According to new configuration spreadsheet from Toshiba for TC9595,
> the Pixel PLL input clock have to be in range 6..40 MHz. The sheet
> calculates those PLL input clock as reference clock divided by both
> pre-dividers. Add the extra
c_adapter(struct
> dw_hdmi *hdmi)
> init_completion(>cmp);
>
> adap = >adap;
> - adap->class = I2C_CLASS_DDC;
> adap->owner = THIS_MODULE;
> adap->dev.parent = hdmi->dev;
> adap->algo = _hdmi_algorithm;
>
Acked-by: Robert Foss
*/
> + edid = __adv7511_get_edid(adv7511,
> +
> >connector);
> + if (edid)
> + kfree(edid);
kfree(NULL) is safe, so the if statement can be removed.
With this fixed, feel free to add my r-b to this full series.
Reviewed-by: Robert Foss
e;
> + chip->of_pwm_n_cells = 1;
> +
> + return pwmchip_add(chip);
> }
>
> static void ti_sn_pwm_remove(struct auxiliary_device *adev)
> {
> struct ti_sn65dsi86 *pdata = dev_get_drvdata(adev->dev.parent);
>
> - pwmchip_remove(>pchip);
> + pwmchip_remove(pdata->pchip);
>
> if (pdata->pwm_enabled)
> pm_runtime_put_sync(pdata->dev);
> --
> 2.42.0
>
Acked-by: Robert Foss
gt; + ret = regmap_read(pdata->regmap, SN_AUX_LENGTH_REG,
> _len);
> + len = min(len, short_len);
> if (ret)
> goto exit;
> } else if (val & AUX_IRQ_STATUS_NAT_I2C_FAIL) {
> --
> 2.43.0.472.g3155946c3a-goog
>
>
Reviewed-by: Robert Foss
On Mon, 18 Dec 2023 09:43:36 +0100, Dario Binacchi wrote:
> The series adds drivers for the displays used by bsh-smm-s2/pro boards.
> This required applying some patches to the samsung-dsim driver and the
> drm_bridge.c module.
>
> Changes in v9:
> - Updated commit message
> - Drop [3/3] arm64:
On Thu, 21 Dec 2023 17:30:57 +0800, xiazhengqiao wrote:
> To have better compatibility for DP sink, there is a retry mechanism
> for the link training process to switch between different training process.
> The original driver code doesn't reset the retry counter when training
> state is pass. If
On Thu, 7 Dec 2023 17:10:43 +0100, Dario Binacchi wrote:
> It was useless to check again the "ret" variable if the function
> register_host() was not called.
>
>
Applied, thanks!
[1/1] drm/bridge: samsung-dsim: check the return value only if necessary
On Tue, Dec 12, 2023 at 8:53 AM Alexander Stein
wrote:
>
> Hi,
>
> this series improves the regmap usage by cleaning up current usage as well as
> adding more registers to the list of volatile registers. SYSSTAT is added
> to the list of precious registers as it is cleared upon read.
> This
*/
> #define DP0_AUDMNGEN1 0x062c /* DP0 Audio Force N Value Register */
> #define DP0_AMNGENSTATUS 0x0630 /* DP0 Audio Current M Value Register
> */
> @@ -277,7 +277,7 @@
> #define AUDIFDATA5 0x071c /* DP0 Audio Info Frame Bytes 23 to
> 20 */
>
table,
> .reg_format_endian = REGMAP_ENDIAN_BIG,
> .val_format_endian = REGMAP_ENDIAN_LITTLE,
> --
> 2.34.1
>
Reviewed-by: Robert Foss
regmap_reg_range(DP0_AMNGENSTATUS, DP0_AMNGENSTATUS),
> regmap_reg_range(DP0_AUXWDATA(0), DP0_AUXSTATUS),
> regmap_reg_range(DP0_LTSTAT, DP0_SNKLTCHGREQ),
> regmap_reg_range(DP_PHY_CTRL, DP_PHY_CTRL),
> --
> 2.34.1
>
Reviewed-by: Robert Foss
TSTS_G, INTSTS_G),
> - regmap_reg_range(GPIOI, GPIOI),
> };
>
> static const struct regmap_access_table tc_volatile_table = {
> --
> 2.34.1
>
Reviewed-by: Robert Foss
NT:
> /* DSI Application Layer */
> case 0x400:
> case 0x404:
> @@ -1993,7 +2064,11 @@ static const struct regmap_access_table
> tc_volatile_table = {
> };
>
> static const struct regmap_range tc_non_writeable_ranges[] = {
> - regmap_reg_range(TC_IDREG, TC_IDREG),
> + regmap_reg_range(PPI_BUSYPPI, PPI_BUSYPPI),
> + regmap_reg_range(DSI_BUSYDSI, DSI_BUSYDSI),
> + regmap_reg_range(DSI_LANESTATUS0, DSI_INTSTATUS),
> + regmap_reg_range(TC_IDREG, SYSSTAT),
> + regmap_reg_range(GPIOI, GPIOI),
> regmap_reg_range(DP0_LTSTAT, DP0_SNKLTCHGREQ),
> };
>
> --
> 2.34.1
>
Reviewed-by: Robert Foss
VIDSRC_DSI_RX (1 << 0)
> +#define DP0_VIDSRC_DPI_RX (2 << 0)
> +#define DP0_VIDSRC_COLOR_BAR (3 << 0)
> #define GPIOM 0x0540
> #define GPIOC 0x0544
> #define GPIOO 0x0548
> --
> 2.34.1
>
Reviewed-by: Robert Foss
On Wed, 6 Dec 2023 18:05:15 +0300, Dan Carpenter wrote:
> The i2c_master_send/recv() functions return negative error codes or
> they return "len" on success. So the error handling here can be written
> as just normal checks for "if (ret < 0) return ret;". No need to
> complicate things.
>
>
On Tue, Dec 5, 2023, 15:01 Dan Carpenter wrote:
> On Tue, Dec 05, 2023 at 02:48:26PM +0100, Robert Foss wrote:
> > On Mon, 4 Dec 2023 15:29:00 +0300, Dan Carpenter wrote:
> > > The i2c_master_send/recv() functions return negative error codes or the
> > > number of byte
On Mon, 4 Dec 2023 15:29:00 +0300, Dan Carpenter wrote:
> The i2c_master_send/recv() functions return negative error codes or the
> number of bytes that were able to be sent/received. This code has
> two problems. 1) Instead of checking if all the bytes were sent or
> received, it checks that
> .driver = {
> .name = "lt8912",
> .of_match_table = lt8912_dt_match,
> + .pm = pm_sleep_ptr(_bridge_pm_ops),
> },
> .probe = lt8912_probe,
> .remove = lt8912_remove,
> --
> 2.25.1
>
Reviewed-by: Robert Foss
upply = supply_names[i];
> +
> + return devm_regulator_bulk_get(lt->dev, ARRAY_SIZE(lt->supplies),
> + lt->supplies);
> +}
> +
> static int lt8912_parse_dt(struct lt8912 *lt)
> {
> struct gpio_desc *gp_reset;
> @@ -712,6 +738,10 @@ static int lt8912_parse_dt(struct lt8912 *lt)
> goto err_free_host_node;
> }
>
> + ret = lt8912_get_regulators(lt);
> + if (ret)
> + goto err_free_host_node;
> +
> of_node_put(port_node);
> return 0;
>
> --
> 2.25.1
>
Reviewed-by: Robert Foss
On Mon, 20 Nov 2023 17:10:36 +0800, Xin Ji wrote:
> This reverts commit 330140d7319fcc4ec68bd924ea212e476bf12275
>
> 200ms delay will cause panel display image later than backlight
> turn on, revert this patch.
>
>
Applied, thanks!
[1/2] Revert "drm/bridge: Add 200ms delay to wait FW HPD
On Thu, 23 Nov 2023 13:18:07 +0800, Liu Ying wrote:
> Fix a couple of building warnings on used uninitialized 'best_m' and
> 'best_n' local variables by initializing 'best_m' to zero and 'best_n'
> to UINT_MAX. This makes compiler happy only. No functional change.
>
>
Applied, thanks!
[1/1]
On Fri, 24 Nov 2023 10:42:30 +0100, Dario Binacchi wrote:
> s/singals/signals/
>
>
Applied, thanks!
[1/1] drm/bridge: Fix typo in post_disable() description
https://cgit.freedesktop.org/drm/drm-misc/commit/?id=288b039db225
Rob
On Wed, Oct 18, 2023 at 12:35 PM Robert Foss wrote:
>
> On Wed, Oct 11, 2023 at 4:38 PM Thierry Reding
> wrote:
> >
> > From: Thierry Reding
> >
> > The simple-framebuffer device tree bindings document the power-domains
> > property, so make sure
On Wed, Oct 11, 2023 at 4:38 PM Thierry Reding wrote:
>
> From: Thierry Reding
>
> The simple-framebuffer device tree bindings document the power-domains
> property, so make sure that simplefb supports it. This ensures that the
> power domains remain enabled as long as simplefb is active.
>
>
On Thu, 12 Oct 2023 01:00:02 +0300, Dmitry Baryshkov wrote:
> If DSI host attachment fails, the LT9611UXC driver will remove the
> bridge without ensuring that there is no outstanding HPD work being
> done. In rare cases this can result in the warnings regarding the mutex
> being incorrect. Fix
On Mon, 21 Aug 2023 11:39:59 +0800, Liu Ying wrote:
> This series aims to add MIPI DSI support for Freescale i.MX93 SoC.
>
> There is a Synopsys DesignWare MIPI DSI host controller and a Synopsys
> Designware MIPI DPHY embedded in i.MX93. Some configurations and
> extensions to them are
static int imx93_dsi_host_attach(void *priv_data, struct mipi_dsi_device
> *device)
> +{
> + struct imx93_dsi *dsi = priv_data;
> +
> + dsi->format = device->format;
> +
> + return 0;
> +}
> +
> +static const struct dw_mipi_dsi_host_ops imx93_dsi_host_ops = {
> + .attach = imx93_dsi_host_attach,
> +};
> +
> +static int imx93_dsi_probe(struct platform_device *pdev)
> +{
> + struct device *dev = >dev;
> + struct device_node *np = dev->of_node;
> + struct imx93_dsi *dsi;
> + int ret;
> +
> + dsi = devm_kzalloc(dev, sizeof(*dsi), GFP_KERNEL);
> + if (!dsi)
> + return -ENOMEM;
> +
> + dsi->regmap = syscon_regmap_lookup_by_phandle(np,
> "fsl,media-blk-ctrl");
> + if (IS_ERR(dsi->regmap)) {
> + ret = PTR_ERR(dsi->regmap);
> + dev_err(dev, "failed to get block ctrl regmap: %d\n", ret);
> + return ret;
> + }
> +
> + dsi->clk_pixel = devm_clk_get(dev, "pix");
> + if (IS_ERR(dsi->clk_pixel))
> + return dev_err_probe(dev, PTR_ERR(dsi->clk_pixel),
> +"failed to get pixel clock\n");
> +
> + dsi->clk_cfg = devm_clk_get(dev, "phy_cfg");
> + if (IS_ERR(dsi->clk_cfg))
> + return dev_err_probe(dev, PTR_ERR(dsi->clk_cfg),
> +"failed to get phy cfg clock\n");
> +
> + dsi->clk_ref = devm_clk_get(dev, "phy_ref");
> + if (IS_ERR(dsi->clk_ref))
> + return dev_err_probe(dev, PTR_ERR(dsi->clk_ref),
> +"failed to get phy ref clock\n");
> +
> + dsi->ref_clk_rate = clk_get_rate(dsi->clk_ref);
> + if (dsi->ref_clk_rate < REF_CLK_RATE_MIN ||
> + dsi->ref_clk_rate > REF_CLK_RATE_MAX) {
> + dev_err(dev, "invalid phy ref clock rate %lu\n",
> + dsi->ref_clk_rate);
> + return -EINVAL;
> + }
> + dev_dbg(dev, "phy ref clock rate: %lu\n", dsi->ref_clk_rate);
> +
> + dsi->dev = dev;
> + dsi->pdata.max_data_lanes = 4;
> + dsi->pdata.mode_valid = imx93_dsi_mode_valid;
> + dsi->pdata.mode_fixup = imx93_dsi_mode_fixup;
> + dsi->pdata.get_input_bus_fmts = imx93_dsi_get_input_bus_fmts;
> + dsi->pdata.phy_ops = _dsi_phy_ops;
> + dsi->pdata.host_ops = _dsi_host_ops;
> + dsi->pdata.priv_data = dsi;
> + platform_set_drvdata(pdev, dsi);
> +
> + dsi->dmd = dw_mipi_dsi_probe(pdev, >pdata);
> + if (IS_ERR(dsi->dmd))
> + return dev_err_probe(dev, PTR_ERR(dsi->dmd),
> +"failed to probe dw_mipi_dsi\n");
> +
> + return 0;
> +}
> +
> +static void imx93_dsi_remove(struct platform_device *pdev)
> +{
> + struct imx93_dsi *dsi = platform_get_drvdata(pdev);
> +
> + dw_mipi_dsi_remove(dsi->dmd);
> +}
> +
> +static const struct of_device_id imx93_dsi_dt_ids[] = {
> + { .compatible = "fsl,imx93-mipi-dsi", },
> + { /* sentinel */ }
> +};
> +MODULE_DEVICE_TABLE(of, imx93_dsi_dt_ids);
> +
> +static struct platform_driver imx93_dsi_driver = {
> + .probe = imx93_dsi_probe,
> + .remove_new = imx93_dsi_remove,
> + .driver = {
> + .of_match_table = imx93_dsi_dt_ids,
> + .name = "imx93_mipi_dsi",
> + },
> +};
> +module_platform_driver(imx93_dsi_driver);
> +
> +MODULE_DESCRIPTION("Freescale i.MX93 MIPI DSI driver");
> +MODULE_AUTHOR("Liu Ying ");
> +MODULE_LICENSE("GPL");
> --
> 2.37.1
>
Reviewed-by: Robert Foss
si, struct dw_mipi_dsi
> *slave);
> +struct drm_bridge *dw_mipi_dsi_get_bridge(struct dw_mipi_dsi *dsi);
>
> #endif /* __DW_MIPI_DSI__ */
> --
> 2.37.1
>
Reviewed-by: Robert Foss
gt; + struct drm_crtc_state *crtc_state,
> + struct drm_connector_state *conn_state,
> + u32 output_fmt,
> + unsigned int *num_input_fmts);
> +
> const struct dw_mipi_dsi_phy_ops *phy_ops;
> const struct dw_mipi_dsi_host_ops *host_ops;
>
> --
> 2.37.1
>
Reviewed-by: Robert Foss
; dw_mipi_dsi_bridge_atomic_get_input_bus_fmts,
> + .atomic_check = dw_mipi_dsi_bridge_atomic_check,
> .atomic_reset = drm_atomic_helper_bridge_reset,
> .atomic_pre_enable = dw_mipi_dsi_bridge_atomic_pre_enable,
> .atomic_enable = dw_mipi_dsi_bridge_atomic_enable,
> --
> 2.37.1
>
Reviewed-by: Robert Foss
t;
> + bool (*mode_fixup)(void *priv_data, const struct drm_display_mode
> *mode,
> + struct drm_display_mode *adjusted_mode);
> +
> u32 *(*get_input_bus_fmts)(void *priv_data,
>struct drm_bridge *bridge,
>struct drm_bridge_state *bridge_state,
> --
> 2.37.1
>
Reviewed-by: Robert Foss
On Wed, 30 Aug 2023 15:23:50 +0100, Biju Das wrote:
> This patch series aims to improve ADV7511 driver by adding
> feature bits and data instead of comparing enum adv7511_type for
> various hardware differences between ADV7511, ADV7533 and ADV7535.
>
> This patch series tested with[1] on RZ/G2L
quot;adi,adv7535", .data = (void *)ADV7535 },
> + { .compatible = "adi,adv7511", .data = _chip_info },
> + { .compatible = "adi,adv7511w", .data = _chip_info },
> + { .compatible = "adi,adv7513", .data = _chip_info },
> + { .compatible = "adi,adv7533", .data = _chip_info },
> + { .compatible = "adi,adv7535", .data = _chip_info },
> { }
> };
> MODULE_DEVICE_TABLE(of, adv7511_of_ids);
> diff --git a/drivers/gpu/drm/bridge/adv7511/adv7533.c
> b/drivers/gpu/drm/bridge/adv7511/adv7533.c
> index 7e3e56441aed..c452c4dc1c3f 100644
> --- a/drivers/gpu/drm/bridge/adv7511/adv7533.c
> +++ b/drivers/gpu/drm/bridge/adv7511/adv7533.c
> @@ -108,11 +108,11 @@ enum drm_mode_status adv7533_mode_valid(struct adv7511
> *adv,
> u8 bpp = mipi_dsi_pixel_format_to_bpp(dsi->format);
>
> /* Check max clock for either 7533 or 7535 */
> - if (mode->clock > (adv->type == ADV7533 ? 8 : 148500))
> + if (mode->clock > (adv->info->type == ADV7533 ? 8 : 148500))
> return MODE_CLOCK_HIGH;
>
> /* Check max clock for each lane */
> - max_lane_freq = (adv->type == ADV7533 ? 80 : 891000);
> + max_lane_freq = (adv->info->type == ADV7533 ? 80 : 891000);
>
> if (mode->clock * bpp > max_lane_freq * adv->num_dsi_lanes)
> return MODE_CLOCK_HIGH;
> --
> 2.25.1
>
Reviewed-by: Robert Foss
ruct adv7511
> *adv,
> u8 bpp = mipi_dsi_pixel_format_to_bpp(dsi->format);
>
> /* Check max clock for either 7533 or 7535 */
> - if (mode->clock > (adv->info->type == ADV7533 ? 8 : 148500))
> + if (mode->clock > adv->info->max_mode_clock_khz)
> return MODE_CLOCK_HIGH;
>
> /* Check max clock for each lane */
> --
> 2.25.1
>
Reviewed-by: Robert Foss
lane */
> - max_lane_freq = (adv->info->type == ADV7533 ? 80 : 891000);
> -
> - if (mode->clock * bpp > max_lane_freq * adv->num_dsi_lanes)
> + if (mode->clock * bpp > adv->info->max_lane_freq_khz *
> adv->num_dsi_lanes)
> return MODE_CLOCK_HIGH;
>
> return MODE_OK;
> --
> 2.25.1
>
Reviewed-by: Robert Foss
gt; .type = ADV7533,
> .max_mode_clock_khz = 8,
> .max_lane_freq_khz = 80,
> + .supply_names = adv7533_supply_names,
> + .num_supplies = ARRAY_SIZE(adv7533_supply_names),
> };
>
> static const struct adv7511_chip_info adv7535_chip_info = {
> .type = ADV7535,
> .max_mode_clock_khz = 148500,
> .max_lane_freq_khz = 891000,
> + .supply_names = adv7533_supply_names,
> + .num_supplies = ARRAY_SIZE(adv7533_supply_names),
> };
>
> static const struct i2c_device_id adv7511_i2c_ids[] = {
> --
> 2.25.1
>
Reviewed-by: Robert Foss
s),
> .reg_cec_offset = ADV7533_REG_CEC_OFFSET,
> + .has_dsi = true,
> };
>
> static const struct adv7511_chip_info adv7535_chip_info = {
> @@ -1376,6 +1377,7 @@ static const struct adv7511_chip_info adv7535_chip_info
> = {
> .supply_names = adv7533_supply_names,
> .num_supplies = ARRAY_SIZE(adv7533_supply_names),
> .reg_cec_offset = ADV7533_REG_CEC_OFFSET,
> + .has_dsi = true,
> };
>
> static const struct i2c_device_id adv7511_i2c_ids[] = {
> --
> 2.25.1
>
Reviewed-by: Robert Foss
adv7511_cec_init(dev, adv7511);
> @@ -1358,6 +1358,7 @@ static const struct adv7511_chip_info adv7511_chip_info
> = {
> .type = ADV7511,
> .supply_names = adv7511_supply_names,
> .num_supplies = ARRAY_SIZE(adv7511_supply_names),
> + .link_config = true,
> };
>
> static const struct adv7511_chip_info adv7533_chip_info = {
> --
> 2.25.1
>
Reviewed-by: Robert Foss
regmap,
> ADV7511_REG_POWER2,
>ADV7535_REG_POWER2_HPD_OVERRIDE,
>ADV7535_REG_POWER2_HPD_OVERRIDE);
> @@ -1379,6 +1379,7 @@ static const struct adv7511_chip_info adv7535_chip_info
> = {
> .num_supplies = ARRAY_SIZE(adv7533_supply_names),
> .reg_cec_offset = ADV7533_REG_CEC_OFFSET,
> .has_dsi = true,
> + .hpd_override_enable = true,
> };
>
> static const struct i2c_device_id adv7511_i2c_ids[] = {
> --
> 2.25.1
Reviewed-by: Robert Foss
struct adv7511.
>
> This will avoid assigning reg_cec_offset based on chip type and also
> testing for multiple chip types for calling adv7533_patch_cec_registers().
s/for calling/by calling/ ?
Reviewed-by: Robert Foss
On Thu, 21 Sep 2023 13:47:50 +0300, Ian Ray wrote:
> Migrate away from custom EDID parsing and validity checks.
>
> Note: This is a follow-up to the original RFC by Jani [1]. The first
> submission in this series should have been marked v2.
>
> [1]
>
gt; F:
> Documentation/devicetree/bindings/display/bridge/megachips-stdp-ge-b850v3-fw.txt
> --
> 2.10.1
>
Reviewed-by: Robert Foss
urn block;
> -
> -err:
> - kfree(block);
> - return NULL;
> + return 0;
> }
>
> static struct edid *ge_b850v3_lvds_get_edid(struct drm_bridge *bridge,
> @@ -137,7 +98,7 @@ static struct edid *ge_b850v3_lvds_get_edid(struct
> drm_bridge *bridge,
>
> client = ge_b850v3_lvds_ptr->stdp2690_i2c;
>
> - return (struct edid *)stdp2690_get_edid(client);
> + return drm_do_get_edid(connector, stdp2690_read_block, client);
> }
>
> static int ge_b850v3_lvds_get_modes(struct drm_connector *connector)
Reviewed-by: Robert Foss
NAK
Personally I value maintaining a simple to follow `git blame` history
over correcting indentation.
Ideally bad indentation should never be committed in the first place.
On Wed, Sep 20, 2023 at 2:44 AM Yang Li wrote:
>
> drivers/gpu/drm/bridge/synopsys/dw-hdmi-cec.c:336
On Fri, 22 Sep 2023 17:34:49 +0800, Xin Ji wrote:
> For the no-interrupt design (sink device is panel, polling HPD
> status when chip power on), anx7625 FW has more than 200ms HPD
> de-bounce time in FW, for the safety to get HPD status, driver
> better to wait 200ms before HPD detection after OS
On Wed, 06 Sep 2023 09:50:47 +0300, Tomi Valkeinen wrote:
> This series contains various fixes and cleanups for TC358768. The target
> of this work is to get TC358768 working on Toradex's AM62 based board,
> which has the following display pipeline:
>
> AM62 DPI -> TC358768 -> LT8912B -> HDMI
On Sat, 9 Sep 2023 04:37:53 +0200, Alicja Michalska wrote:
> Analogix ANX78XX driver is missing definitions for anx7816.
> It uses the same I2C register set as anx7818.
>
>
Applied, thanks!
[1/1] drm/bridge/analogix/anx78xx: Add missing definition
1 - 100 of 866 matches
Mail list logo