| To enable this feature just define CONFIG_HWCONFIG in your board | 
 | config file. | 
 |  | 
 | This implements a simple hwconfig infrastructure: an | 
 | interface for software knobs to control hardware. | 
 |  | 
 | This a is very simple implementation, i.e. it is implemented | 
 | via the `hwconfig' environment variable. Later we could write | 
 | some "hwconfig <enable|disable|list>" commands, ncurses | 
 | interface for Award BIOS-like interface, and frame-buffer | 
 | interface for AMI GUI[1] BIOS-like interface with mouse | 
 | support[2]. | 
 |  | 
 | Current implementation details/limitations: | 
 |  | 
 | 1. Doesn't support options dependencies and mutual exclusion. | 
 |    We can implement this by integrating apt-get[3] into Das | 
 |    U-Boot. But I haven't bothered yet. | 
 |  | 
 | 2. Since we don't implement a hwconfig command, i.e. we're working | 
 |    with the environement directly, there is no way to tell that | 
 |    toggling a particular option will need a reboot to take | 
 |    effect. So, for now it's advised to always reboot the | 
 |    target after modifying the hwconfig variable. | 
 |  | 
 | 3. We support hwconfig options with arguments. For example, | 
 |  | 
 |    set hwconfig "dr_usb:mode=peripheral,phy_type=ulpi" | 
 |  | 
 |    This selects three hwconfig options: | 
 |    1. dr_usb - enable Dual-Role USB controller; | 
 |    2. dr_usb_mode:peripheral - USB in Function mode; | 
 |    3. dr_usb_phy_type:ulpi - USB should work with ULPI PHYs. | 
 |  | 
 | The purpose of this simple implementation is to refine the | 
 | internal API and then we can continue improving the user | 
 | experience by adding more mature interfaces, like a hwconfig | 
 | command with bells and whistles. Or not adding, if we feel | 
 | that the current interface fits people's needs. | 
 |  | 
 | [1] http://en.wikipedia.org/wiki/American_Megatrends | 
 | [2] Regarding ncurses and GUI with mouse support -- I'm just | 
 |     kidding. | 
 | [3] The comment regarding apt-get is also a joke, meaning that | 
 |     dependency tracking could be non-trivial. For example, for | 
 |     enabling HW feature X we may need to disable Y, and turn Z | 
 |     into reduced mode (like RMII-only interface for ethernet, | 
 |     no MII). | 
 |  | 
 |     It's quite trivial to implement simple cases though. |