1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 277b55e8cSThomas Abraham /* 377b55e8cSThomas Abraham * Copyright (C) 2012 Samsung Electronics 477b55e8cSThomas Abraham * Donghwa Lee <dh09.lee@samsung.com> 577b55e8cSThomas Abraham */ 677b55e8cSThomas Abraham 777b55e8cSThomas Abraham #include <common.h> 877b55e8cSThomas Abraham #include <asm/io.h> 977b55e8cSThomas Abraham #include <asm/arch/system.h> 1077b55e8cSThomas Abraham exynos5_set_usbhost_mode(unsigned int mode)1177b55e8cSThomas Abrahamstatic void exynos5_set_usbhost_mode(unsigned int mode) 1277b55e8cSThomas Abraham { 1377b55e8cSThomas Abraham struct exynos5_sysreg *sysreg = 1477b55e8cSThomas Abraham (struct exynos5_sysreg *)samsung_get_base_sysreg(); 1577b55e8cSThomas Abraham 1677b55e8cSThomas Abraham /* Setting USB20PHY_CONFIG register to USB 2.0 HOST link */ 1777b55e8cSThomas Abraham if (mode == USB20_PHY_CFG_HOST_LINK_EN) { 1877b55e8cSThomas Abraham setbits_le32(&sysreg->usb20phy_cfg, 1977b55e8cSThomas Abraham USB20_PHY_CFG_HOST_LINK_EN); 2077b55e8cSThomas Abraham } else { 2177b55e8cSThomas Abraham clrbits_le32(&sysreg->usb20phy_cfg, 2277b55e8cSThomas Abraham USB20_PHY_CFG_HOST_LINK_EN); 2377b55e8cSThomas Abraham } 2477b55e8cSThomas Abraham } 2577b55e8cSThomas Abraham set_usbhost_mode(unsigned int mode)2677b55e8cSThomas Abrahamvoid set_usbhost_mode(unsigned int mode) 2777b55e8cSThomas Abraham { 2877b55e8cSThomas Abraham if (cpu_is_exynos5()) 2977b55e8cSThomas Abraham exynos5_set_usbhost_mode(mode); 3077b55e8cSThomas Abraham } 3177b55e8cSThomas Abraham exynos4_set_system_display(void)3277b55e8cSThomas Abrahamstatic void exynos4_set_system_display(void) 3377b55e8cSThomas Abraham { 3477b55e8cSThomas Abraham struct exynos4_sysreg *sysreg = 3577b55e8cSThomas Abraham (struct exynos4_sysreg *)samsung_get_base_sysreg(); 3677b55e8cSThomas Abraham unsigned int cfg = 0; 3777b55e8cSThomas Abraham 3877b55e8cSThomas Abraham /* 3977b55e8cSThomas Abraham * system register path set 4077b55e8cSThomas Abraham * 0: MIE/MDNIE 4177b55e8cSThomas Abraham * 1: FIMD Bypass 4277b55e8cSThomas Abraham */ 4377b55e8cSThomas Abraham cfg = readl(&sysreg->display_ctrl); 4477b55e8cSThomas Abraham cfg |= (1 << 1); 4577b55e8cSThomas Abraham writel(cfg, &sysreg->display_ctrl); 4677b55e8cSThomas Abraham } 4777b55e8cSThomas Abraham exynos5_set_system_display(void)4877b55e8cSThomas Abrahamstatic void exynos5_set_system_display(void) 4977b55e8cSThomas Abraham { 5077b55e8cSThomas Abraham struct exynos5_sysreg *sysreg = 5177b55e8cSThomas Abraham (struct exynos5_sysreg *)samsung_get_base_sysreg(); 5277b55e8cSThomas Abraham unsigned int cfg = 0; 5377b55e8cSThomas Abraham 5477b55e8cSThomas Abraham /* 5577b55e8cSThomas Abraham * system register path set 5677b55e8cSThomas Abraham * 0: MIE/MDNIE 5777b55e8cSThomas Abraham * 1: FIMD Bypass 5877b55e8cSThomas Abraham */ 5977b55e8cSThomas Abraham cfg = readl(&sysreg->disp1blk_cfg); 6077b55e8cSThomas Abraham cfg |= (1 << 15); 6177b55e8cSThomas Abraham writel(cfg, &sysreg->disp1blk_cfg); 6277b55e8cSThomas Abraham } 6377b55e8cSThomas Abraham set_system_display_ctrl(void)6477b55e8cSThomas Abrahamvoid set_system_display_ctrl(void) 6577b55e8cSThomas Abraham { 6677b55e8cSThomas Abraham if (cpu_is_exynos4()) 6777b55e8cSThomas Abraham exynos4_set_system_display(); 6877b55e8cSThomas Abraham else 6977b55e8cSThomas Abraham exynos5_set_system_display(); 7077b55e8cSThomas Abraham } 71