diff for duplicates of <4E31D17D.6050000@boundarydevices.com> diff --git a/a/1.txt b/N1/1.txt index 1f15041..6a49436 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -87,144 +87,3 @@ Why turn on, then off, and then back on? Isn't off, then back on sufficient? Also, why not use regulator API like panda board does? ->From board-omap4panda.c, we have -_________________________________________ -static struct regulator_consumer_supply omap4_panda_vmmc5_supply = { - .supply = "vmmc", - .dev_name = "omap_hsmmc.4", -}; - -static struct regulator_init_data panda_vmmc5 = { - .constraints = { - .valid_ops_mask = REGULATOR_CHANGE_STATUS, - }, - .num_consumer_supplies = 1, - .consumer_supplies = &omap4_panda_vmmc5_supply, -}; - -static struct fixed_voltage_config panda_vwlan = { - .supply_name = "vwl1271", - .microvolts = 1800000, /* 1.8V */ - .gpio = GPIO_WIFI_PMENA, - .startup_delay = 70000, /* 70msec */ - .enable_high = 1, - .enabled_at_boot = 0, - .init_data = &panda_vmmc5, -}; - -static struct platform_device omap_vwlan_device = { - .name = "reg-fixed-voltage", - .id = 1, - .dev = { - .platform_data = &panda_vwlan, - }, -}; -_________________________________________ - -If this can't work for you, can you list why in the change log. - -If your mmc controller doesn't yet support vmmc control. It should -be very easy to add it first. - -Thanks. - - -> + } else { -> + gpio_set_value(DA850_WLAN_EN, 0); -> + } -> +} -> + -> +static struct davinci_mmc_config da850_wl12xx_mmc_config = { -> + .set_power = wl12xx_set_power, -> + .wires = 4, -> + .max_freq = 25000000, -> + .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_NONREMOVABLE | -> + MMC_CAP_POWER_OFF_CARD, -> + .version = MMC_CTLR_VERSION_2, -> +}; -> + -> +static const short da850_wl12xx_pins[] __initconst = { -> + DA850_MMCSD1_DAT_0, DA850_MMCSD1_DAT_1, DA850_MMCSD1_DAT_2, -> + DA850_MMCSD1_DAT_3, DA850_MMCSD1_CLK, DA850_MMCSD1_CMD, -> + DA850_GPIO6_9, DA850_GPIO6_10, -> + -1 -> +}; -> + -> +static struct wl12xx_platform_data da850_wl12xx_wlan_data __initdata = { -> + .irq = -1, -> + .board_ref_clock = WL12XX_REFCLOCK_38, -> + .platform_quirks = WL12XX_PLATFORM_QUIRK_EDGE_IRQ, -> +}; -> + -> +static __init int da850_wl12xx_init(void) -> +{ -> + int ret; -> + -> + ret = davinci_cfg_reg_list(da850_wl12xx_pins); -> + if (ret) { -> + pr_err("wl12xx/mmc mux setup failed: %d\n", ret); -> + goto exit; -> + } -> + -> + ret = da850_register_mmcsd1(&da850_wl12xx_mmc_config); -> + if (ret) { -> + pr_err("wl12xx/mmc registration failed: %d\n", ret); -> + goto exit; -> + } -> + -> + ret = gpio_request_one(DA850_WLAN_EN, GPIOF_OUT_INIT_LOW, "wl12xx_en"); -> + if (ret) { -> + pr_err("Could not request wl12xx enable gpio: %d\n", ret); -> + goto exit; -> + } -> + -> + ret = gpio_request_one(DA850_WLAN_IRQ, GPIOF_IN, "wl12xx_irq"); -> + if (ret) { -> + pr_err("Could not request wl12xx irq gpio: %d\n", ret); -> + goto free_wlan_en; -> + } -> + -> + da850_wl12xx_wlan_data.irq = gpio_to_irq(DA850_WLAN_IRQ); -> + -> + ret = wl12xx_set_platform_data(&da850_wl12xx_wlan_data); -> + if (ret) { -> + pr_err("Could not set wl12xx data: %d\n", ret); -> + goto free_wlan_irq; -> + } -> + -> + return 0; -> + -> +free_wlan_irq: -> + gpio_free(DA850_WLAN_IRQ); -> + -> +free_wlan_en: -> + gpio_free(DA850_WLAN_EN); -> + -> +exit: -> + return ret; -> +} -> + -> +#else /* CONFIG_DA850_WL12XX */ -> + -> +static __init int da850_wl12xx_init(void) -> +{ -> + return 0; -> +} -> + -> +#endif /* CONFIG_DA850_WL12XX */ -> + -> #define DA850EVM_SATA_REFCLKPN_RATE (100 * 1000 * 1000) -> -> static __init void da850_evm_init(void) -> @@ -1171,6 +1280,11 @@ static __init void da850_evm_init(void) -> if (ret) -> pr_warning("da850_evm_init: mmcsd0 registration failed:" -> " %d\n", ret); -> + -> + ret = da850_wl12xx_init(); -> + if (ret) -> + pr_warning("da850_evm_init: wl12xx initialization" -> + " failed: %d\n", ret); -> } -> -> davinci_serial_init(&da850_evm_uart_config); diff --git a/a/content_digest b/N1/content_digest index db0d76e..c00ae2e 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,13 +1,9 @@ "ref\0B85A65D85D7EB246BE421B3FB0FBB593024DD2CEC2@dbde02.ent.ti.com\0" "ref\01311886373-3060-1-git-send-email-ido@wizery.com\0" - "From\0Troy Kisky <troy.kisky@boundarydevices.com>\0" - "Subject\0Re: [PATCH v3] davinci: Add wl1271/wlan support for AM18x\0" + "From\0troy.kisky@boundarydevices.com (Troy Kisky)\0" + "Subject\0[PATCH v3] davinci: Add wl1271/wlan support for AM18x\0" "Date\0Thu, 28 Jul 2011 14:15:41 -0700\0" - "To\0Ido Yariv <ido@wizery.com>\0" - "Cc\0Sekhar Nori <nsekhar@ti.com>" - davinci-linux-open-source@linux.davincidsp.com - linux-arm-kernel@lists.infradead.org - " linux-mmc@vger.kernel.org\0" + "To\0linux-arm-kernel@lists.infradead.org\0" "\00:1\0" "b\0" "On 7/28/2011 1:52 PM, Ido Yariv wrote:\n" @@ -98,147 +94,6 @@ "Why turn on, then off, and then back on?\n" "Isn't off, then back on sufficient?\n" "\n" - "Also, why not use regulator API like panda board does?\n" - ">From board-omap4panda.c, we have\n" - "_________________________________________\n" - "static struct regulator_consumer_supply omap4_panda_vmmc5_supply = {\n" - " .supply = \"vmmc\",\n" - " .dev_name = \"omap_hsmmc.4\",\n" - "};\n" - "\n" - "static struct regulator_init_data panda_vmmc5 = {\n" - " .constraints = {\n" - " .valid_ops_mask = REGULATOR_CHANGE_STATUS,\n" - " },\n" - " .num_consumer_supplies = 1,\n" - " .consumer_supplies = &omap4_panda_vmmc5_supply,\n" - "};\n" - "\n" - "static struct fixed_voltage_config panda_vwlan = {\n" - " .supply_name = \"vwl1271\",\n" - " .microvolts = 1800000, /* 1.8V */\n" - " .gpio = GPIO_WIFI_PMENA,\n" - " .startup_delay = 70000, /* 70msec */\n" - " .enable_high = 1,\n" - " .enabled_at_boot = 0,\n" - " .init_data = &panda_vmmc5,\n" - "};\n" - "\n" - "static struct platform_device omap_vwlan_device = {\n" - " .name = \"reg-fixed-voltage\",\n" - " .id = 1,\n" - " .dev = {\n" - " .platform_data = &panda_vwlan,\n" - " },\n" - "};\n" - "_________________________________________\n" - "\n" - "If this can't work for you, can you list why in the change log.\n" - "\n" - "If your mmc controller doesn't yet support vmmc control. It should\n" - "be very easy to add it first.\n" - "\n" - "Thanks.\n" - "\n" - "\n" - "> +\t} else {\n" - "> +\t\tgpio_set_value(DA850_WLAN_EN, 0);\n" - "> +\t}\n" - "> +}\n" - "> +\n" - "> +static struct davinci_mmc_config da850_wl12xx_mmc_config = {\n" - "> +\t.set_power\t= wl12xx_set_power,\n" - "> +\t.wires\t\t= 4,\n" - "> +\t.max_freq\t= 25000000,\n" - "> +\t.caps\t\t= MMC_CAP_4_BIT_DATA | MMC_CAP_NONREMOVABLE |\n" - "> +\t\t\t MMC_CAP_POWER_OFF_CARD,\n" - "> +\t.version\t= MMC_CTLR_VERSION_2,\n" - "> +};\n" - "> +\n" - "> +static const short da850_wl12xx_pins[] __initconst = {\n" - "> +\tDA850_MMCSD1_DAT_0, DA850_MMCSD1_DAT_1, DA850_MMCSD1_DAT_2,\n" - "> +\tDA850_MMCSD1_DAT_3, DA850_MMCSD1_CLK, DA850_MMCSD1_CMD,\n" - "> +\tDA850_GPIO6_9, DA850_GPIO6_10,\n" - "> +\t-1\n" - "> +};\n" - "> +\n" - "> +static struct wl12xx_platform_data da850_wl12xx_wlan_data __initdata = {\n" - "> +\t.irq\t\t\t= -1,\n" - "> +\t.board_ref_clock\t= WL12XX_REFCLOCK_38,\n" - "> +\t.platform_quirks\t= WL12XX_PLATFORM_QUIRK_EDGE_IRQ,\n" - "> +};\n" - "> +\n" - "> +static __init int da850_wl12xx_init(void)\n" - "> +{\n" - "> +\tint ret;\n" - "> +\n" - "> +\tret = davinci_cfg_reg_list(da850_wl12xx_pins);\n" - "> +\tif (ret) {\n" - "> +\t\tpr_err(\"wl12xx/mmc mux setup failed: %d\\n\", ret);\n" - "> +\t\tgoto exit;\n" - "> +\t}\n" - "> +\n" - "> +\tret = da850_register_mmcsd1(&da850_wl12xx_mmc_config);\n" - "> +\tif (ret) {\n" - "> +\t\tpr_err(\"wl12xx/mmc registration failed: %d\\n\", ret);\n" - "> +\t\tgoto exit;\n" - "> +\t}\n" - "> +\n" - "> +\tret = gpio_request_one(DA850_WLAN_EN, GPIOF_OUT_INIT_LOW, \"wl12xx_en\");\n" - "> +\tif (ret) {\n" - "> +\t\tpr_err(\"Could not request wl12xx enable gpio: %d\\n\", ret);\n" - "> +\t\tgoto exit;\n" - "> +\t}\n" - "> +\n" - "> +\tret = gpio_request_one(DA850_WLAN_IRQ, GPIOF_IN, \"wl12xx_irq\");\n" - "> +\tif (ret) {\n" - "> +\t\tpr_err(\"Could not request wl12xx irq gpio: %d\\n\", ret);\n" - "> +\t\tgoto free_wlan_en;\n" - "> +\t}\n" - "> +\n" - "> +\tda850_wl12xx_wlan_data.irq = gpio_to_irq(DA850_WLAN_IRQ);\n" - "> +\n" - "> +\tret = wl12xx_set_platform_data(&da850_wl12xx_wlan_data);\n" - "> +\tif (ret) {\n" - "> +\t\tpr_err(\"Could not set wl12xx data: %d\\n\", ret);\n" - "> +\t\tgoto free_wlan_irq;\n" - "> +\t}\n" - "> +\n" - "> +\treturn 0;\n" - "> +\n" - "> +free_wlan_irq:\n" - "> +\tgpio_free(DA850_WLAN_IRQ);\n" - "> +\n" - "> +free_wlan_en:\n" - "> +\tgpio_free(DA850_WLAN_EN);\n" - "> +\n" - "> +exit:\n" - "> +\treturn ret;\n" - "> +}\n" - "> +\n" - "> +#else /* CONFIG_DA850_WL12XX */\n" - "> +\n" - "> +static __init int da850_wl12xx_init(void)\n" - "> +{\n" - "> +\treturn 0;\n" - "> +}\n" - "> +\n" - "> +#endif /* CONFIG_DA850_WL12XX */\n" - "> +\n" - "> #define DA850EVM_SATA_REFCLKPN_RATE\t(100 * 1000 * 1000)\n" - "> \n" - "> static __init void da850_evm_init(void)\n" - "> @@ -1171,6 +1280,11 @@ static __init void da850_evm_init(void)\n" - "> \t\tif (ret)\n" - "> \t\t\tpr_warning(\"da850_evm_init: mmcsd0 registration failed:\"\n" - "> \t\t\t\t\t\" %d\\n\", ret);\n" - "> +\n" - "> +\t\tret = da850_wl12xx_init();\n" - "> +\t\tif (ret)\n" - "> +\t\t\tpr_warning(\"da850_evm_init: wl12xx initialization\"\n" - "> +\t\t\t\t \" failed: %d\\n\", ret);\n" - "> \t}\n" - "> \n" - "> \tdavinci_serial_init(&da850_evm_uart_config);" + Also, why not use regulator API like panda board does? -2778617604668fe3279460ca3d615414efafe4ee72e7d3116f845ff4da9ef891 +88a5a0ac32de40fa5f18b7de0ac4fd9ad9b5c89f59aa7bf8167c2fa34e6a64c3
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.