|
@@ -730,3 +730,98 @@ static struct pinctrl_map __initdata u9500_pinmap[] = {
|
|
|
DB8500_PIN_HOG("GPIO222_AJ9", out_lo), /* TX FLA0 */
|
|
|
DB8500_PIN_HOG("GPIO223_AH9", out_lo), /* TX DAT0 */
|
|
|
DB8500_PIN_HOG("GPIO224_AG9", in_pd), /* TX RDY0 */
|
|
|
+ DB8500_PIN_HOG("GPIO225_AG8", in_pd), /* CAWAKE0 */
|
|
|
+ DB8500_PIN_HOG("GPIO226_AF8", gpio_out_hi), /* ACWAKE0 */
|
|
|
+};
|
|
|
+
|
|
|
+static struct pinctrl_map __initdata u8500_pinmap[] = {
|
|
|
+ DB8500_PIN_HOG("GPIO226_AF8", gpio_out_lo), /* WLAN_PMU_EN */
|
|
|
+ DB8500_PIN_HOG("GPIO4_AH6", gpio_in_pu), /* WLAN_IRQ */
|
|
|
+};
|
|
|
+
|
|
|
+static struct pinctrl_map __initdata snowball_pinmap[] = {
|
|
|
+ /* Mux in SSP0 connected to AB8500, pull down RXD pin */
|
|
|
+ DB8500_MUX_HOG("ssp0_a_1", "ssp0"),
|
|
|
+ DB8500_PIN_HOG("GPIO145_C13", pd),
|
|
|
+ /* Always drive the MC0 DAT31DIR line high on these boards */
|
|
|
+ DB8500_PIN_HOG("GPIO21_AB3", out_hi),
|
|
|
+ /* Mux in "SM" which is used for the SMSC911x Ethernet adapter */
|
|
|
+ DB8500_MUX_HOG("sm_b_1", "sm"),
|
|
|
+ /* Drive RSTn_LAN high */
|
|
|
+ DB8500_PIN_HOG("GPIO141_C12", gpio_out_hi),
|
|
|
+ /* Accelerometer/Magnetometer */
|
|
|
+ DB8500_PIN_HOG("GPIO163_C20", gpio_in_pu), /* ACCEL_IRQ1 */
|
|
|
+ DB8500_PIN_HOG("GPIO164_B21", gpio_in_pu), /* ACCEL_IRQ2 */
|
|
|
+ DB8500_PIN_HOG("GPIO165_C21", gpio_in_pu), /* MAG_DRDY */
|
|
|
+ /* WLAN/GBF */
|
|
|
+ DB8500_PIN_HOG("GPIO161_D21", gpio_out_lo), /* WLAN_PMU_EN */
|
|
|
+ DB8500_PIN_HOG("GPIO171_D23", gpio_out_hi), /* GBF_ENA */
|
|
|
+ DB8500_PIN_HOG("GPIO215_AH13", gpio_out_lo), /* WLAN_ENA */
|
|
|
+ DB8500_PIN_HOG("GPIO216_AG12", gpio_in_pu), /* WLAN_IRQ */
|
|
|
+};
|
|
|
+
|
|
|
+/*
|
|
|
+ * passing "pinsfor=" in kernel cmdline allows for custom
|
|
|
+ * configuration of GPIOs on u8500 derived boards.
|
|
|
+ */
|
|
|
+static int __init early_pinsfor(char *p)
|
|
|
+{
|
|
|
+ pinsfor = PINS_FOR_DEFAULT;
|
|
|
+
|
|
|
+ if (strcmp(p, "u9500-21") == 0)
|
|
|
+ pinsfor = PINS_FOR_U9500;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+early_param("pinsfor", early_pinsfor);
|
|
|
+
|
|
|
+int pins_for_u9500(void)
|
|
|
+{
|
|
|
+ if (pinsfor == PINS_FOR_U9500)
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static void __init mop500_href_family_pinmaps_init(void)
|
|
|
+{
|
|
|
+ switch (pinsfor) {
|
|
|
+ case PINS_FOR_U9500:
|
|
|
+ pinctrl_register_mappings(u9500_pinmap,
|
|
|
+ ARRAY_SIZE(u9500_pinmap));
|
|
|
+ break;
|
|
|
+ case PINS_FOR_DEFAULT:
|
|
|
+ pinctrl_register_mappings(u8500_pinmap,
|
|
|
+ ARRAY_SIZE(u8500_pinmap));
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void __init mop500_pinmaps_init(void)
|
|
|
+{
|
|
|
+ pinctrl_register_mappings(mop500_family_pinmap,
|
|
|
+ ARRAY_SIZE(mop500_family_pinmap));
|
|
|
+ pinctrl_register_mappings(mop500_pinmap,
|
|
|
+ ARRAY_SIZE(mop500_pinmap));
|
|
|
+ mop500_href_family_pinmaps_init();
|
|
|
+}
|
|
|
+
|
|
|
+void __init snowball_pinmaps_init(void)
|
|
|
+{
|
|
|
+ pinctrl_register_mappings(mop500_family_pinmap,
|
|
|
+ ARRAY_SIZE(mop500_family_pinmap));
|
|
|
+ pinctrl_register_mappings(snowball_pinmap,
|
|
|
+ ARRAY_SIZE(snowball_pinmap));
|
|
|
+ pinctrl_register_mappings(u8500_pinmap,
|
|
|
+ ARRAY_SIZE(u8500_pinmap));
|
|
|
+}
|
|
|
+
|
|
|
+void __init hrefv60_pinmaps_init(void)
|
|
|
+{
|
|
|
+ pinctrl_register_mappings(mop500_family_pinmap,
|
|
|
+ ARRAY_SIZE(mop500_family_pinmap));
|
|
|
+ pinctrl_register_mappings(hrefv60_pinmap,
|
|
|
+ ARRAY_SIZE(hrefv60_pinmap));
|
|
|
+ mop500_href_family_pinmaps_init();
|
|
|
+}
|