#define GPIO_FULLPORT(x)       ((x) >> 3)
 #define GPIO_BIT(x)            ((x) & 0x7)
 
+enum tegra_gpio_init {
+       TEGRA_GPIO_INIT_IN,
+       TEGRA_GPIO_INIT_OUT0,
+       TEGRA_GPIO_INIT_OUT1,
+};
+
+struct tegra_gpio_config {
+       u32 gpio:16;
+       u32 init:2;
+};
+
 /*
  * Tegra-specific GPIO API
  */
 
+/**
+ * Configure a list of GPIOs
+ *
+ * @param config       List of GPIO configurations
+ * @param len          Number of config items in list
+ */
+void gpio_config_table(const struct tegra_gpio_config *config, int len);
+
 void gpio_info(void);
 
 #define gpio_status()  gpio_info()
+
 #endif /* TEGRA_GPIO_H_ */
 
        return 0;
 }
 
+void gpio_config_table(const struct tegra_gpio_config *config, int len)
+{
+       int i;
+
+       for (i = 0; i < len; i++) {
+               switch (config[i].init) {
+               case TEGRA_GPIO_INIT_IN:
+                       gpio_direction_input(config[i].gpio);
+                       break;
+               case TEGRA_GPIO_INIT_OUT0:
+                       gpio_direction_output(config[i].gpio, 0);
+                       break;
+               case TEGRA_GPIO_INIT_OUT1:
+                       gpio_direction_output(config[i].gpio, 1);
+                       break;
+               }
+               set_config(config[i].gpio, 1);
+       }
+}
+
 /*
  * Display Tegra GPIO information
  */