Merge branch 'master' of /home/wd/git/u-boot/master
[oweals/u-boot.git] / board / davinci / common / misc.h
index dc3cc41330200a95404a5ccd4cdaee5c9629db55..329c369763fa28e58eec391fc82fcc930595f167 100644 (file)
 #ifndef __MISC_H
 #define __MISC_H
 
+/* pin muxer definitions */
+#define PIN_MUX_NUM_FIELDS     8       /* Per register */
+#define PIN_MUX_FIELD_SIZE     4       /* n in bits */
+#define PIN_MUX_FIELD_MASK     ((1 << PIN_MUX_FIELD_SIZE) - 1)
+
+/* pin definition */
+struct pinmux_config {
+       dv_reg          *mux;           /* Address of mux register */
+       unsigned char   value;          /* Value to set in field */
+       unsigned char   field;          /* field number */
+};
+
+/* pin table definition */
+struct pinmux_resource {
+       const struct pinmux_config      *pins;
+       const int                       n_pins;
+};
+
+#define PINMUX_ITEM(item) { \
+                               .pins = item, \
+                               .n_pins = ARRAY_SIZE(item) \
+                         }
 
 int dvevm_read_mac_address(uint8_t *buf);
 void dv_configure_mac_address(uint8_t *rom_enetaddr);
+int davinci_configure_pin_mux(const struct pinmux_config *pins, int n_pins);
+int davinci_configure_pin_mux_items(const struct pinmux_resource *item,
+                                   int n_items);
 
 #endif /* __MISC_H */