Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 82606b1c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: diag: Add SDIO transport in diag"

parents 81a9e55e 851aa308
Loading
Loading
Loading
Loading
+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";
	};
+1 −1
Original line number Diff line number Diff line
@@ -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
+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
+37 −3
Original line number Diff line number Diff line
@@ -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;
}
@@ -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;
@@ -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;
@@ -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;
@@ -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:
+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
@@ -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"
@@ -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] = {
@@ -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