static struct platform_t __init *platform_detect(void) { enum bcm47xx_board board; const char *board_name; board = bcm47xx_board_get(); board_name = bcm47xx_board_get_name(); switch(board) { case BCM47XX_BOARD_BUFFALO_WBR2_G54: return &platforms[WBR2_G54]; case BCM47XX_BOARD_BUFFALO_WLA2_G54L: return &platforms[WLA2_G54L]; case BCM47XX_BOARD_LINKSYS_WRT54G: return &platforms[WRT54G]; case BCM47XX_BOARD_NETGEAR_WNDR3700V3: return &platforms[WNDR3700V3]; case BCM47XX_BOARD_UNKNOWN: case BCM47XX_BOARD_NO: printk(MODULE_NAME ": unknown board found, try legacy detect\n"); printk(MODULE_NAME ": please open a ticket at https://dev.openwrt.org and attach the complete nvram\n"); return platform_detect_legacy(); default: printk(MODULE_NAME ": board was detected as \"%s\", and kernel should handle it\n", board_name); return NULL; } }
void __init bcm47xx_workarounds(void) { enum bcm47xx_board board = bcm47xx_board_get(); switch (board) { case BCM47XX_BOARD_NETGEAR_WNR3500L: bcm47xx_workarounds_enable_usb_power(12); break; case BCM47XX_BOARD_NETGEAR_WNDR3400V2: case BCM47XX_BOARD_NETGEAR_WNDR3400_V3: bcm47xx_workarounds_enable_usb_power(21); break; default: /* No workaround(s) needed */ break; } }