return 0;
 }
 
+/*
+ * Routine: get_board_revision
+ * Description: Returns the board revision
+ */
+int get_board_revision(void)
+{
+       int revision;
+
+       if (!omap_request_gpio(112) &&
+           !omap_request_gpio(113) &&
+           !omap_request_gpio(115)) {
+
+               omap_set_gpio_direction(112, 1);
+               omap_set_gpio_direction(113, 1);
+               omap_set_gpio_direction(115, 1);
+
+               revision = omap_get_gpio_datain(115) << 2 |
+                          omap_get_gpio_datain(113) << 1 |
+                          omap_get_gpio_datain(112);
+
+               omap_free_gpio(112);
+               omap_free_gpio(113);
+               omap_free_gpio(115);
+       } else {
+               printf("Error: unable to acquire board revision GPIOs\n");
+               revision = -1;
+       }
+
+       return revision;
+}
+
 /*
  * Routine: misc_init_r
  * Description: Configure board specific parts
        setup_net_chip();
 #endif
 
+       printf("Board revision: %d\n", get_board_revision());
        dieid_num_r();
 
        return 0;
 
        MUX_VAL(CP(CAM_XCLKB),          (IDIS | PTD | DIS | M0)) /*CAM_XCLKB*/\
        MUX_VAL(CP(CAM_WEN),            (IEN  | PTD | DIS | M0)) /*CAM_WEN*/\
        MUX_VAL(CP(CAM_STROBE),         (IDIS | PTD | DIS | M0)) /*CAM_STROBE*/\
-       MUX_VAL(CP(CSI2_DX0),           (IEN  | PTD | DIS | M0)) /*CSI2_DX0*/\
-       MUX_VAL(CP(CSI2_DY0),           (IEN  | PTD | DIS | M0)) /*CSI2_DY0*/\
+       MUX_VAL(CP(CSI2_DX0),           (IEN  | PTD | EN  | M4)) /*GPIO_112*/\
+       MUX_VAL(CP(CSI2_DY0),           (IEN  | PTD | EN  | M4)) /*GPIO_113*/\
        MUX_VAL(CP(CSI2_DX1),           (IEN  | PTD | EN  | M4)) /*GPIO_114*/\
                                                                 /* - PEN_DOWN*/\
-       MUX_VAL(CP(CSI2_DY1),           (IEN  | PTU | EN  | M4)) /*GPIO_115*/\
+       MUX_VAL(CP(CSI2_DY1),           (IEN  | PTD | EN  | M4)) /*GPIO_115*/\
  /*Audio Interface */\
        MUX_VAL(CP(MCBSP2_FSX),         (IEN  | PTD | DIS | M0)) /*McBSP2_FSX*/\
        MUX_VAL(CP(MCBSP2_CLKX),        (IEN  | PTD | DIS | M0)) /*McBSP2_CLKX*/\