usb: diag_bridge: Rename driver and functions for clarity
This will hopefully disambiguate naming clashes between this bridge
driver and existing DIAG drivers.
* Rename diag_usb.c to diag_bridge.c
* Rename diag_{open,close,read,write} to diag_bridge_*
* Rename Kconfig symbol
* Fix module build
Change-Id: Ia5b4884a7d85e2fa8f8c3865044a074a51e84adc
Signed-off-by: Jack Pham <jackp@codeaurora.org>
diff --git a/arch/arm/mach-msm/include/mach/diag_bridge.h b/arch/arm/mach-msm/include/mach/diag_bridge.h
index 92eb1b9..281a1a6 100644
--- a/arch/arm/mach-msm/include/mach/diag_bridge.h
+++ b/arch/arm/mach-msm/include/mach/diag_bridge.h
@@ -1,4 +1,3 @@
-
/* Copyright (c) 2011, Code Aurora Forum. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
@@ -11,7 +10,6 @@
* GNU General Public License for more details.
*/
-
#ifndef __LINUX_USB_DIAG_BRIDGE_H__
#define __LINUX_USB_DIAG_BRIDGE_H__
@@ -23,9 +21,33 @@
size_t buf_size, size_t actual);
};
-extern int diag_read(char *data, size_t size);
-extern int diag_write(char *data, size_t size);
-extern int diag_open(struct diag_bridge_ops *ops);
-extern void diag_close(void);
+#if defined(CONFIG_USB_QCOM_DIAG_BRIDGE) \
+ || defined(CONFIG_USB_QCOM_DIAG_BRIDGE_MODULE)
+
+extern int diag_bridge_read(char *data, size_t size);
+extern int diag_bridge_write(char *data, size_t size);
+extern int diag_bridge_open(struct diag_bridge_ops *ops);
+extern void diag_bridge_close(void);
+
+#else
+
+static int __maybe_unused diag_bridge_read(char *data, size_t size)
+{
+ return -ENODEV;
+}
+
+static int __maybe_unused diag_bridge_write(char *data, size_t size)
+{
+ return -ENODEV;
+}
+
+static int __maybe_unused diag_bridge_open(struct diag_bridge_ops *ops)
+{
+ return -ENODEV;
+}
+
+static void __maybe_unused diag_bridge_close(void) { }
+
+#endif
#endif
diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig
index 98e57d5..c5dcdbf 100644
--- a/drivers/usb/misc/Kconfig
+++ b/drivers/usb/misc/Kconfig
@@ -259,27 +259,29 @@
To compile this driver as a module, choose M here: the
module will be called yurex.
-config USB_QCOM_DIAG
- tristate "USB Qualcomm diag port driver"
- depends on USB && !USB_SERIAL_QUALCOMM
- default n
+config USB_QCOM_DIAG_BRIDGE
+ tristate "USB Qualcomm diagnostic bridge driver"
+ depends on USB
help
- Say Y here if you want to use the diag ports provided
- by many Qualcomm chipsets.
+ Say Y here if you have a Qualcomm modem device connected via USB that
+ will be bridged in kernel space. This driver communicates with the
+ diagnostic interface and allows for bridging with the diag forwarding
+ driver.
To compile this driver as a module, choose M here: the
- module will be called qcaux. If unsure, choose N.
+ module will be called diag_bridge. If unsure, choose N.
-config USB_QCOM_DIAG_TEST
- tristate "USB Qualcomm diag port unit test driver"
- depends on USB && USB_QCOM_DIAG
- default n
+config USB_QCOM_DIAG_BRIDGE_TEST
+ tristate "USB Qualcomm diagnostic bridge driver test"
+ depends on USB && USB_QCOM_DIAG_BRIDGE
help
- Say Y here if you want to use unit test diag port provided
- by many Qualcomm chipsets.
+ Say Y here if you want to enable the test hook for the
+ Qualcomm diag bridge driver. When enabled, this will create
+ a debugfs file entry named "diag_bridge_test" which can be used
+ to send a ping command to the diag port of the modem over USB.
To compile this driver as a module, choose M here: the
- module will be called qcaux. If unsure, choose N.
+ module will be called diag_bridge_test. If unsure, choose N.
config USB_QCOM_DUN_BRIDGE
tristate "USB Qualcomm modem DUN bridge driver"
diff --git a/drivers/usb/misc/Makefile b/drivers/usb/misc/Makefile
index 03568bc..bb69a02 100644
--- a/drivers/usb/misc/Makefile
+++ b/drivers/usb/misc/Makefile
@@ -29,7 +29,7 @@
obj-$(CONFIG_USB_SISUSBVGA) += sisusbvga/
-obj-$(CONFIG_USB_QCOM_DIAG) += diag_usb.o
-obj-$(CONFIG_USB_QCOM_DIAG_TEST) += diag_bridge_test.o
+obj-$(CONFIG_USB_QCOM_DIAG_BRIDGE) += diag_bridge.o
+obj-$(CONFIG_USB_QCOM_DIAG_BRIDGE_TEST) += diag_bridge_test.o
obj-$(CONFIG_USB_QCOM_DUN_BRIDGE) += dun_bridge.o
obj-$(CONFIG_USB_QCOM_DUN_BRIDGE_TEST) += dun_bridge_test.o
diff --git a/drivers/usb/misc/diag_usb.c b/drivers/usb/misc/diag_bridge.c
similarity index 79%
rename from drivers/usb/misc/diag_usb.c
rename to drivers/usb/misc/diag_bridge.c
index b3419f4..11f9ef6 100644
--- a/drivers/usb/misc/diag_usb.c
+++ b/drivers/usb/misc/diag_bridge.c
@@ -23,7 +23,7 @@
#include <mach/diag_bridge.h>
#define DRIVER_DESC "USB host diag bridge driver"
-#define DRIVER_VERSION "0.1"
+#define DRIVER_VERSION "1.0"
struct diag_bridge {
struct usb_device *udev;
@@ -37,7 +37,7 @@
};
struct diag_bridge *__dev;
-int diag_open(struct diag_bridge_ops *ops)
+int diag_bridge_open(struct diag_bridge_ops *ops)
{
struct diag_bridge *dev = __dev;
@@ -50,9 +50,9 @@
return 0;
}
-EXPORT_SYMBOL(diag_open);
+EXPORT_SYMBOL(diag_bridge_open);
-void diag_close(void)
+void diag_bridge_close(void)
{
struct diag_bridge *dev = __dev;
@@ -62,25 +62,23 @@
dev->ops = 0;
}
-EXPORT_SYMBOL(diag_close);
+EXPORT_SYMBOL(diag_bridge_close);
-static void diag_read_cb(struct urb *urb)
+static void diag_bridge_read_cb(struct urb *urb)
{
struct diag_bridge *dev = urb->context;
struct diag_bridge_ops *cbs = dev->ops;
dev_dbg(&dev->udev->dev, "%s: status:%d actual:%d\n", __func__,
urb->status, urb->actual_length);
- if (urb->status)
- urb->actual_length = urb->status;
cbs->read_complete_cb(cbs->ctxt,
urb->transfer_buffer,
urb->transfer_buffer_length,
- urb->actual_length);
+ urb->status < 0 ? urb->status : urb->actual_length);
}
-int diag_read(char *data, size_t size)
+int diag_bridge_read(char *data, size_t size)
{
struct urb *urb = NULL;
unsigned int pipe;
@@ -107,7 +105,7 @@
pipe = usb_rcvbulkpipe(dev->udev, dev->in_epAddr);
usb_fill_bulk_urb(urb, dev->udev, pipe, data, size,
- diag_read_cb, dev);
+ diag_bridge_read_cb, dev);
usb_anchor_urb(urb, &dev->submitted);
ret = usb_submit_urb(urb, GFP_KERNEL);
@@ -122,25 +120,22 @@
return 0;
}
-EXPORT_SYMBOL(diag_read);
+EXPORT_SYMBOL(diag_bridge_read);
-static void diag_write_cb(struct urb *urb)
+static void diag_bridge_write_cb(struct urb *urb)
{
struct diag_bridge *dev = urb->context;
struct diag_bridge_ops *cbs = dev->ops;
dev_dbg(&dev->udev->dev, "%s:\n", __func__);
- if (urb->status)
- urb->actual_length = urb->status;
-
cbs->write_complete_cb(cbs->ctxt,
urb->transfer_buffer,
urb->transfer_buffer_length,
- urb->actual_length);
+ urb->status < 0 ? urb->status : urb->actual_length);
}
-int diag_write(char *data, size_t size)
+int diag_bridge_write(char *data, size_t size)
{
struct urb *urb = NULL;
unsigned int pipe;
@@ -167,7 +162,7 @@
pipe = usb_sndbulkpipe(dev->udev, dev->out_epAddr);
usb_fill_bulk_urb(urb, dev->udev, pipe, data, size,
- diag_write_cb, dev);
+ diag_bridge_write_cb, dev);
usb_anchor_urb(urb, &dev->submitted);
ret = usb_submit_urb(urb, GFP_KERNEL);
@@ -182,9 +177,9 @@
return 0;
}
-EXPORT_SYMBOL(diag_write);
+EXPORT_SYMBOL(diag_bridge_write);
-static void diag_delete(struct kref *kref)
+static void diag_bridge_delete(struct kref *kref)
{
struct diag_bridge *dev =
container_of(kref, struct diag_bridge, kref);
@@ -195,7 +190,7 @@
}
static int
-diag_probe(struct usb_interface *ifc, const struct usb_device_id *id)
+diag_bridge_probe(struct usb_interface *ifc, const struct usb_device_id *id)
{
struct diag_bridge *dev;
struct usb_host_interface *ifc_desc;
@@ -257,44 +252,44 @@
error:
if (dev)
- kref_put(&dev->kref, diag_delete);
+ kref_put(&dev->kref, diag_bridge_delete);
return ret;
}
-static void diag_disconnect(struct usb_interface *ifc)
+static void diag_bridge_disconnect(struct usb_interface *ifc)
{
struct diag_bridge *dev = usb_get_intfdata(ifc);
dev_dbg(&dev->udev->dev, "%s:\n", __func__);
platform_device_del(dev->pdev);
- kref_put(&dev->kref, diag_delete);
+ kref_put(&dev->kref, diag_bridge_delete);
usb_set_intfdata(ifc, NULL);
}
#define VALID_INTERFACE_NUM 0
-static const struct usb_device_id diag_ids[] = {
+static const struct usb_device_id diag_bridge_ids[] = {
{ USB_DEVICE(0x5c6, 0x9001),
.driver_info = VALID_INTERFACE_NUM, },
{} /* terminating entry */
};
-MODULE_DEVICE_TABLE(usb, diag_ids);
+MODULE_DEVICE_TABLE(usb, diag_bridge_ids);
-static struct usb_driver diag_driver = {
- .name = "diag_qc",
- .probe = diag_probe,
- .disconnect = diag_disconnect,
- .id_table = diag_ids,
+static struct usb_driver diag_bridge_driver = {
+ .name = "diag_bridge",
+ .probe = diag_bridge_probe,
+ .disconnect = diag_bridge_disconnect,
+ .id_table = diag_bridge_ids,
};
-static int __init diag_init(void)
+static int __init diag_bridge_init(void)
{
int ret;
- ret = usb_register(&diag_driver);
+ ret = usb_register(&diag_bridge_driver);
if (ret) {
err("%s: unable to register diag driver",
__func__);
@@ -304,13 +299,14 @@
return 0;
}
-static void __exit diag_exit(void)
+static void __exit diag_bridge_exit(void)
{
- usb_deregister(&diag_driver);
+ usb_deregister(&diag_bridge_driver);
}
-module_init(diag_init);
-module_exit(diag_exit);
+module_init(diag_bridge_init);
+module_exit(diag_bridge_exit);
MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL V2");
+MODULE_VERSION(DRIVER_VERSION);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/usb/misc/diag_bridge_test.c b/drivers/usb/misc/diag_bridge_test.c
index 234aa72..5bc0828 100644
--- a/drivers/usb/misc/diag_bridge_test.c
+++ b/drivers/usb/misc/diag_bridge_test.c
@@ -19,10 +19,12 @@
#include <linux/crc-ccitt.h>
#include <mach/diag_bridge.h>
+#define DRIVER_DESC "USB host diag bridge driver test"
+#define DRIVER_VERSION "1.0"
+
#define RD_BUF_SIZE 2048
#define DIAG_TEST_CONNECTED 0
-
struct diag_test_dev {
char *read_buf;
struct work_struct read_w;
@@ -49,7 +51,7 @@
container_of(w, struct diag_test_dev, read_w);
memset(dev->read_buf, 0, RD_BUF_SIZE);
- diag_read(dev->read_buf, RD_BUF_SIZE);
+ diag_bridge_read(dev->read_buf, RD_BUF_SIZE);
}
static void
@@ -86,7 +88,7 @@
buf[2] = 0x3A;
buf[3] = 0x7E;
- diag_write(buf, temp);
+ diag_bridge_write(buf, temp);
return count;
}
@@ -114,7 +116,7 @@
static int diag_test_remove(struct platform_device *pdev)
{
- diag_close();
+ diag_bridge_close();
if (dent) {
debugfs_remove_recursive(dent);
@@ -131,7 +133,7 @@
pr_info("%s:\n", __func__);
- ret = diag_open(&dev->ops);
+ ret = diag_bridge_open(&dev->ops);
if (ret)
pr_err("diag open failed: %d", ret);
@@ -190,7 +192,7 @@
pr_info("%s:\n", __func__);
if (test_bit(DIAG_TEST_CONNECTED, &dev->flags))
- diag_close();
+ diag_bridge_close();
kfree(dev->read_buf);
kfree(dev);
@@ -201,4 +203,5 @@
module_exit(diag_test_exit);
MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL V2");
+MODULE_VERSION(DRIVER_VERSION);
+MODULE_LICENSE("GPL v2");