Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3543c9d5 authored by Siddhartha Agrawal's avatar Siddhartha Agrawal Committed by Gerrit - the friendly Code Review server
Browse files

msm: mdss: Reserve framebuffer memory for the splash screen



Reserve memory for the framebuffer in the HLOS partition that
would be used to display splash screen in the bootloader as
well as the initial stages of the kernel bootup. This avoids
copying splash screen memory to a local buffer in the kernel.
The reserved memory would be freed when the first real update
comes in from the userspace.

Change-Id: I7dc256f8ffd69c24e56ac10ed57e37d96c8c9a2f
Signed-off-by: default avatarSiddhartha Agrawal <agrawals@codeaurora.org>
Signed-off-by: default avatarAravind Venkateswaran <aravindh@codeaurora.org>
parent 491ad79b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -63,6 +63,10 @@ Required properties:
Optional properties:
- qcom,mdss-dsi-panel-name:		A string used as a descriptive name of the panel
- qcom,cont-splash-enabled:		Boolean used to enable continuous splash mode.
					If this property is specified, it is required to
					to specify the memory reserved for the splash
					screen using the qcom,memblock-reserve binding
					for the framebuffer device attached to the panel.
- qcom,mdss-dsi-panel-broadcast-mode:	Boolean used to enable broadcast mode.
- qcom,mdss-dsi-fbc-enable:		Boolean used to enable frame buffer compression mode.
- qcom,mdss-dsi-fbc-bpp:		Compressed bpp supported by the panel.
+5 −0
Original line number Diff line number Diff line
@@ -207,6 +207,11 @@ Subnode properties:
			 enabled if framebuffer size is less than max mixer
			 width; 2) the defaut even split is enabled if frambuffer
			 size is greater than max mixer width.
- qcom,memblock-reserve: Specifies the memory location and the size reserved
			 for the framebuffer used to display the splash screen.
			 This property is required whenever the continuous splash
			 screen feature is enabled for the corresponding
			 framebuffer device.

Example:
	mdss_mdp: qcom,mdss_mdp@fd900000 {
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@
			compatible = "qcom,mdss-fb";
			qcom,memory-reservation-type = "EBI1";
			qcom,memory-reservation-size = <0x800000>;
			qcom,memblock-reserve = <0x03200000 0xFA0000>;
		};

		mdss_fb1: qcom,mdss_fb_wfd {
+1 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@
			compatible = "qcom,mdss-fb";
			qcom,memory-reservation-type = "EBI1";
			qcom,memory-reservation-size = <0x800000>;
			qcom,memblock-reserve = <0x03200000 0x01E00000>;
		};

		mdss_fb1: qcom,mdss_fb_external {
+3 −10
Original line number Diff line number Diff line
@@ -116,12 +116,6 @@ enum mdss_mdp_csc_type {
	MDSS_MDP_MAX_CSC
};

struct splash_pipe_cfg {
	int width;
	int height;
	int mixer;
};

struct mdss_mdp_ctl;
typedef void (*mdp_vsync_handler_t)(struct mdss_mdp_ctl *, ktime_t);

@@ -400,6 +394,9 @@ struct mdss_overlay_private {
	struct mdss_mdp_data free_list[MAX_FREE_LIST_SIZE];
	int free_list_size;
	int ad_state;

	u32 splash_mem_addr;
	u32 splash_mem_size;
};

struct mdss_mdp_perf_params {
@@ -444,8 +441,6 @@ static inline u32 mdss_mdp_pingpong_read(struct mdss_mdp_mixer *mixer, u32 reg)

irqreturn_t mdss_mdp_isr(int irq, void *ptr);
int mdss_iommu_attach(struct mdss_data_type *mdata);
int mdss_mdp_scan_cont_splash(void);
int mdss_mdp_video_copy_splash_screen(struct mdss_panel_data *pdata);
void mdss_mdp_irq_clear(struct mdss_data_type *mdata,
		u32 intr_type, u32 intf_num);
int mdss_mdp_irq_enable(u32 intr_type, u32 intf_num);
@@ -478,8 +473,6 @@ struct mdss_mdp_ctl *mdss_mdp_ctl_init(struct mdss_panel_data *pdata,
					struct msm_fb_data_type *mfd);
int mdss_mdp_video_reconfigure_splash_done(struct mdss_mdp_ctl *ctl);
int mdss_mdp_cmd_reconfigure_splash_done(struct mdss_mdp_ctl *ctl);
int mdss_mdp_video_copy_splash_screen(struct mdss_panel_data *pdata);
void mdss_mdp_ctl_splash_start(struct mdss_panel_data *pdata);
int mdss_mdp_ctl_splash_finish(struct mdss_mdp_ctl *ctl);
int mdss_mdp_ctl_setup(struct mdss_mdp_ctl *ctl);
int mdss_mdp_ctl_split_display_setup(struct mdss_mdp_ctl *ctl,
Loading