Skip to contentSkip to conversation

Firefly wifi mainline patches

DISCUSSION Michael Trimarchi 4 participants 7 messages Jul 21, 2015 – Aug 2, 2015 2 messages not in the archive

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

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?

Michael

#1 lore raw

Hi

Quoted 7 lines · Michael Trimarchi

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

Quoted 1 line

Michael

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

---
 drivers/mmc/host/dw_mmc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/mmc/host/dw_mmc.c +3 -2
index 923152a..5d2f38a 100644
@@ -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;
Signature · 1 line
1.9.1

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

---
 arch/arm/boot/dts/rk3288-firefly.dtsi | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)
arch/arm/boot/dts/rk3288-firefly.dtsi +32 -1
index 149b9ed..effce71 100644
@@ -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 {
Signature · 1 line
1.9.1

_______________________________________________
Linux-rockchip mailing list [email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

A message that is not in the archive (sent off-list or not yet received): CAOf5uw=cvu9ST+QexgMQP06xQVAz6th_EepfxQOAXNDrWopf6Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#3 lore raw

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

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-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>:

Quoted 29 lines

Hi

Quoted 7 lines · Michael Trimarchi

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

Quoted 1 line

Michael

_______________________________________________
Linux-rockchip mailing list [email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

#4 lore raw

Hi

Quoted 10 lines · Romain Perier

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

Quoted 1 line

From 661979de16b3d0d010659a2e601209aa894d55f4 Mon Sep 17 00:00:00 2001

From: Michael Trimarchi <[email protected]>
Date: Tue, 21 Jul 2015 16:14:13 +0200
Subject: [PATCH] dw_mmc: hack voltage response from wifi

---
 drivers/mmc/host/dw_mmc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
drivers/mmc/host/dw_mmc.c +3 -2
index 923152a..5d2f38a 100644
@@ -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;
Signature · 20 lines
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
Quoted 1 line

From 4d68f996e28aa135a331e67ccd95874632276606 Mon Sep 17 00:00:00 2001

From: Michael Trimarchi <[email protected]>
Date: Tue, 21 Jul 2015 15:21:48 +0200
Subject: [PATCH] firefly: add a minimal wifi settings

---
 arch/arm/boot/dts/rk3288-firefly.dtsi | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)
arch/arm/boot/dts/rk3288-firefly.dtsi +32 -1
index 149b9ed..effce71 100644
@@ -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 {
Signature · 1 line
1.9.1
Quoted 37 lines

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 <[email protected]>:

Quoted 29 lines

Hi

Quoted 7 lines · Michael Trimarchi

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

Quoted 1 line

Michael

_______________________________________________
Linux-rockchip mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-rockchip

Signature · 4 lines
| Michael Nazzareno Trimarchi                     Amarula Solutions BV |
| COO  -  Founder                                      Cruquiuskade 47 |
| +31(0)851119172                                 Amsterdam 1018 AM NL |
|                  [`as] http://www.amarulasolutions.com               |
#5 lore raw
In reply to a message not in the archive

Hi,

Quoted 13 lines · Michael Trimarchi

Hi

Quoted 7 lines · Michael Trimarchi

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?

Quoted 6 lines

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

I don't think you should be trying to tune until the tuning patches are landed. Alexandru sent them up a while ago but they need to be respun. I seem to remember Alexandru saying that it decided your controller was UHS capable if you didn't specify any capabilities, so maybe that's it.

Try adding this to your SDIO port in the dts:

cap-sd-highspeed;

A message that is not in the archive (sent off-list or not yet received): CAD=FV=U6DmLr_VC3XKs+ALKKhwsg+JXmo+52aEoWOkvkXr3UGw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org

#7 lore raw

Hi

Quoted 30 lines · Doug Anderson

Hi,

Quoted 13 lines · Michael Trimarchi

Hi

Quoted 7 lines · Michael Trimarchi

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?

Quoted 6 lines

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

I don't think you should be trying to tune until the tuning patches are landed. Alexandru sent them up a while ago but they need to be respun. I seem to remember Alexandru saying that it decided your controller was UHS capable if you didn't specify any capabilities, so maybe that's it.

Quoted 3 lines

Try adding this to your SDIO port in the dts:

cap-sd-highspeed;

I have rebase on https://github.com/mmind/linux-rockchip
mainline/devel/upstream. Need to do some more test here and not yet ready for mainline

From f076b38f6056404cea11b1c5f4595dfe5b7e5aef Mon Sep 17 00:00:00 2001
From: Michael Trimarchi <michael-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
Date: Thu, 23 Jul 2015 21:39:44 +0200
Subject: [PATCH] ARM: dts: rockchip: add wifi support to firefly board

This patch add the wifi support to firefly. In order to use the user need the ap6535 specific wifi firmware. vcc_wifi regulator is set to 2V in order to workaround the fact that the card answer to not support 1.8V power.

---
 arch/arm/boot/dts/rk3288-firefly.dtsi | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)
arch/arm/boot/dts/rk3288-firefly.dtsi +33 -2
index 20fa0ef..2958cd2 100644
@@ -117,6 +117,21 @@
 		vin-supply = <&vcc_io>;
 	};
 
+	vcc_wifi: wifi-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&sdio0_pwr>;
+		regulator-name = "vcc_wifi";
+		regulator-min-microvolt = <2000000>;
+		regulator-max-microvolt = <2000000>;
+		startup-delay-us = <100000>;
+		regulator-always-on;
+		vin-supply = <&vcc_io>;
+	};
+
+
 	vcc_flash: flash-regulator {
 		compatible = "regulator-fixed";
 		regulator-name = "vcc_flash";
@@ -440,13 +455,29 @@
 &sdio0 {
 	broken-cd;
 	bus-width = <4>;
+	clock-freq-min-max = <400000 20000000>;
 	disable-wp;
 	non-removable;
+	cap-sd-highspeed;
 	num-slots = <1>;
 	pinctrl-names = "default";
-	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
-	vmmc-supply = <&vcc_18>;
+	pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
+
+	sd-uhs-sdr12;
+	sd-uhs-sdr25;
+	cap-sdio-irq;
+
+	vmmc-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 {
Signature · 7 lines
1.9.1

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

Hi all

Quoted 37 lines · Michael Trimarchi

Hi

Quoted 33 lines · Doug Anderson

Hi,

Quoted 13 lines · Michael Trimarchi

Hi

Quoted 7 lines · Michael Trimarchi

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?

Quoted 6 lines

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

I don't think you should be trying to tune until the tuning patches are landed. Alexandru sent them up a while ago but they need to be respun. I seem to remember Alexandru saying that it decided your controller was UHS capable if you didn't specify any capabilities, so maybe that's it.

Try adding this to your SDIO port in the dts:

cap-sd-highspeed;

+ io_domains: io-domains {
+ compatible = "rockchip,rk3288-io-voltage-domain";
+ rockchip,grf = <&grf>;
+
+ wifi-supply = <&vcc_18>;

I finally manage to have it running at 50Mhz in high speed mode. I need to do more testing but could be a problem
on invalid setting on logic. I will try to send up patches

Michael

Quoted 85 lines

I have rebase on https://github.com/mmind/linux-rockchip
mainline/devel/upstream. Need to do some more test here and not yet ready for mainline

From f076b38f6056404cea11b1c5f4595dfe5b7e5aef Mon Sep 17 00:00:00 2001
From: Michael Trimarchi <michael-dyjBcgdgk7Pe9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
Date: Thu, 23 Jul 2015 21:39:44 +0200
Subject: [PATCH] ARM: dts: rockchip: add wifi support to firefly board

This patch add the wifi support to firefly. In order to use the user need the ap6535 specific wifi firmware. vcc_wifi regulator is set to 2V in order to workaround the fact that the card answer to not support 1.8V power.

---
 arch/arm/boot/dts/rk3288-firefly.dtsi | 35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)
arch/arm/boot/dts/rk3288-firefly.dtsi +33 -3
index 20fa0ef..2958cd2 100644
@@ -117,6 +117,21 @@
                vin-supply = <&vcc_io>;
        };
 
+       vcc_wifi: wifi-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdio0_pwr>;
+               regulator-name = "vcc_wifi";
+               regulator-min-microvolt = <2000000>;
+               regulator-max-microvolt = <2000000>;
+               startup-delay-us = <100000>;
+               regulator-always-on;
+               vin-supply = <&vcc_io>;
+       };
+
+
        vcc_flash: flash-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vcc_flash";
@@ -440,13 +455,29 @@
 &sdio0 {
        broken-cd;
        bus-width = <4>;
+       clock-freq-min-max = <400000 20000000>;
        disable-wp;
        non-removable;
+       cap-sd-highspeed;
        num-slots = <1>;
        pinctrl-names = "default";
-       pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
-       vmmc-supply = <&vcc_18>;
+       pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>;
+
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       cap-sdio-irq;
+
+       vmmc-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 {
--

1.9.1

--

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