Loading Documentation/devicetree/bindings/arm/msm/diagfwd_sdio.txt 0 → 100644 +9 −0 Original line number Diff line number Diff line QTI Diag Forward SDIO Driver Required properties: -compatible : should be "qcom,diagfwd-sdio". Example: qcom,diag { compatible = "qcom,diagfwd-sdio"; }; drivers/char/diag/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ endmenu menu "HSIC/SMUX support for DIAG" config DIAGFWD_BRIDGE_CODE depends on USB_QCOM_DIAG_BRIDGE || MSM_MHI depends on USB_QCOM_DIAG_BRIDGE || MSM_MHI || QCOM_SDIO_CLIENT default y bool "Enable QSC/9K DIAG traffic over SMUX/HSIC" help Loading drivers/char/diag/Makefile +3 −0 Original line number Diff line number Diff line obj-$(CONFIG_DIAG_CHAR) := diagchar.o obj-$(CONFIG_DIAGFWD_BRIDGE_CODE) += diagfwd_bridge.o obj-$(CONFIG_USB_QCOM_DIAG_BRIDGE) += diagfwd_hsic.o obj-$(CONFIG_MSM_MHI) += diagfwd_mhi.o obj-$(CONFIG_QCOM_SDIO_CLIENT) += diagfwd_sdio.o diagchar-objs := diagchar_core.o diagchar_hdlc.o diagfwd.o diagfwd_glink.o diagfwd_peripheral.o diagfwd_smd.o diagfwd_socket.o diag_mux.o diag_memorydevice.o diag_usb.o diagmem.o diagfwd_cntl.o diag_dci.o diag_masks.o diag_debugfs.o drivers/char/diag/diagchar_core.c +37 −3 Original line number Diff line number Diff line Loading @@ -1161,7 +1161,7 @@ static void diag_remote_exit(void) return; } int diagfwd_bridge_init(bool use_mhi) int diagfwd_bridge_init(int xprt) { return 0; } Loading Loading @@ -3788,7 +3788,7 @@ static int diag_mhi_probe(struct platform_device *pdev) diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(true); ret = diagfwd_bridge_init(1); if (ret) { diagfwd_bridge_exit(); return ret; Loading Loading @@ -3821,7 +3821,7 @@ static int diagfwd_usb_probe(struct platform_device *pdev) diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(false); ret = diagfwd_bridge_init(0); if (ret) { diagfwd_bridge_exit(); return ret; Loading @@ -3844,6 +3844,39 @@ static struct platform_driver diagfwd_usb_driver = { }, }; static int diagfwd_sdio_probe(struct platform_device *pdev) { int ret; driver->pdev = pdev; ret = diag_remote_init(); if (ret) { diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(2); if (ret) { diagfwd_bridge_exit(); return ret; } pr_debug("diag: usb device is ready\n"); return 0; } static const struct of_device_id diagfwd_sdio_table[] = { {.compatible = "qcom,diagfwd-sdio"}, {}, }; static struct platform_driver diagfwd_sdio_driver = { .probe = diagfwd_sdio_probe, .driver = { .name = "DIAGFWD SDIO Platform", .owner = THIS_MODULE, .of_match_table = diagfwd_sdio_table, }, }; static int __init diagchar_init(void) { dev_t dev; Loading Loading @@ -3971,6 +4004,7 @@ static int __init diagchar_init(void) pr_debug("diagchar initialized now"); platform_driver_register(&diag_mhi_driver); platform_driver_register(&diagfwd_usb_driver); platform_driver_register(&diagfwd_sdio_driver); return 0; fail: Loading drivers/char/diag/diagfwd_bridge.c +14 −3 Original line number Diff line number Diff line /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * * 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 Loading @@ -22,6 +22,7 @@ #include "diagfwd_bridge.h" #ifdef CONFIG_USB_QCOM_DIAG_BRIDGE #include "diagfwd_hsic.h" #include "diagfwd_sdio.h" #endif #ifdef CONFIG_MSM_MHI #include "diagfwd_mhi.h" Loading @@ -42,6 +43,13 @@ static int diag_mhi_init(void) } #endif #ifndef CONFIG_QCOM_SDIO_CLIENT static int diag_sdio_init(void) { return -EINVAL; } #endif #define BRIDGE_TO_MUX(x) (x + DIAG_MUX_BRIDGE_BASE) struct diagfwd_bridge_info bridge_info[NUM_REMOTE_DEV] = { Loading Loading @@ -271,14 +279,17 @@ int diag_remote_dev_write_done(int id, unsigned char *buf, int len, int ctxt) return err; } int diagfwd_bridge_init(bool use_mhi) int diagfwd_bridge_init(int xprt) { int err = 0; if (use_mhi) if (xprt == 1) err = diag_mhi_init(); else if (xprt == 2) err = diag_sdio_init(); else err = diag_hsic_init(); if (err) goto fail; return 0; Loading Loading
Documentation/devicetree/bindings/arm/msm/diagfwd_sdio.txt 0 → 100644 +9 −0 Original line number Diff line number Diff line QTI Diag Forward SDIO Driver Required properties: -compatible : should be "qcom,diagfwd-sdio". Example: qcom,diag { compatible = "qcom,diagfwd-sdio"; };
drivers/char/diag/Kconfig +1 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ endmenu menu "HSIC/SMUX support for DIAG" config DIAGFWD_BRIDGE_CODE depends on USB_QCOM_DIAG_BRIDGE || MSM_MHI depends on USB_QCOM_DIAG_BRIDGE || MSM_MHI || QCOM_SDIO_CLIENT default y bool "Enable QSC/9K DIAG traffic over SMUX/HSIC" help Loading
drivers/char/diag/Makefile +3 −0 Original line number Diff line number Diff line obj-$(CONFIG_DIAG_CHAR) := diagchar.o obj-$(CONFIG_DIAGFWD_BRIDGE_CODE) += diagfwd_bridge.o obj-$(CONFIG_USB_QCOM_DIAG_BRIDGE) += diagfwd_hsic.o obj-$(CONFIG_MSM_MHI) += diagfwd_mhi.o obj-$(CONFIG_QCOM_SDIO_CLIENT) += diagfwd_sdio.o diagchar-objs := diagchar_core.o diagchar_hdlc.o diagfwd.o diagfwd_glink.o diagfwd_peripheral.o diagfwd_smd.o diagfwd_socket.o diag_mux.o diag_memorydevice.o diag_usb.o diagmem.o diagfwd_cntl.o diag_dci.o diag_masks.o diag_debugfs.o
drivers/char/diag/diagchar_core.c +37 −3 Original line number Diff line number Diff line Loading @@ -1161,7 +1161,7 @@ static void diag_remote_exit(void) return; } int diagfwd_bridge_init(bool use_mhi) int diagfwd_bridge_init(int xprt) { return 0; } Loading Loading @@ -3788,7 +3788,7 @@ static int diag_mhi_probe(struct platform_device *pdev) diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(true); ret = diagfwd_bridge_init(1); if (ret) { diagfwd_bridge_exit(); return ret; Loading Loading @@ -3821,7 +3821,7 @@ static int diagfwd_usb_probe(struct platform_device *pdev) diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(false); ret = diagfwd_bridge_init(0); if (ret) { diagfwd_bridge_exit(); return ret; Loading @@ -3844,6 +3844,39 @@ static struct platform_driver diagfwd_usb_driver = { }, }; static int diagfwd_sdio_probe(struct platform_device *pdev) { int ret; driver->pdev = pdev; ret = diag_remote_init(); if (ret) { diag_remote_exit(); return ret; } ret = diagfwd_bridge_init(2); if (ret) { diagfwd_bridge_exit(); return ret; } pr_debug("diag: usb device is ready\n"); return 0; } static const struct of_device_id diagfwd_sdio_table[] = { {.compatible = "qcom,diagfwd-sdio"}, {}, }; static struct platform_driver diagfwd_sdio_driver = { .probe = diagfwd_sdio_probe, .driver = { .name = "DIAGFWD SDIO Platform", .owner = THIS_MODULE, .of_match_table = diagfwd_sdio_table, }, }; static int __init diagchar_init(void) { dev_t dev; Loading Loading @@ -3971,6 +4004,7 @@ static int __init diagchar_init(void) pr_debug("diagchar initialized now"); platform_driver_register(&diag_mhi_driver); platform_driver_register(&diagfwd_usb_driver); platform_driver_register(&diagfwd_sdio_driver); return 0; fail: Loading
drivers/char/diag/diagfwd_bridge.c +14 −3 Original line number Diff line number Diff line /* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved. * * 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 Loading @@ -22,6 +22,7 @@ #include "diagfwd_bridge.h" #ifdef CONFIG_USB_QCOM_DIAG_BRIDGE #include "diagfwd_hsic.h" #include "diagfwd_sdio.h" #endif #ifdef CONFIG_MSM_MHI #include "diagfwd_mhi.h" Loading @@ -42,6 +43,13 @@ static int diag_mhi_init(void) } #endif #ifndef CONFIG_QCOM_SDIO_CLIENT static int diag_sdio_init(void) { return -EINVAL; } #endif #define BRIDGE_TO_MUX(x) (x + DIAG_MUX_BRIDGE_BASE) struct diagfwd_bridge_info bridge_info[NUM_REMOTE_DEV] = { Loading Loading @@ -271,14 +279,17 @@ int diag_remote_dev_write_done(int id, unsigned char *buf, int len, int ctxt) return err; } int diagfwd_bridge_init(bool use_mhi) int diagfwd_bridge_init(int xprt) { int err = 0; if (use_mhi) if (xprt == 1) err = diag_mhi_init(); else if (xprt == 2) err = diag_sdio_init(); else err = diag_hsic_init(); if (err) goto fail; return 0; Loading