Firefly wifi mainline patches
diff mbox

Message ID 20150722065835.GA12069@panicking
State New
Headers show

Commit Message

Michael Nazzareno Trimarchi July 22, 2015, 6:58 a.m. UTC
Hi

On Wed, Jul 22, 2015 at 08:45:37AM +0200, Romain Perier wrote:
> Hi Michael,
> 
> You can ask and discuss about wifi here, but could you re-send you
> patches as described in [1] please ?
> 
> Short version:
> 1. git format-patch HEAD~2  # extract your two commits
> 2. scripts/get_maintainer.pl -f  <changed_files> # list maintainers
> 3. git send-email --to --cc  <emails  listed by get_maintainer.pl>   *.patch
> 

I know how it works. Right now they are not patches but I will include them
inline with some description in it to understand what problem I still have.

The first one is an hack. Problem is this:

card answer to me that support from 2.0V but regulator is connected
to 1.8V. So capability report are wrong, for now this is just an hack

From 661979de16b3d0d010659a2e601209aa894d55f4 Mon Sep 17 00:00:00 2001
From: Michael Trimarchi <michael@amarulasolutions.com>
Date: Tue, 21 Jul 2015 16:14:13 +0200
Subject: [PATCH] dw_mmc: hack voltage response from wifi

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
---
 drivers/mmc/host/dw_mmc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Patch
diff mbox

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 923152a..5d2f38a 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -2355,8 +2355,9 @@  static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)
 	if (ret == -EPROBE_DEFER)
 		goto err_host_allocated;
 
-	if (!mmc->ocr_avail)
-		mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
+	if (!mmc->ocr_avail || !strcmp("mmc0", mmc_hostname(mmc)))
+		mmc->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34 |
+				 MMC_VDD_165_195 | MMC_VDD_20_21;
 
 	if (host->pdata->caps)
 		mmc->caps = host->pdata->caps;
-- 
1.9.1


Here I have some limitation of the frequency. If I choose more the 5Mhz
I can start to have -110 e/o timeout on firmware. Firmware is the
ap6535 firmware. Wifi is stable and working on this frequency

static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
{
	struct dw_mci_slot *slot = mmc_priv(mmc);
	struct dw_mci *host = slot->host;
	const struct dw_mci_drv_data *drv_data = host->drv_data;
	int err = 0;

	if (drv_data && drv_data->execute_tuning)
		err = drv_data->execute_tuning(slot);
	return err;
}

I have changed this to report 0 in case excute tuning is not implemented

From 4d68f996e28aa135a331e67ccd95874632276606 Mon Sep 17 00:00:00 2001
From: Michael Trimarchi <michael@amarulasolutions.com>
Date: Tue, 21 Jul 2015 15:21:48 +0200
Subject: [PATCH] firefly: add a minimal wifi settings

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
---
 arch/arm/boot/dts/rk3288-firefly.dtsi | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/rk3288-firefly.dtsi b/arch/arm/boot/dts/rk3288-firefly.dtsi
index 149b9ed..effce71 100644
--- a/arch/arm/boot/dts/rk3288-firefly.dtsi
+++ b/arch/arm/boot/dts/rk3288-firefly.dtsi
@@ -116,6 +116,19 @@ 
 		vin-supply = <&vcc_io>;
 	};
 
+	vcc_wifi: wifi-regulator {
+		compatible = "regulator-fixed";
+		gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&sdio0_pwr>;
+		regulator-name = "vcc_wifi";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		startup-delay-us = <100000>;
+		vin-supply = <&vcc_io>;
+	};
+
+
 	vcc_flash: flash-regulator {
 		compatible = "regulator-fixed";
 		regulator-name = "vcc_flash";
@@ -460,13 +473,31 @@ 
 &sdio0 {
 	broken-cd;
 	bus-width = <4>;
+	clock-freq-min-max = <400000 5000000>;
 	disable-wp;
 	non-removable;
+	cap-sd--highspeed;
 	num-slots = <1>;
 	pinctrl-names = "default";
-	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
+	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
+
+	sd-uhs-sdr104;
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	cap-sdio-irq;
+
 	vmmc-supply = <&vcc_18>;
+/*	mmc-supply = <&vcc_wifi>; */
 	status = "okay";
+
+	brcmf: bcrmf@1 {
+		compatible = "brcm,bcm4329-fmac";
+		interrupt-parent = <&gpio4>;
+		reg = <0>;
+		interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
+		interrupt-names = "host-wake";
+		status = "okay";
+	};
 };
 
 &sdmmc {