mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Also removes random module and switches to new bcm2711 thermal driver. Boot tested on RPi 4B v1.1 4G. Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 3cf4a365b833d7a2e7622ad5569b9d54aebbe593 Mon Sep 17 00:00:00 2001
 | |
| From: Maxime Ripard <maxime@cerno.tech>
 | |
| Date: Thu, 19 Dec 2019 16:25:26 +0100
 | |
| Subject: [PATCH] drm/vc4: hdmi: Add reset callback
 | |
| 
 | |
| The BCM2711 and BCM283x HDMI controllers use a slightly different reset
 | |
| sequence, so let's add a callback to reset the controller.
 | |
| 
 | |
| Signed-off-by: Maxime Ripard <maxime@cerno.tech>
 | |
| ---
 | |
|  drivers/gpu/drm/vc4/vc4_hdmi.c | 17 ++++++++++++-----
 | |
|  drivers/gpu/drm/vc4/vc4_hdmi.h |  3 +++
 | |
|  2 files changed, 15 insertions(+), 5 deletions(-)
 | |
| 
 | |
| --- a/drivers/gpu/drm/vc4/vc4_hdmi.c
 | |
| +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
 | |
| @@ -68,6 +68,15 @@ static int vc4_hdmi_debugfs_regs(struct
 | |
|  	return 0;
 | |
|  }
 | |
|  
 | |
| +static void vc4_hdmi_reset(struct vc4_hdmi *vc4_hdmi)
 | |
| +{
 | |
| +	HDMI_WRITE(HDMI_SW_RESET_CONTROL,
 | |
| +		   VC4_HDMI_SW_RESET_HDMI |
 | |
| +		   VC4_HDMI_SW_RESET_FORMAT_DETECT);
 | |
| +
 | |
| +	HDMI_WRITE(HDMI_SW_RESET_CONTROL, 0);
 | |
| +}
 | |
| +
 | |
|  static enum drm_connector_status
 | |
|  vc4_hdmi_connector_detect(struct drm_connector *connector, bool force)
 | |
|  {
 | |
| @@ -372,11 +381,8 @@ static void vc4_hdmi_encoder_enable(stru
 | |
|  		return;
 | |
|  	}
 | |
|  
 | |
| -	HDMI_WRITE(HDMI_SW_RESET_CONTROL,
 | |
| -		   VC4_HDMI_SW_RESET_HDMI |
 | |
| -		   VC4_HDMI_SW_RESET_FORMAT_DETECT);
 | |
| -
 | |
| -	HDMI_WRITE(HDMI_SW_RESET_CONTROL, 0);
 | |
| +	if (vc4_hdmi->variant->reset)
 | |
| +		vc4_hdmi->variant->reset(vc4_hdmi);
 | |
|  
 | |
|  	/* PHY should be in reset, like
 | |
|  	 * vc4_hdmi_encoder_disable() does.
 | |
| @@ -1421,6 +1427,7 @@ static const struct vc4_hdmi_variant bcm
 | |
|  	.num_registers		= ARRAY_SIZE(vc4_hdmi_fields),
 | |
|  
 | |
|  	.init_resources		= vc4_hdmi_init_resources,
 | |
| +	.reset			= vc4_hdmi_reset,
 | |
|  };
 | |
|  
 | |
|  static const struct of_device_id vc4_hdmi_dt_match[] = {
 | |
| --- a/drivers/gpu/drm/vc4/vc4_hdmi.h
 | |
| +++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
 | |
| @@ -35,6 +35,9 @@ struct vc4_hdmi_variant {
 | |
|  	 * clocks, etc) for that variant.
 | |
|  	 */
 | |
|  	int (*init_resources)(struct vc4_hdmi *vc4_hdmi);
 | |
| +
 | |
| +	/* Callback to reset the HDMI block */
 | |
| +	void (*reset)(struct vc4_hdmi *vc4_hdmi);
 | |
|  };
 | |
|  
 | |
|  /* HDMI audio information */
 |