Re: [PATCH 12/14] ARM: dts: qs600: add pwrseq support to WLAN
On 09/18/15 15:32, Srinivas Kandagatla wrote: > Add pwrseq support to sdcc4 which would enable a proper reset of WLAN > without ugly hacks in the board support file. > > Signed-off-by: Srinivas KandagatlaThanks Srini! Acked-by: Igor Grinberg > --- > arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts | 32 > + > 1 file changed, 32 insertions(+) > > diff --git a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > index 8aac3be..cc9d942 100644 > --- a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > +++ b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > @@ -1,4 +1,6 @@ > #include "qcom-apq8064-v2.0.dtsi" > +#include > +#include > > / { > model = "CompuLab CM-QS600"; > @@ -12,6 +14,20 @@ > stdout-path = "serial0:115200n8"; > }; > > + pwrseq { > + #address-cells = <1>; > + #size-cells = <1>; > + ranges; > + compatible = "simple-bus"; > + > + sdcc4_pwrseq: sdcc4_pwrseq { > + pinctrl-names = "default"; > + pinctrl-0 = <_default_gpios>; > + compatible = "mmc-pwrseq-simple"; > + reset-gpios = <_gpio 43 GPIO_ACTIVE_LOW>; > + }; > + }; > + > soc { > rpm@108000 { > regulators { > @@ -154,6 +170,21 @@ > regulator-always-on; > }; > > + qcom,ssbi@50 { > + pmic@0 { > + gpio@150 { > + wlan_default_gpios: wlan-gpios { > + pios { > + pins = "gpio43"; > + function = "normal"; > + bias-disable; > + power-source = > ; > + }; > + }; > + }; > + }; > + }; > + > amba { > /* eMMC */ > sdcc1: sdcc@1240 { > @@ -172,6 +203,7 @@ > status = "okay"; > vmmc-supply = <_fixed>; > vqmmc-supply = <_fixed>; > + mmc-pwrseq = <_pwrseq>; > }; > }; > }; > -- Regards, Igor. -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 10/14] ARM: dts: qs600: Add missing pinctrl property for gsbi7 uart
On 09/18/15 15:31, Srinivas Kandagatla wrote: > This patch adds missing 2pin uart pinctrl property to gsbi7 uart on > CM-QS600. > > Signed-off-by: Srinivas KandagatlaAcked-by: Igor Grinberg > --- > arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > index bdea747..8aac3be 100644 > --- a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > +++ b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > @@ -101,6 +101,8 @@ > qcom,mode = ; > serial@1664 { > status = "ok"; > + pinctrl-names = "default"; > + pinctrl-0 = <_uart_2pins>; > }; > }; > > -- Regards, Igor. -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 14/14] ARM: dts: qs600: Add SD card detect support.
On 09/18/15 15:32, Srinivas Kandagatla wrote: > This patch adds SD card detect support. > > Signed-off-by: Srinivas KandagatlaAcked-by: Igor Grinberg > --- > arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts | 13 + > 1 file changed, 13 insertions(+) > > diff --git a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > index cc9d942..03784f1 100644 > --- a/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > +++ b/arch/arm/boot/dts/qcom-apq8064-cm-qs600.dts > @@ -29,6 +29,16 @@ > }; > > soc { > + pinctrl@80 { > + card_detect: card_detect { > + mux { > + pins = "gpio26"; > + function = "gpio"; > + bias-disable; > + }; > + }; > + }; > + > rpm@108000 { > regulators { > vin_lvs1_3_6-supply = <_s4>; > @@ -197,6 +207,9 @@ > sdcc3: sdcc@1218 { > status = "okay"; > vmmc-supply = <_fixed>; > + pinctrl-names = "default"; > + pinctrl-0 = <_detect>; > + cd-gpios= <_pinmux 26 > GPIO_ACTIVE_LOW>; > }; > /* WLAN */ > sdcc4: sdcc@121c { > -- Regards, Igor. -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 5/8] soc: qcom: smd: Remove use of VLAIS
On Wed 02 Sep 15:46 PDT 2015, Stephen Boyd wrote: > Usage of VLAIS prevents clang from compiling this file, and it > also opens us to the possibility of allocating a large structure > on the stack to the point that we blow past the limit of the > kernel stack. Remove the VLAIS and allocate a structure on the > heap with kmalloc so that we're safer and more clang friendly. > [..] > diff --git a/drivers/soc/qcom/smd-rpm.c b/drivers/soc/qcom/smd-rpm.c [..] > struct { > struct qcom_rpm_header hdr; > struct qcom_rpm_request req; > - u8 payload[count]; > - } pkt; > + u8 payload[]; > + } *pkt; > + size_t size = sizeof(*pkt) + count; > [..] > > - ret = qcom_smd_send(rpm->rpm_channel, , sizeof(pkt)); > + ret = qcom_smd_send(rpm->rpm_channel, pkt, sizeof(*pkt)); It would be good if we actually include the request in the packet and not just the headers :) s/sizeof(*pkt)/size/ Sorry for not spotting this before, made my device not boot now that it showed up in linux-next. And oddly the 8974 RPM seems to just ack the messages, without any indication of the request being truncated... @Andy, I presume this is only on your -next, can you update the commit? Or do you want a patch for it? With this tiny change what we have on next-20150921 seems to work fine. Regards, Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] soc: qcom: Introduce WCNSS_CTRL SMD client
The WCNSS_CTRL SMD client is used for among other things upload nv firmware to a newly booted WCNSS chip. Signed-off-by: Bjorn Andersson--- This driver probes on the WCNSS_CTRL SMD channel as it comes up upon loading the wcnss firmware, it currenly request version information from the wcnss and downloads the nv binary. This is needed for bringing up the individual functions of the wcnss chip. drivers/soc/qcom/Kconfig | 7 ++ drivers/soc/qcom/Makefile | 1 + drivers/soc/qcom/wcnss_ctrl.c | 272 ++ 3 files changed, 280 insertions(+) create mode 100644 drivers/soc/qcom/wcnss_ctrl.c diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig index ba47b70f4d85..453ceb1af682 100644 --- a/drivers/soc/qcom/Kconfig +++ b/drivers/soc/qcom/Kconfig @@ -48,3 +48,10 @@ config QCOM_SMEM Say y here to enable support for the Qualcomm Shared Memory Manager. The driver provides an interface to items in a heap shared among all processors in a Qualcomm platform. + +config QCOM_WCNSS_CTRL + tristate "Qualcomm WCNSS control driver" + depends on QCOM_SMD + help + Client driver for the WCNSS_CTRL SMD channel, used to download nv + firmware to a newly booted WCNSS chip. diff --git a/drivers/soc/qcom/Makefile b/drivers/soc/qcom/Makefile index 10a93d168e0e..9823103ea843 100644 --- a/drivers/soc/qcom/Makefile +++ b/drivers/soc/qcom/Makefile @@ -3,3 +3,4 @@ obj-$(CONFIG_QCOM_PM) += spm.o obj-$(CONFIG_QCOM_SMD) += smd.o obj-$(CONFIG_QCOM_SMD_RPM) += smd-rpm.o obj-$(CONFIG_QCOM_SMEM) += smem.o +obj-$(CONFIG_QCOM_WCNSS_CTRL) += wcnss_ctrl.o diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c new file mode 100644 index ..7a986f881d5c --- /dev/null +++ b/drivers/soc/qcom/wcnss_ctrl.c @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2015, Sony Mobile Communications Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 and + * only version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ +#include +#include +#include +#include + +#define WCNSS_REQUEST_TIMEOUT (5 * HZ) + +#define NV_FRAGMENT_SIZE 3072 +#define NVBIN_FILE "wlan/prima/WCNSS_qcom_wlan_nv.bin" + +/** + * struct wcnss_ctrl - driver context + * @dev: device handle + * @channel: SMD channel handle + * @ack: completion for outstanding requests + * @ack_status:status of the outstanding request + * @download_nv_work: worker for uploading nv binary + */ +struct wcnss_ctrl { + struct device *dev; + struct qcom_smd_channel *channel; + + struct completion ack; + int ack_status; + + struct work_struct download_nv_work; +}; + +/* message types */ +enum { + WCNSS_VERSION_REQ = 0x0100, + WCNSS_VERSION_RESP, + WCNSS_DOWNLOAD_NV_REQ, + WCNSS_DOWNLOAD_NV_RESP, + WCNSS_UPLOAD_CAL_REQ, + WCNSS_UPLOAD_CAL_RESP, + WCNSS_DOWNLOAD_CAL_REQ, + WCNSS_DOWNLOAD_CAL_RESP, +}; + +/** + * struct wcnss_msg_hdr - common packet header for requests and responses + * @type: packet message type + * @len: total length of the packet, including this header + */ +struct wcnss_msg_hdr { + u32 type; + u32 len; +} __packed; + +/** + * struct wcnss_version_resp - version request response + * @hdr: common packet wcnss_msg_hdr header + */ +struct wcnss_version_resp { + struct wcnss_msg_hdr hdr; + u8 major; + u8 minor; + u8 version; + u8 revision; +} __packed; + +/** + * struct wcnss_download_nv_req - firmware fragment request + * @hdr: common packet wcnss_msg_hdr header + * @seq: sequence number of this fragment + * @last: boolean indicator of this being the last fragment of the binary + * @frag_size: length of this fragment + * @fragment: fragment data + */ +struct wcnss_download_nv_req { + struct wcnss_msg_hdr hdr; + u16 seq; + u16 last; + u32 frag_size; + u8 fragment[]; +} __packed; + +/** + * struct wcnss_download_nv_resp - firmware download response + * @hdr: common packet wcnss_msg_hdr header + * @status:boolean to indicate success of the download + */ +struct wcnss_download_nv_resp { + struct wcnss_msg_hdr hdr; + u8 status; +} __packed; + +/** + * wcnss_ctrl_smd_callback() - handler from SMD responses + * @qsdev: smd device handle + * @data: pointer to the incoming data packet + * @count: size of the incoming data packet + * + * Handles any incoming packets from the remote WCNSS_CTRL service. + */