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 environment 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. 
 |