1a937fd16SIgor Grinberg /* 2a937fd16SIgor Grinberg * (C) Copyright 2014 CompuLab, Ltd. <www.compulab.co.il> 3a937fd16SIgor Grinberg * 4a937fd16SIgor Grinberg * Authors: Igor Grinberg <grinberg@compulab.co.il> 5a937fd16SIgor Grinberg * 6a937fd16SIgor Grinberg * SPDX-License-Identifier: GPL-2.0+ 7a937fd16SIgor Grinberg */ 8a937fd16SIgor Grinberg 9a937fd16SIgor Grinberg #include <common.h> 10a937fd16SIgor Grinberg #include <asm/bootm.h> 11*959bc1d5SIgor Grinberg #include <asm/gpio.h> 12a937fd16SIgor Grinberg 13a937fd16SIgor Grinberg #include "common.h" 14a937fd16SIgor Grinberg #include "eeprom.h" 15a937fd16SIgor Grinberg 16a937fd16SIgor Grinberg void cl_print_pcb_info(void) 17a937fd16SIgor Grinberg { 18a937fd16SIgor Grinberg u32 board_rev = get_board_rev(); 19a937fd16SIgor Grinberg u32 rev_major = board_rev / 100; 20a937fd16SIgor Grinberg u32 rev_minor = board_rev - (rev_major * 100); 21a937fd16SIgor Grinberg 22a937fd16SIgor Grinberg if ((rev_minor / 10) * 10 == rev_minor) 23a937fd16SIgor Grinberg rev_minor = rev_minor / 10; 24a937fd16SIgor Grinberg 25a937fd16SIgor Grinberg printf("PCB: %u.%u\n", rev_major, rev_minor); 26a937fd16SIgor Grinberg } 27*959bc1d5SIgor Grinberg 28*959bc1d5SIgor Grinberg #ifdef CONFIG_CMD_USB 29*959bc1d5SIgor Grinberg int cl_usb_hub_init(int gpio, const char *label) 30*959bc1d5SIgor Grinberg { 31*959bc1d5SIgor Grinberg if (gpio_request(gpio, label)) { 32*959bc1d5SIgor Grinberg printf("Error: can't obtain GPIO%d for %s", gpio, label); 33*959bc1d5SIgor Grinberg return -1; 34*959bc1d5SIgor Grinberg } 35*959bc1d5SIgor Grinberg 36*959bc1d5SIgor Grinberg gpio_direction_output(gpio, 0); 37*959bc1d5SIgor Grinberg udelay(10); 38*959bc1d5SIgor Grinberg gpio_set_value(gpio, 1); 39*959bc1d5SIgor Grinberg udelay(1000); 40*959bc1d5SIgor Grinberg return 0; 41*959bc1d5SIgor Grinberg } 42*959bc1d5SIgor Grinberg 43*959bc1d5SIgor Grinberg void cl_usb_hub_deinit(int gpio) 44*959bc1d5SIgor Grinberg { 45*959bc1d5SIgor Grinberg gpio_free(gpio); 46*959bc1d5SIgor Grinberg } 47*959bc1d5SIgor Grinberg #endif 48