/* coordinate between sgx, omapdss, dsscomp and ion needs */ void omap_android_display_setup(struct omap_dss_board_info *dss, struct dsscomp_platform_data *dsscomp, struct sgx_omaplfb_platform_data *sgx, struct omapfb_platform_data *fb, struct omap_ion_platform_data *ion) { struct sgx_omaplfb_config *p_sgx_config = NULL; struct omap_android_display_data mem = { .bpp = 4, .width = 1920, .height = 1080, }; if (!sgx || !sgx->configs) p_sgx_config = sgx_omaplfb_get(0); else p_sgx_config = &(sgx->configs[0]); get_display_size(dss, &mem); set_tiler1d_slot_size(dsscomp, &mem); set_vram_sizes(p_sgx_config, fb, &mem); if (ion) set_ion_carveouts(p_sgx_config, ion, &mem); sgx_omaplfb_set(0, p_sgx_config); }
static void __init omap5panda_display_init(void) { struct sgx_omaplfb_config data = { .tiler2d_buffers = 0, .swap_chain_length = 2, .vram_buffers = 2, }; omapfb_set_platform_data(&panda_fb_pdata); omap_vram_set_sdram_vram(OMAP5_SEVM_FB_RAM_SIZE, 0); sgx_omaplfb_set(0, &data); i2c_register_board_info(0, hdmi_i2c_eeprom, ARRAY_SIZE(hdmi_i2c_eeprom)); platform_device_register(&hdmi_edid_device); omap5panda_hdmi_init(); omap_display_init(&panda5_dss_data); } static const struct usbhs_omap_board_data usbhs_bdata __initconst = { .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, .port_mode[1] = OMAP_EHCI_PORT_MODE_HSIC, .port_mode[2] = OMAP_EHCI_PORT_MODE_HSIC, .phy_reset = true, .reset_gpio_port[0] = -EINVAL, .reset_gpio_port[1] = GPIO_HUB_NRESET, .reset_gpio_port[2] = GPIO_ETH_NRESET }; static void __init omap_ehci_ohci_init(void) { struct clk *phy_ref_clk; /* FREF_CLK1 provides the 19.2 MHz reference clock to the PHY */ phy_ref_clk = clk_get(NULL, "auxclk1_ck"); if (IS_ERR(phy_ref_clk)) { pr_err("Cannot request auxclk1\n"); } else { clk_set_rate(phy_ref_clk, 19200000); clk_enable(phy_ref_clk); } omap_mux_init_gpio(GPIO_HUB_NRESET, OMAP_PIN_OUTPUT | OMAP_PIN_OFF_NONE | OMAP_MUX_MODE6); omap_mux_init_gpio(GPIO_ETH_NRESET, OMAP_PIN_OUTPUT | OMAP_PIN_OFF_NONE | OMAP_MUX_MODE6); usbhs_init(&usbhs_bdata); return; } static void __init omap_5_panda_init(void) { omap5_mux_init(board_mux, NULL, OMAP_PACKAGE_CBL); omap_sdrc_init(NULL, NULL); omap_init_board_version(BOARD_MAKE_VERSION(BOARD_OMAP5_UEVM, 0)); omap_create_board_props(); omap5pandai2c_init(); omap_msecure_init(); omap5_pmic_init(1, PALMAS_NAME, OMAP44XX_IRQ_SYS_1N, PALMAS_DATA, "twl6040", OMAP44XX_IRQ_SYS_2N, &twl6040_data); omap5_board_serial_init(); platform_device_register(&dummy_sd_regulator_device); omap_ehci_ohci_init(); /* TODO: Once the board identification is passed in from the * bootloader pass in the HACK board ID to the conn board file */ omap4plus_connectivity_init(); omap_hsmmc_init(mmc); usb_dwc3_init(); platform_add_devices(panda5_devices, ARRAY_SIZE(panda5_devices)); omap_init_dmm_tiler(); omap5_register_ion(); omap5panda_display_init(); } static void __init omap_panda5_reserve(void) { omap_rproc_reserve_cma(RPROC_CMA_OMAP5); omap5_ion_init(); omap_reserve(); }