pinctrl-0=<&i2c_ao_slave_pins>;
};
};/* end of aobus */
+
+ ion_dev {
+ compatible = "amlogic, ion_dev";
+ status = "okay";
+ memory-region = <&ion_cma_reserved>;
+ };/* end of ion_dev*/
}; /* end of soc*/
custom_maps: custom_maps {
interrupts = <0 89 1>;
interrupt-names = "rdma";
};
+
+ meson_fb: fb {
+ compatible = "amlogic, meson-tl1";
+ memory-region = <&logo_reserved>;
+ status = "disabled";
+ interrupts = <0 3 1
+ 0 56 1
+ 0 89 1>;
+ interrupt-names = "viu-vsync", "viu2-vsync", "rdma";
+ /* uboot logo,fb0/fb1 memory size,if afbcd fb0=0x01851000*/
+ display_mode_default = "1080p60hz";
+ scale_mode = <1>;
+ /** 0:VPU free scale 1:OSD free scale 2:OSD super scale */
+ display_size_default = <1920 1080 1920 2160 32>;
+ /*1920*1080*4*3 = 0x17BB000*/
+ clocks = <&clkc CLKID_VPU_CLKC_MUX>;
+ clock-names = "vpu_clkc";
+ };
+
+ ge2d {
+ compatible = "amlogic, ge2d-g12a";
+ status = "okay";
+ interrupts = <0 146 1>;
+ interrupt-names = "ge2d";
+ clocks = <&clkc CLKID_VAPB_MUX>,
+ <&clkc CLKID_G2D>,
+ <&clkc CLKID_GE2D_GATE>;
+ clock-names = "clk_vapb_0",
+ "clk_ge2d",
+ "clk_ge2d_gate";
+ reg = <0xff940000 0x10000>;
+ };
}; /* end of / */
&pinctrl_aobus {
alignment = <0x100000>;
//no-map;
};
+
+ logo_reserved:linux,meson-fb {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x800000>;
+ alignment = <0x400000>;
+ alloc-ranges = <0x7f800000 0x800000>;
+ };
+
+ ion_cma_reserved:linux,ion-dev {
+ compatible = "shared-dma-pool";
+ reusable;
+ size = <0x8000000>;
+ alignment = <0x400000>;
+ };
+
+
};
codec_mm {
status = "okay";
fr_auto_policy = <0>;
};
-};
+}; /* end of / */
+
&sd_emmc_b {
status = "okay";
sd {
f_min = <400000>;
f_max = <200000000>;
};
-}; /* end of / */
+};
&spifc {
status = "disabled";
spi-nor@0 {
cs_gpios = <&gpio BOOT_13 GPIO_ACTIVE_HIGH>;
- };
};
+};
&slc_nand {
status = "disabled";
pinctrl-0 = <&spicc0_pins_h>;
cs-gpios = <&gpio GPIOH_20 0>;
};
+
+&meson_fb {
+ status = "okay";
+ display_size_default = <1920 1080 1920 2160 32>;
+ mem_size = <0x00800000 0x1980000 0x100000 0x800000>;
+ logo_addr = "0x7f800000";
+ mem_alloc = <1>;
+ pxp_mode = <1>; /** 0:normal mode 1:pxp mode */
+};
__MESON_CPU_MAJOR_ID_TXHD,
__MESON_CPU_MAJOR_ID_G12A,
__MESON_CPU_MAJOR_ID_G12B,
+ __MESON_CPU_MAJOR_ID_TL1,
__MESON_CPU_MAJOR_ID_UNKNOWN,
};
u32 vpp_fifo_len;
u32 dummy_data;
u32 has_viu2;
+ u32 viu1_osd_count;
+ u32 viu2_index;
struct clk *vpu_clkc;
};
mutex_lock(&osd_antiflicker_mutex);
#ifdef CONFIG_AMLOGIC_MEDIA_CANVAS
- if (get_cpu_type() != MESON_CPU_MAJOR_ID_AXG) {
+ if (osd_hw.osd_meson_dev.cpu_id != MESON_CPU_MAJOR_ID_AXG) {
canvas_read(OSD1_CANVAS_INDEX, &cs);
canvas_read(OSD1_CANVAS_INDEX, &cd);
cs_addr = cs.addr;
/* recovery section */
#define INVAILD_REG_ITEM {0xffff, 0x0, 0x0, 0x0}
-#define REG_RECOVERY_TABLE 11
+#define REG_RECOVERY_TABLE 12
static struct reg_recovery_table gRecovery[REG_RECOVERY_TABLE];
static u32 recovery_enable;
{VPP_OSD_SCALE_COEF, 0x0, 0xffffffff, 0}
};
-static struct reg_item osd23_sc_recovery_table_g12a[] = {
+static struct reg_item osd2_sc_recovery_table_g12a[] = {
{OSD2_VSC_PHASE_STEP, 0x0, 0x0fffffff, 1},
{OSD2_VSC_INI_PHASE, 0x0, 0xffffffff, 1},
{OSD2_VSC_CTRL0, 0x0, 0x01fb7b7f, 1},
INVAILD_REG_ITEM, /* 0x3d17 */
{OSD2_SCALE_COEF_IDX, 0x0, 0x0000c37f, 0},
{OSD2_SCALE_COEF, 0x0, 0xffffffff, 0},
- INVAILD_REG_ITEM, /* 0x3d1a */
- INVAILD_REG_ITEM, /* 0x3d1b */
- INVAILD_REG_ITEM, /* 0x3d1c */
- INVAILD_REG_ITEM, /* 0x3d1d */
+};
+
+static struct reg_item osd3_sc_recovery_table_g12a[] = {
{OSD34_SCALE_COEF_IDX, 0x0, 0x0000c37f, 0},
{OSD34_SCALE_COEF, 0x0, 0xffffffff, 0},
{OSD34_VSC_PHASE_STEP, 0x0, 0x0fffffff, 1},
gRecovery[i].table =
(struct reg_item *)&osd12_recovery_table_g12a[0];
- i++;
- gRecovery[i].base_addr = VIU_OSD3_CTRL_STAT;
- gRecovery[i].size = sizeof(osd3_recovery_table_g12a)
- / sizeof(struct reg_item);
- gRecovery[i].table =
- (struct reg_item *)&osd3_recovery_table_g12a[0];
+ if ((osd_hw.osd_meson_dev.viu1_osd_count - 1) == DEV_OSD3) {
+ i++;
+ gRecovery[i].base_addr = VIU_OSD3_CTRL_STAT;
+ gRecovery[i].size = sizeof(osd3_recovery_table_g12a)
+ / sizeof(struct reg_item);
+ gRecovery[i].table =
+ (struct reg_item *)&osd3_recovery_table_g12a[0];
+ }
i++;
gRecovery[i].base_addr = VPP_OSD_VSC_PHASE_STEP;
i++;
gRecovery[i].base_addr = OSD2_VSC_PHASE_STEP;
- gRecovery[i].size = sizeof(osd23_sc_recovery_table_g12a)
+ gRecovery[i].size = sizeof(osd2_sc_recovery_table_g12a)
/ sizeof(struct reg_item);
gRecovery[i].table =
- (struct reg_item *)&osd23_sc_recovery_table_g12a[0];
+ (struct reg_item *)&osd2_sc_recovery_table_g12a[0];
+
+ if ((osd_hw.osd_meson_dev.viu1_osd_count - 1) == DEV_OSD3) {
+ i++;
+ gRecovery[i].base_addr = OSD34_SCALE_COEF_IDX;
+ gRecovery[i].size = sizeof(osd3_sc_recovery_table_g12a)
+ / sizeof(struct reg_item);
+ gRecovery[i].table =
+ (struct reg_item *)&osd3_sc_recovery_table_g12a[0];
+ }
i++;
gRecovery[i].base_addr = VPU_MAFBC_BLOCK_ID;
return;
memset(gRecovery, 0, sizeof(gRecovery));
- if ((cpu_id == __MESON_CPU_MAJOR_ID_G12A) ||
- (cpu_id == __MESON_CPU_MAJOR_ID_G12B))
+ if (cpu_id >= __MESON_CPU_MAJOR_ID_G12A)
recovery_regs_init_g12a();
else
recovery_regs_init_old();
}
break;
case OSD2_VSC_PHASE_STEP:
- case 0x3d10:
- case OSD34_VSC_PHASE_STEP:
/* osd2 osd 3 sc */
base = gRecovery[3].base_addr;
size = gRecovery[3].size;
ret = 0;
}
break;
- case VPU_MAFBC_BLOCK_ID:
- /* vpu mali common */
- if (backup_enable &
- HW_RESET_MALI_AFBCD_REGS) {
- ret = 1;
- break;
- }
+ case OSD34_VSC_PHASE_STEP:
+ /* osd2 osd 3 sc */
base = gRecovery[4].base_addr;
size = gRecovery[4].size;
table = gRecovery[4].table;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S0:
- /* vpu mali src0 */
+ case VPU_MAFBC_BLOCK_ID:
+ /* vpu mali common */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 1;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S1:
- /* vpu mali src1 */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S0:
+ /* vpu mali src0 */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 1;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S2:
- /* vpu mali src2 */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S1:
+ /* vpu mali src1 */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 1;
ret = 0;
}
break;
- case VIU_OSD_BLEND_CTRL:
- case VIU_OSD_BLEND_CTRL1:
- /* osd blend ctrl */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S2:
+ /* vpu mali src2 */
+ if (backup_enable &
+ HW_RESET_MALI_AFBCD_REGS) {
+ ret = 1;
+ break;
+ }
base = gRecovery[8].base_addr;
size = gRecovery[8].size;
table = gRecovery[8].table;
ret = 0;
}
break;
- case VPP_VD2_HDR_IN_SIZE:
- /* vpp blend ctrl */
+ case VIU_OSD_BLEND_CTRL:
+ case VIU_OSD_BLEND_CTRL1:
+ /* osd blend ctrl */
base = gRecovery[9].base_addr;
size = gRecovery[9].size;
table = gRecovery[9].table;
ret = 0;
}
break;
+ case VPP_VD2_HDR_IN_SIZE:
+ /* vpp blend ctrl */
+ base = gRecovery[10].base_addr;
+ size = gRecovery[10].size;
+ table = gRecovery[10].table;
+ if ((addr >= base) &&
+ (addr < base + size)) {
+ table[addr - base].val = value;
+ if (table[addr - base].recovery)
+ table[addr - base].recovery = 1;
+ ret = 0;
+ }
+ break;
default:
break;
}
(addr == VIU_OSD2_MALI_UNPACK_CTRL) ||
(addr == DOLBY_CORE2A_SWAP_CTRL1) ||
(addr == DOLBY_CORE2A_SWAP_CTRL2)) {
- table = gRecovery[10].table;
- for (i = 0; i < gRecovery[10].size; i++) {
+ table = gRecovery[11].table;
+ for (i = 0; i < gRecovery[11].size; i++) {
if (addr == table[i].addr) {
table[i].val = value;
if (table[i].recovery)
}
break;
case OSD2_VSC_PHASE_STEP:
- case 0x3d10:
- case OSD34_VSC_PHASE_STEP:
- /* osd2 osd 3 sc */
+ /* osd2 */
base = gRecovery[3].base_addr;
size = gRecovery[3].size;
table = gRecovery[3].table;
ret = 0;
}
break;
- case VPU_MAFBC_BLOCK_ID:
- /* vpu mali common */
- if (backup_enable &
- HW_RESET_MALI_AFBCD_REGS) {
- ret = 2;
- break;
- }
+ case OSD34_VSC_PHASE_STEP:
+ /* osd3 sc */
base = gRecovery[4].base_addr;
size = gRecovery[4].size;
table = gRecovery[4].table;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S0:
- /* vpu mali src0 */
+ case VPU_MAFBC_BLOCK_ID:
+ /* vpu mali common */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 2;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S1:
- /* vpu mali src1 */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S0:
+ /* vpu mali src0 */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 2;
ret = 0;
}
break;
- case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S2:
- /* vpu mali src2 */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S1:
+ /* vpu mali src1 */
if (backup_enable &
HW_RESET_MALI_AFBCD_REGS) {
ret = 2;
ret = 0;
}
break;
- case VIU_OSD_BLEND_CTRL:
- case VIU_OSD_BLEND_CTRL1:
- /* osd blend ctrl */
+ case VPU_MAFBC_HEADER_BUF_ADDR_LOW_S2:
+ /* vpu mali src2 */
+ if (backup_enable &
+ HW_RESET_MALI_AFBCD_REGS) {
+ ret = 2;
+ break;
+ }
base = gRecovery[8].base_addr;
size = gRecovery[8].size;
table = gRecovery[8].table;
ret = 0;
}
break;
- case VPP_VD2_HDR_IN_SIZE:
- /* vpp blend ctrl */
+ case VIU_OSD_BLEND_CTRL:
+ case VIU_OSD_BLEND_CTRL1:
+ /* osd blend ctrl */
base = gRecovery[9].base_addr;
size = gRecovery[9].size;
table = gRecovery[9].table;
ret = 0;
}
break;
+ case VPP_VD2_HDR_IN_SIZE:
+ /* vpp blend ctrl */
+ base = gRecovery[10].base_addr;
+ size = gRecovery[10].size;
+ table = gRecovery[10].table;
+ if ((addr >= base) &&
+ (addr < base + size)) {
+ table += (addr - base);
+ ret = 0;
+ }
+ break;
default:
break;
}
(addr == VIU_OSD2_MALI_UNPACK_CTRL) ||
(addr == DOLBY_CORE2A_SWAP_CTRL1) ||
(addr == DOLBY_CORE2A_SWAP_CTRL2)) {
- table = gRecovery[10].table;
- for (i = 0; i < gRecovery[10].size; i++) {
+ table = gRecovery[11].table;
+ for (i = 0; i < gRecovery[11].size; i++) {
if (addr == table[i].addr) {
table += i;
ret = 0;
if (!recovery_enable)
return ret;
- if ((cpu_id == __MESON_CPU_MAJOR_ID_G12A) ||
- (cpu_id == __MESON_CPU_MAJOR_ID_G12B))
+ if (cpu_id >= __MESON_CPU_MAJOR_ID_G12A)
ret = update_recovery_item_g12a(addr, value);
else
ret = update_recovery_item_old(addr, value);
if (!recovery_enable)
return ret;
- if ((cpu_id == __MESON_CPU_MAJOR_ID_G12A) ||
- (cpu_id == __MESON_CPU_MAJOR_ID_G12B))
+ if (cpu_id >= __MESON_CPU_MAJOR_ID_G12A)
ret = get_recovery_item_g12a(addr, value, mask);
else
ret = get_recovery_item_old(addr, value, mask);
struct config_para_ex_s *ge2d_config = &s_osd_clone.ge2d_config;
struct ge2d_context_s *context = s_osd_clone.ge2d_context;
#ifdef CONFIG_AMLOGIC_MEDIA_CANVAS
- if (get_cpu_type() != MESON_CPU_MAJOR_ID_AXG) {
+ if (osd_hw.osd_meson_dev.cpu_id != MESON_CPU_MAJOR_ID_AXG) {
canvas_read(OSD1_CANVAS_INDEX, &cs);
canvas_read(OSD2_CANVAS_INDEX, &cd);
cs_addr = cs.addr;
osd_update_vsync_hit();
osd_hw_reset();
} else {
- if (get_cpu_type() != __MESON_CPU_MAJOR_ID_AXG)
+ if (osd_hw.osd_meson_dev.cpu_id != __MESON_CPU_MAJOR_ID_AXG)
osd_rdma_interrupt_done_clear();
else {
osd_update_scan_mode();
/* clear osd buffer if not logo layer */
if (((logo_index < 0) || (logo_index != fb_index)) ||
(osd_meson_dev.cpu_id == __MESON_CPU_MAJOR_ID_AXG) ||
- (osd_meson_dev.cpu_id == __MESON_CPU_MAJOR_ID_G12A) ||
- ((osd_meson_dev.cpu_id == __MESON_CPU_MAJOR_ID_G12B))) {
+ (osd_meson_dev.cpu_id >= __MESON_CPU_MAJOR_ID_G12A)) {
osd_log_info("---------------clear fb%d memory %p\n",
fb_index, fbdev->fb_mem_vaddr);
set_logo_loaded();
switch (cmd) {
case VOUT_EVENT_MODE_CHANGE:
set_osd_logo_freescaler();
- for (i = 0; i < osd_meson_dev.osd_count; i++) {
+ for (i = 0; i < osd_meson_dev.viu1_osd_count; i++) {
fb_dev = gp_fbdev_list[i];
if (fb_dev == NULL)
continue;
break;
case VOUT_EVENT_OSD_BLANK:
blank = *(int *)para;
- for (i = 0; i < osd_meson_dev.osd_count; i++) {
+ for (i = 0; i < osd_meson_dev.viu1_osd_count; i++) {
fb_dev = gp_fbdev_list[i];
if (fb_dev == NULL)
continue;
break;
case VOUT_EVENT_OSD_DISP_AXIS:
disp_rect = (struct disp_rect_s *)para;
- for (i = 0; i < osd_meson_dev.osd_count; i++) {
+ for (i = 0; i < osd_meson_dev.viu1_osd_count; i++) {
if (!disp_rect)
break;
vinfo->name, cmd);
if (!strcmp(vinfo->name, "invalid"))
return -1;
- i = osd_meson_dev.osd_count - 1;
+ i = osd_meson_dev.viu2_index;
switch (cmd) {
case VOUT_EVENT_MODE_CHANGE:
fb_dev = gp_fbdev_list[i];
osd_page[0],
fb_memsize[0] >> PAGE_SHIFT);
#else
+#ifdef CONFIG_ARM64
long r = -EINVAL;
+#elif defined(CONFIG_ARM) && defined(CONFIG_HIGHMEM)
+ unsigned long r;
+#endif
unsigned long start_addr;
unsigned long end_addr;
+#ifdef CONFIG_ARM64
if (fb_rmem.base && fb_map_flag) {
+#elif defined(CONFIG_ARM) && defined(CONFIG_HIGHMEM)
+ if (fb_rmem.base) {
+#endif
if (fb_rmem.size >= (fb_memsize[0] + fb_memsize[1]
+ fb_memsize[2])) {
/* logo memory before fb0/fb1 memory, free it*/
}
osd_log_info("%s, free memory: addr:%lx\n",
__func__, start_addr);
+#ifdef CONFIG_ARM64
r = free_reserved_area(__va(start_addr),
__va(end_addr), 0, "fb-memory");
+#elif defined(CONFIG_ARM) && defined(CONFIG_HIGHMEM)
+ for (r = start_addr; r < end_addr; ) {
+ free_highmem_page(phys_to_page(r));
+ r += PAGE_SIZE;
+ }
+#endif
+
}
#endif
}
.has_viu2 = 1,
};
+static struct osd_device_data_s osd_tl1 = {
+ .cpu_id = __MESON_CPU_MAJOR_ID_TL1,
+ .osd_ver = OSD_HIGH_ONE,
+ .afbc_type = MALI_AFBC,
+ .osd_count = 3,
+ .has_deband = 1,
+ .has_lut = 1,
+ .has_rdma = 1,
+ .has_dolby_vision = 0,
+ .osd_fifo_len = 64, /* fifo len 64*8 = 512 */
+ .vpp_fifo_len = 0xfff,/* 2048 */
+ .dummy_data = 0x00808000,
+ .has_viu2 = 1,
+};
+
static const struct of_device_id meson_fb_dt_match[] = {
{
.compatible = "amlogic, meson-gxbb",
.compatible = "amlogic, meson-g12b",
.data = &osd_g12b,
},
+ {
+ .compatible = "amlogic, meson-tl1",
+ .data = &osd_tl1,
+ },
{},
};
goto failed1;
}
}
+ osd_meson_dev.viu1_osd_count = osd_meson_dev.osd_count;
+ if (osd_meson_dev.has_viu2) {
+ /* set viu1 osd count */
+ osd_meson_dev.viu1_osd_count--;
+ osd_meson_dev.viu2_index = osd_meson_dev.viu1_osd_count;
+ }
ret = osd_io_remap(osd_meson_dev.osd_ver == OSD_SIMPLE);
if (!ret) {
/* register frame buffer */
register_framebuffer(fbi);
/* create device attribute files */
- if (index <= DEV_OSD2) {
+ if (index <= (osd_meson_dev.viu1_osd_count - 1)) {
for (i = 0; i < ARRAY_SIZE(osd_attrs); i++)
ret = device_create_file(
fbi->dev, &osd_attrs[i]);
- } else if ((osd_meson_dev.osd_ver == OSD_HIGH_ONE) &&
- (index == DEV_OSD3)) {
+ } else if ((osd_meson_dev.has_viu2) &&
+ (index == osd_meson_dev.viu2_index)) {
for (i = 0; i < ARRAY_SIZE(osd_attrs_viu2); i++)
ret = device_create_file(fbi->dev, &osd_attrs_viu2[i]);
}
/* init osd reverse */
if (osd_info.index == DEV_ALL) {
- for (i = 0; i < osd_meson_dev.osd_count - 1; i++)
+ for (i = 0; i < osd_meson_dev.viu1_osd_count; i++)
osd_set_reverse_hw(i, osd_info.osd_reverse, 1);
osd_set_reverse_hw(i, osd_info.osd_reverse, 0);
- } else if (osd_info.index <= DEV_OSD2)
+ } else if (osd_info.index <= osd_meson_dev.viu1_osd_count - 1)
osd_set_reverse_hw(osd_info.index, osd_info.osd_reverse, 1);
- else if (osd_info.index == DEV_OSD3)
+ else if (osd_info.index == osd_meson_dev.viu2_index)
osd_set_reverse_hw(osd_info.index, osd_info.osd_reverse, 0);
/* register vout client */
vout_register_client(&osd_notifier_nb);
struct osd_fb_dev_s *fbdev = gp_fbdev_list[i];
fbi = fbdev->fb_info;
- if (i <= DEV_OSD2) {
+ if (i <= osd_meson_dev.viu1_osd_count - 1) {
for (j = 0; j < ARRAY_SIZE(osd_attrs); j++)
device_remove_file(
fbi->dev, &osd_attrs[j]);
- } else if ((osd_meson_dev.osd_ver == OSD_HIGH_ONE) &&
- (i == DEV_OSD3)) {
+ } else if ((osd_meson_dev.has_viu2) &&
+ (i == osd_meson_dev.viu2_index)) {
for (j = 0; j < ARRAY_SIZE(osd_attrs_viu2); j++)
device_remove_file(
fbi->dev, &osd_attrs_viu2[j]);
} else {
int i;
- for (i = 0; i < osd_hw.osd_meson_dev.osd_count; i++) {
+ for (i = 0; i < osd_hw.osd_meson_dev.viu1_osd_count; i++) {
if (osd_hw.free_scale_enable[i])
osd_hw.scan_mode[i] = SCAN_MODE_PROGRESSIVE;
if (osd_hw.osd_afbcd[i].enable)
}
#endif
break;
-#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_VECM
case __MESON_CPU_MAJOR_ID_GXL:
case __MESON_CPU_MAJOR_ID_TXL:
+#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_VECM
+
if (((hdr_osd_reg.viu_osd1_matrix_ctrl & 0x00000001)
!= 0x0) ||
((hdr_osd_reg.viu_osd1_eotf_ctl & 0x80000000)
hw_reset_flag |= HW_RESET_OSD1_REGS;
osd_hdr_on = false;
}
- break;
#endif
+ break;
case __MESON_CPU_MAJOR_ID_G12A:
case __MESON_CPU_MAJOR_ID_G12B:
+ case __MESON_CPU_MAJOR_ID_TL1:
{
int i, afbc_enable = 0;
int i;
int available_layer = 0;
- for (i = 0 ; i < osd_hw.osd_meson_dev.osd_count - 1; i++) {
+ for (i = 0 ; i < osd_hw.osd_meson_dev.viu1_osd_count; i++) {
if (osd_hw.enable[i])
available_layer++;
}
return available_layer;
}
-
static u32 blend_din_to_osd(
u32 blend_din_index, struct hw_osd_blending_s *blending)
{
static void generate_blend_din_table(struct hw_osd_blending_s *blending)
{
int i = 0;
- int osd_count = osd_hw.osd_meson_dev.osd_count - 1;
int temp1 = 0, temp2 = 0;
u32 max_order = 0, min_order = 0;
+ int osd_count = osd_hw.osd_meson_dev.viu1_osd_count;
/* reorder[i] = osd[i]'s display layer */
for (i = 0; i < OSD_BLEND_LAYERS; i++)
{
u32 org_order[HW_OSD_COUNT];
int i = 0, j = 0;
- u32 osd_count = osd_hw.osd_meson_dev.osd_count - 1;
+ u32 osd_count = osd_hw.osd_meson_dev.viu1_osd_count;
if (!blending)
return;
{
int i;
u32 reg_offset = 2;
-#ifdef OSD_BLEND_SHIFT_WORKAROUND
- u32 osd_count = osd_hw.osd_meson_dev.osd_count;
-#else
- u32 osd_count = osd_hw.osd_meson_dev.osd_count - 1;
-#endif
+ u32 osd_count = osd_hw.osd_meson_dev.viu1_osd_count;
+
if (!blend_reg)
return;
/* osd blend ctrl */
int i;
struct layer_blend_reg_s *blend_reg;
struct hw_osd_blending_s *blending;
- u32 osd_count = osd_hw.osd_meson_dev.osd_count - 1;
+ u32 osd_count = osd_hw.osd_meson_dev.viu1_osd_count;
bool update = false;
int line1;
int line2;
else if ((osd_meson->cpu_id >= __MESON_CPU_MAJOR_ID_GXL)
&& (osd_meson->cpu_id <= __MESON_CPU_MAJOR_ID_TXL))
backup_regs_init(HW_RESET_OSD1_REGS);
- else if ((osd_meson->cpu_id == __MESON_CPU_MAJOR_ID_G12A)
- || (osd_meson->cpu_id == __MESON_CPU_MAJOR_ID_G12B))
+ else if (osd_meson->cpu_id >= __MESON_CPU_MAJOR_ID_G12A)
backup_regs_init(HW_RESET_MALI_AFBCD_REGS);
else
backup_regs_init(HW_RESET_NONE);
/* fifo_depth_val: 32 or 64 *8 = 256 or 512 */
data32 |= (osd_hw.osd_meson_dev.osd_fifo_len
& 0xfffffff) << 12;
- for (idx = 0; idx < osd_hw.osd_meson_dev.osd_count - 1; idx++)
+ for (idx = 0; idx < osd_hw.osd_meson_dev.viu1_osd_count; idx++)
osd_reg_write(
hw_osd_reg_array[idx].osd_fifo_ctrl_stat, data32);
/* osd_reg_write(VIU_OSD2_FIFO_CTRL_STAT, data32_); */
/* just disable osd to avoid booting hang up */
data32 = 0x1 << 0;
data32 |= OSD_GLOBAL_ALPHA_DEF << 12;
- for (idx = 0; idx < osd_hw.osd_meson_dev.osd_count - 1; idx++)
+ for (idx = 0; idx < osd_hw.osd_meson_dev.viu1_osd_count; idx++)
osd_reg_write(
hw_osd_reg_array[idx].osd_ctrl_stat, data32);
}
data32 | 0x800000);
}
- if (idx < osd_hw.osd_meson_dev.osd_count - 1) {
+ if (idx < osd_hw.osd_meson_dev.viu1_osd_count) {
/* TODO: temp set at here,
* need move it to uboot
*/
/* fifo_depth_val: 32 or 64 *8 = 256 or 512 */
data32 |= (osd_hw.osd_meson_dev.osd_fifo_len
& 0xfffffff) << 12;
- idx = osd_hw.osd_meson_dev.osd_count - 1;
+ idx = osd_hw.osd_meson_dev.viu2_index;
osd_reg_write(
hw_osd_reg_array[idx].osd_fifo_ctrl_stat, data32);
/* osd_reg_write(VIU_OSD2_FIFO_CTRL_STAT, data32_); */