diff --git a/arch/arm/boot/dts/amlogic/mesons4_drm.dtsi b/arch/arm/boot/dts/amlogic/mesons4_drm.dtsi index 4bfb1a412..1f86d16be 100644 --- a/arch/arm/boot/dts/amlogic/mesons4_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesons4_drm.dtsi @@ -92,6 +92,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesons4d_drm.dtsi b/arch/arm/boot/dts/amlogic/mesons4d_drm.dtsi index ced5290b3..47fd9fd69 100644 --- a/arch/arm/boot/dts/amlogic/mesons4d_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesons4d_drm.dtsi @@ -92,6 +92,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesons7_drm.dtsi b/arch/arm/boot/dts/amlogic/mesons7_drm.dtsi index 5bf820b61..14957f279 100644 --- a/arch/arm/boot/dts/amlogic/mesons7_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesons7_drm.dtsi @@ -67,6 +67,7 @@ primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesons7d_drm.dtsi b/arch/arm/boot/dts/amlogic/mesons7d_drm.dtsi index e9e60495d..b9c30aa89 100644 --- a/arch/arm/boot/dts/amlogic/mesons7d_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesons7d_drm.dtsi @@ -69,6 +69,7 @@ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ pxp_mode = <0>; gfcd_enable = /bits/ 8 <0>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesonsc2_drm.dtsi b/arch/arm/boot/dts/amlogic/mesonsc2_drm.dtsi index c326a5014..ff1960977 100644 --- a/arch/arm/boot/dts/amlogic/mesonsc2_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesonsc2_drm.dtsi @@ -98,6 +98,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesont3_drm.dtsi b/arch/arm/boot/dts/amlogic/mesont3_drm.dtsi index 96ddee838..75a40b060 100644 --- a/arch/arm/boot/dts/amlogic/mesont3_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont3_drm.dtsi @@ -59,6 +59,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesont5_drm.dtsi b/arch/arm/boot/dts/amlogic/mesont5_drm.dtsi index 1bc51e16b..7da93f47e 100644 --- a/arch/arm/boot/dts/amlogic/mesont5_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont5_drm.dtsi @@ -59,6 +59,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesont5m_drm.dtsi b/arch/arm/boot/dts/amlogic/mesont5m_drm.dtsi index a86ae9ac4..ca4217e37 100644 --- a/arch/arm/boot/dts/amlogic/mesont5m_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont5m_drm.dtsi @@ -61,6 +61,7 @@ osd_afbc_mask = <3>; memory-region = <&logo_reserved>; crtc_masks = <0 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm/boot/dts/amlogic/mesont5w_drm.dtsi b/arch/arm/boot/dts/amlogic/mesont5w_drm.dtsi index 25b69219f..0cd195f33 100644 --- a/arch/arm/boot/dts/amlogic/mesont5w_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont5w_drm.dtsi @@ -40,6 +40,8 @@ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ /* OSD1&OSD2 with afbc, OSD3 has no afbc */ osd_afbc_mask = <3>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ + vpu_topology: vpu_topology { vpu_blocks { osd1_block: block@0 { diff --git a/arch/arm/boot/dts/amlogic/mesont6d_drm.dtsi b/arch/arm/boot/dts/amlogic/mesont6d_drm.dtsi index f3f4ad325..16f9f7cc0 100644 --- a/arch/arm/boot/dts/amlogic/mesont6d_drm.dtsi +++ b/arch/arm/boot/dts/amlogic/mesont6d_drm.dtsi @@ -44,6 +44,7 @@ osd_afbc_mask = <3>; memory-region = <&logo_reserved>; crtc_masks = <0 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesong12a_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesong12a_drm.dtsi index 3ac23ae47..adea489bc 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12a_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12a_drm.dtsi @@ -67,6 +67,7 @@ crtcmask_of_osd = <0 0 0>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ crtc_masks = <1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesong12b_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesong12b_drm.dtsi index eea880330..7ef4e4447 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12b_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12b_drm.dtsi @@ -82,6 +82,8 @@ crtcmask_of_osd = <0 0 0>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ crtc_masks = <1 2 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ + vpu_topology: vpu_topology { vpu_blocks { osd1_block: block@0 { diff --git a/arch/arm64/boot/dts/amlogic/mesons4_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons4_drm.dtsi index 5b71bed98..ba634e5c9 100644 --- a/arch/arm64/boot/dts/amlogic/mesons4_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons4_drm.dtsi @@ -92,6 +92,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesons4d_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons4d_drm.dtsi index 1768d2381..0a914c924 100644 --- a/arch/arm64/boot/dts/amlogic/mesons4d_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons4d_drm.dtsi @@ -93,6 +93,7 @@ panel2logo = <0 2 3>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesons5_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons5_drm.dtsi index bd9da101c..6b5d1e155 100644 --- a/arch/arm64/boot/dts/amlogic/mesons5_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons5_drm.dtsi @@ -68,6 +68,8 @@ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ logo_skip = <0>; pref_mode = "2160p"; /* indicate support 4k UI of recovery system */ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ + vpu_topology: vpu_topology { vpu_blocks { osd1_block: block@0 { diff --git a/arch/arm64/boot/dts/amlogic/mesons6_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons6_drm.dtsi index 46ae538e7..53fa3e3f4 100644 --- a/arch/arm64/boot/dts/amlogic/mesons6_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons6_drm.dtsi @@ -69,6 +69,7 @@ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ pxp_mode = <0>; gfcd_enable = /bits/ 8 <1>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesons6_drm_multidisplay.dtsi b/arch/arm64/boot/dts/amlogic/mesons6_drm_multidisplay.dtsi index 23516b0a9..2b72cc564 100644 --- a/arch/arm64/boot/dts/amlogic/mesons6_drm_multidisplay.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons6_drm_multidisplay.dtsi @@ -74,6 +74,7 @@ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ pxp_mode = <0>; gfcd_enable = /bits/ 8 <0>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesons7_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons7_drm.dtsi index 252a9d0db..800626716 100644 --- a/arch/arm64/boot/dts/amlogic/mesons7_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons7_drm.dtsi @@ -67,6 +67,7 @@ primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi index d97827744..085029287 100644 --- a/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesons7d_drm.dtsi @@ -69,6 +69,7 @@ gamma_ctl = <0>; /*0:skip gamma init 1:gamma init*/ pxp_mode = <0>; gfcd_enable = /bits/ 8 <0>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesonsc2_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesonsc2_drm.dtsi index 47df67727..cc2e889b3 100644 --- a/arch/arm64/boot/dts/amlogic/mesonsc2_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonsc2_drm.dtsi @@ -98,6 +98,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesonsm1_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesonsm1_drm.dtsi index 436f44ce2..ad91b4325 100644 --- a/arch/arm64/boot/dts/amlogic/mesonsm1_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonsm1_drm.dtsi @@ -70,6 +70,8 @@ crtcmask_of_osd = <0 0>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ crtc_masks = <1 2 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ + vpu_topology: vpu_topology { vpu_blocks { osd1_block: block@0 { diff --git a/arch/arm64/boot/dts/amlogic/mesont3_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont3_drm.dtsi index 53783b947..3002eb29b 100644 --- a/arch/arm64/boot/dts/amlogic/mesont3_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont3_drm.dtsi @@ -59,6 +59,7 @@ memory-region = <&logo_reserved>; primary_plane_index = <0>; /* primary plane index for crtcs */ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont3x_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont3x_drm.dtsi index 608699c40..181593f14 100644 --- a/arch/arm64/boot/dts/amlogic/mesont3x_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont3x_drm.dtsi @@ -44,6 +44,7 @@ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ logo_skip = <0>; force_slice = <1>; /*1: enable force slice 0: disable force slice */ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont3x_drm_multidisplay.dtsi b/arch/arm64/boot/dts/amlogic/mesont3x_drm_multidisplay.dtsi index ae21d9474..25b599a9d 100644 --- a/arch/arm64/boot/dts/amlogic/mesont3x_drm_multidisplay.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont3x_drm_multidisplay.dtsi @@ -47,6 +47,7 @@ crtcmask_of_osd = <0 0 1>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ logo_skip = <0>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont5m_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont5m_drm.dtsi index 9c94dc287..5f9685f2a 100644 --- a/arch/arm64/boot/dts/amlogic/mesont5m_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont5m_drm.dtsi @@ -61,6 +61,7 @@ osd_afbc_mask = <3>; memory-region = <&logo_reserved>; crtc_masks = <0 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont5w_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont5w_drm.dtsi index cf786989d..840dd39fc 100644 --- a/arch/arm64/boot/dts/amlogic/mesont5w_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont5w_drm.dtsi @@ -40,6 +40,7 @@ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ /* OSD1&OSD2 with afbc, OSD3 has no afbc */ osd_afbc_mask = <3>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi index 488991761..9ba1b6db2 100644 --- a/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont6d_drm.dtsi @@ -44,6 +44,7 @@ osd_afbc_mask = <3>; memory-region = <&logo_reserved>; crtc_masks = <0 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/arch/arm64/boot/dts/amlogic/mesont7_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont7_drm.dtsi index 19663bd07..76e662d55 100644 --- a/arch/arm64/boot/dts/amlogic/mesont7_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont7_drm.dtsi @@ -90,6 +90,7 @@ crtcmask_of_osd = <0 0 1 2>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 1 2>; /* indicate the crtc mask of video plane */ vpu_block_select = <&vpu_blocks>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { /* 3 vpp output */ diff --git a/arch/arm64/boot/dts/amlogic/mesont7c_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesont7c_drm.dtsi index b8fd0bdf7..0455dd04f 100644 --- a/arch/arm64/boot/dts/amlogic/mesont7c_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesont7c_drm.dtsi @@ -90,6 +90,7 @@ crtcmask_of_osd = <0 0 1 2>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 1 2>; /* indicate the crtc mask of video plane */ vpu_block_select = <&vpu_blocks>; + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { /* 3 vpp output */ diff --git a/arch/arm64/boot/dts/amlogic/mesontm2_drm.dtsi b/arch/arm64/boot/dts/amlogic/mesontm2_drm.dtsi index d3ad33c0b..c283bde91 100644 --- a/arch/arm64/boot/dts/amlogic/mesontm2_drm.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesontm2_drm.dtsi @@ -63,6 +63,7 @@ crtc_masks = <1 1 1>; /*for encoder: 0:hdmi 1:lcd 2:cvbs*/ crtcmask_of_osd = <0 0 0>; /* indicate the crtc mask of osd plane */ crtcmask_of_video = <0 0>; /* indicate the crtc mask of video plane */ + afbc_aligned_size = <1>; /*0:fbdev alloc non-afbc memory 1:fbdev alloc afbc memory*/ vpu_topology: vpu_topology { vpu_blocks { diff --git a/drivers/drm/meson_gem.c b/drivers/drm/meson_gem.c index 9e11089f5..040502307 100644 --- a/drivers/drm/meson_gem.c +++ b/drivers/drm/meson_gem.c @@ -27,38 +27,7 @@ #define uvm_to_gem_obj(x) container_of(x, struct am_meson_gem_object, ubo) #define MESON_GEM_NAME "meson_gem" -#if (defined CONFIG_AMLOGIC_HEAP_CMA) || (defined CONFIG_AMLOGIC_HEAP_CODEC_MM) -static void zap_dma_buf_range(struct page *dma_page, unsigned long len) -{ - struct page *page; - void *vaddr; - int num_pages = len / PAGE_SIZE; - - if (PageHighMem(dma_page)) { - page = dma_page; - - while (num_pages > 0) { - vaddr = kmap_atomic(page); - memset(vaddr, 0, PAGE_SIZE); - kunmap_atomic(vaddr); - - /* - *Avoid wasting time zeroing memory if the process - *has been killed by SIGKILL - */ - if (fatal_signal_pending(current)) - return; - - page++; - num_pages--; - } - } else { - memset(page_address(dma_page), 0, PAGE_ALIGN(len)); - } -} -#endif - -static int am_meson_gem_alloc_ion_buff(struct am_meson_gem_object * +static int am_meson_gem_alloc_buff(struct am_meson_gem_object * meson_gem_obj, int flags) { #if (defined CONFIG_AMLOGIC_HEAP_CMA) || (defined CONFIG_AMLOGIC_HEAP_CODEC_MM) @@ -67,8 +36,7 @@ static int am_meson_gem_alloc_ion_buff(struct am_meson_gem_object * struct dma_buf_attachment *attachment = NULL; struct sg_table *sg_table = NULL; struct page *page; - bool from_heap_codecmm = false; - char DMAHEAP[][20] = {"heap-fb", "heap-gfx", "heap-codecmm"}; + char DMAHEAP[][20] = {"heap-fb", "heap-gfx"}; #endif #ifdef CONFIG_AMLOGIC_ION_DEV size_t len; @@ -99,24 +67,19 @@ static int am_meson_gem_alloc_ion_buff(struct am_meson_gem_object * #endif } else if (((flags & (MESON_USE_SCANOUT | MESON_USE_CURSOR)) != 0) || flags == 0) { #if (defined CONFIG_AMLOGIC_HEAP_CMA) || (defined CONFIG_AMLOGIC_HEAP_CODEC_MM) - for (i = 0; i < 3; i++) { + for (i = 0; i < 2; i++) { heap = dma_heap_find(DMAHEAP[i]); if (!IS_ERR_OR_NULL(heap)) { dmabuf = dma_heap_buffer_alloc(heap, meson_gem_obj->base.size, O_RDWR, DMA_HEAP_VALID_HEAP_FLAGS); if (!IS_ERR_OR_NULL(dmabuf)) { - DRM_DEBUG("%s alloc success.\n", DMAHEAP[i]); - if (i == 2) - from_heap_codecmm = true; meson_gem_obj->is_dma = true; break; + } else { + DRM_DEBUG("%s:%s alloc fail\n", __func__, DMAHEAP[i]); } - if (IS_ERR_OR_NULL(dmabuf) && i == 2) - DRM_ERROR("%s: dma_heap_alloc fail.\n", __func__); } else { DRM_DEBUG("%s: dma_heap_find %s fail.\n", __func__, DMAHEAP[i]); - if (i == 2) - DRM_ERROR("%s: dma_heap_find fail.\n", __func__); } } DRM_DEBUG("%s: dmabuf(%p) dma_heap_alloc success. size = %zu\n", @@ -218,9 +181,6 @@ static int am_meson_gem_alloc_ion_buff(struct am_meson_gem_object * sg_dma_address(sg_table->sgl) = sg_phys(sg_table->sgl); page = sg_page(sg_table->sgl); - if (from_heap_codecmm) - zap_dma_buf_range(page, meson_gem_obj->base.size); - dma_sync_sg_for_device(meson_gem_obj->base.dev->dev, sg_table->sgl, sg_table->nents, @@ -722,7 +682,7 @@ struct am_meson_gem_object *am_meson_gem_object_create(struct drm_device *dev, if ((flags & MESON_USE_VIDEO_PLANE) && (flags & MESON_USE_PROTECTED)) ret = am_meson_gem_alloc_video_secure_buff(meson_gem_obj); else - ret = am_meson_gem_alloc_ion_buff(meson_gem_obj, flags); + ret = am_meson_gem_alloc_buff(meson_gem_obj, flags); if (ret < 0) { drm_gem_object_release(&meson_gem_obj->base); goto error; diff --git a/drivers/drm/meson_of_parser.c b/drivers/drm/meson_of_parser.c index 70d7b7b25..45beda6d1 100644 --- a/drivers/drm/meson_of_parser.c +++ b/drivers/drm/meson_of_parser.c @@ -66,7 +66,7 @@ static void meson_osd_parse_config(struct drm_device *dev, struct meson_of_conf { u32 osd_afbc_mask = 0xff; u32 osd_force_slice = 0; - u32 afbc_aligned_size = 1; + u32 afbc_aligned_size = 0; int ret; ret = of_property_read_u32(dev->dev->of_node,