static void soc_init(device_t dev) { ram_resource(dev, 0, (uintptr_t)_dram/KiB, sdram_size_mb()*(MiB/KiB)); if (vboot_skip_display_init()) printk(BIOS_INFO, "Skipping display init.\n"); #if !IS_ENABLED(CONFIG_SKIP_DISPLAY_INIT_HACK) else rk_display_init(dev, (uintptr_t)_framebuffer, _framebuffer_size); #endif }
static void soc_init(struct device *dev) { /* * Reserve the whole TZRAM area because it will be marked as secure-only * by BL31 and can not be accessed by the non-secure kernel. */ mmio_resource(dev, 1, (TZRAM_BASE / KiB), (TZRAM_SIZE / KiB)); if (IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) && display_init_required()) rk_display_init(dev); else printk(BIOS_INFO, "Display initialization disabled.\n"); /* We don't need big CPUs, but bring them up as a courtesy to Linux. */ rkclk_configure_cpu(APLL_600_MHZ, CPU_CLUSTER_BIG); }
static int rk_vop_probe(struct udevice *dev) { struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); const void *blob = gd->fdt_blob; struct rk_vop_priv *priv = dev_get_priv(dev); struct udevice *reg; int ret, port, node; /* Before relocation we don't need to do anything */ if (!(gd->flags & GD_FLG_RELOC)) return 0; priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); priv->regs = (struct rk3288_vop *)dev_get_addr(dev); /* lcdc(vop) iodomain select 1.8V */ rk_setreg(&priv->grf->io_vsel, 1 << 0); /* * Try some common regulators. We should really get these from the * device tree somehow. */ ret = regulator_autoset_by_name("vcc18_lcd", ®); if (ret) debug("%s: Cannot autoset regulator vcc18_lcd\n", __func__); ret = regulator_autoset_by_name("VCC18_LCD", ®); if (ret) debug("%s: Cannot autoset regulator VCC18_LCD\n", __func__); ret = regulator_autoset_by_name("vdd10_lcd_pwren_h", ®); if (ret) { debug("%s: Cannot autoset regulator vdd10_lcd_pwren_h\n", __func__); } ret = regulator_autoset_by_name("vdd10_lcd", ®); if (ret) { debug("%s: Cannot autoset regulator vdd10_lcd\n", __func__); } ret = regulator_autoset_by_name("VDD10_LCD", ®); if (ret) { debug("%s: Cannot autoset regulator VDD10_LCD\n", __func__); } ret = regulator_autoset_by_name("vcc33_lcd", ®); if (ret) debug("%s: Cannot autoset regulator vcc33_lcd\n", __func__); /* * Try all the ports until we find one that works. In practice this * tries EDP first if available, then HDMI. */ port = fdt_subnode_offset(blob, dev->of_offset, "port"); if (port < 0) return -EINVAL; for (node = fdt_first_subnode(blob, port); node > 0; node = fdt_next_subnode(blob, node)) { ret = rk_display_init(dev, plat->base, VIDEO_BPP16, node); if (ret) debug("Device failed: ret=%d\n", ret); if (!ret) break; } return ret; }