Firefly wifi mainline patches

Michael Trimarchi michael at amarulasolutions.com
Tue Jul 21 23:58:35 PDT 2015


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 at 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 at amarulasolutions.com>
---
 drivers/mmc/host/dw_mmc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

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 at 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 at 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 at 1 {
+		compatible = "brcm,bcm4329-fmac";
+		interrupt-parent = <&gpio4>;
+		reg = <0>;
+		interrupts = <30 IRQ_TYPE_EDGE_FALLING>;
+		interrupt-names = "host-wake";
+		status = "okay";
+	};
 };
 
 &sdmmc {
-- 
1.9.1


> Thanks in advance,
> Have a nice day,
> Romain
> 
> 1. https://www.kernel.org/doc/Documentation/SubmittingPatches
> 
> 
> 2015-07-22 7:58 GMT+02:00 Michael Trimarchi <michael at amarulasolutions.com>:
> > Hi
> >
> >
> > On Tue, Jul 21, 2015 at 2:51 PM, Michael Trimarchi
> > <michael at amarulasolutions.com> wrote:
> >> Hi
> >>
> >> I have managed to let my wifi working using mainline but I have
> >> problem on clocking. Right now I can not rise the clock more the 5Mhz
> >> even it's suppose to work up to 50Mhz. Anyone is working on it right
> >> now?
> >>
> >
> > I put in attach two patches that I need on my version. Another problem
> > is that execute_tuning is not defined in the dw_mmc-rockchip so
> > ENOSYS is returned. I think that we have two way:
> >
> > 1) put a stub
> > 2) define 0 as default error
> >
> > Michael
> >
> >> Michael
> >
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip at lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
> >

-- 
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |



More information about the Linux-rockchip mailing list