static void omap4_tuna_init_hw_rev(void) { int ret; int i; u32 r; /* Disable weak driver pulldown on usbb2_hsic_strobe */ r = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_USBB_HSIC); r &= ~OMAP4_USBB2_HSIC_STROBE_WD_MASK; omap4_ctrl_pad_writel(r, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_USBB_HSIC); ret = gpio_request_array(tuna_hw_rev_gpios, ARRAY_SIZE(tuna_hw_rev_gpios)); BUG_ON(ret); for (i = 0; i < ARRAY_SIZE(tuna_hw_rev_gpios); i++) tuna_hw_rev |= gpio_get_value(tuna_hw_rev_gpios[i].gpio) << i; snprintf(omap4_tuna_bd_info_string, ARRAY_SIZE(omap4_tuna_bd_info_string), "Tuna HW revision: %02x (%s), cpu %s ES%d.%d ", tuna_hw_rev, omap4_tuna_hw_rev_name(), cpu_is_omap443x() ? "OMAP4430" : "OMAP4460", (GET_OMAP_REVISION() >> 4) & 0xf, GET_OMAP_REVISION() & 0xf); pr_info("%s\n", omap4_tuna_bd_info_string); mach_panic_string = omap4_tuna_bd_info_string; }
static void gnex_get_revision(void) { size_t i; int revision = 0; static unsigned gpios[] = { 76, 75, 74, 73, 170, }; unsigned r; //disable usb HSIC pullup r = readl(CONTROL_PADCONF_CORE + 0x5c4); r &= ~(3 << 14); writel(r, CONTROL_PADCONF_CORE + 0x5c4); for (i = 0; i < ARRAY_SIZE(gpios); i++) { gpio_direction_input(gpios[i]); revision |= (!!gpio_get_value(gpios[i])) << i; } tuna_hw_rev = revision; printf("Tuna revision %d: %s\n", tuna_hw_rev, omap4_tuna_hw_rev_name()); }
int do_tuna_print_revision(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { gnex_get_revision(); const char *rev_name = omap4_tuna_hw_rev_name(); if (!rev_name) { return -1; } return 0; }