diff options
-rw-r--r-- | multitech/recipes/vizzini/files/vizzini.init | 22 | ||||
-rw-r--r-- | multitech/recipes/vizzini/vizzini-0.76/vizzini-0.76-rs485.patch | 97 | ||||
-rw-r--r-- | multitech/recipes/vizzini/vizzini-0.76/xr21v141x-lnx-3.0-pak.tar.gz | bin | 0 -> 14691 bytes | |||
-rw-r--r-- | multitech/recipes/vizzini/vizzini.inc | 52 | ||||
-rw-r--r-- | multitech/recipes/vizzini/vizzini_0.76.bb | 10 |
5 files changed, 181 insertions, 0 deletions
diff --git a/multitech/recipes/vizzini/files/vizzini.init b/multitech/recipes/vizzini/files/vizzini.init new file mode 100644 index 0000000..b49473f --- /dev/null +++ b/multitech/recipes/vizzini/files/vizzini.init @@ -0,0 +1,22 @@ +#!/bin/sh + +exit + +case $1 in + start) + echo "Loading vizzini module" + modprobe vizzini + ;; + + stop) + echo "Unloading vizzini module" + modprobe -r vizzini + ;; + + *) + echo "Usage: $0 {start|stop}" + exit 2 + ;; +esac + + diff --git a/multitech/recipes/vizzini/vizzini-0.76/vizzini-0.76-rs485.patch b/multitech/recipes/vizzini/vizzini-0.76/vizzini-0.76-rs485.patch new file mode 100644 index 0000000..e299b81 --- /dev/null +++ b/multitech/recipes/vizzini/vizzini-0.76/vizzini-0.76-rs485.patch @@ -0,0 +1,97 @@ +--- a/vizzini.c 2013-01-22 15:37:32.345592809 -0600 ++++ b/vizzini.c 2013-01-29 14:27:04.550051817 -0600 +@@ -186,6 +186,7 @@ + #ifdef VIZZINI_IWA + int iwa; + #endif ++ struct serial_rs485 rs485; + }; + + +@@ -428,7 +429,41 @@ + return -EINVAL; + } + ++static int vizzini_set_rs485(struct usb_serial_port *port, struct serial_rs485 *rs485conf) ++{ ++ struct vizzini_port_private *portdata = usb_get_serial_port_data(port); ++ int block = portdata->block; ++ int result = 0; ++ unsigned int gpio_mode, flow = 0; ++ ++ portdata->rs485 = *rs485conf; ++ ++ if (portdata->rs485.flags & SER_RS485_ENABLED) { ++ dev_info(&port->dev, "Enabling RS485"); ++ ++ /* enable auto tranceiver enable on transmit, TX active high */ ++ gpio_mode = UART_GPIO_MODE_SEL_XCVR_EN_ACT | UART_GPIO_MODE_XCVR_EN_POL; ++ ++ result = vizzini_set_reg(port, block, UART_GPIO_MODE, gpio_mode); + ++ if (result < 0) ++ dev_err(&port->dev, "Error setting auto trans enable"); ++ ++ /* half duplex rs485 */ ++ flow = UART_FLOW_HALF_DUPLEX; ++ result = vizzini_set_reg(port, block, UART_FLOW, flow); ++ ++ if (result < 0) ++ dev_err(&port->dev, "Error setting half duplex"); ++ } ++ else { ++ dev_info(&port->dev, "Disabling RS485 - flow control off"); ++ vizzini_set_reg(port, block, UART_GPIO_MODE, UART_GPIO_MODE_SEL_GPIO); ++ vizzini_set_reg(port, block, UART_FLOW, UART_FLOW_MODE_NONE); ++ } ++ ++ return 0; ++} + + static void vizzini_set_termios(struct tty_struct *tty_param, + struct usb_serial_port *port, +@@ -604,6 +639,7 @@ + char *data; + int result; + struct serial_struct ss; ++ struct serial_rs485 rs485conf; + + if (debug) dev_dbg(&port->dev, "%s %08x\n", __func__, cmd); + +@@ -636,6 +672,36 @@ + /* mutex_unlock(&config_mutex); */ + break; + ++ case TIOCGRS485: ++ if (!arg) { ++ dev_err(&port->dev, "%s - TIOCGRS485 arg invalid\n", __func__); ++ return -EFAULT; ++ } ++ if (copy_to_user((struct serial_rs485 *) arg, ++ &(portdata->rs485), ++ sizeof(struct serial_rs485))) { ++ dev_err(&port->dev, "%s - TIOCGRS485 copy_to_user fail\n", __func__); ++ return -EFAULT; ++ } ++ break; ++ ++ case TIOCSRS485: ++ dev_dbg(&port->dev, "%s TIOCSRS485\n", __func__); ++ if (!arg) { ++ return -EFAULT; ++ dev_err(&port->dev, "%s - TIOCSRS485 arg invalid\n", __func__); ++ } ++ if (copy_from_user(&rs485conf, (struct serial_rs485 *) arg, ++ sizeof(rs485conf))) { ++ dev_err(&port->dev, "%s - TIOCSRS485 copy_from_user fail\n", __func__); ++ return -EFAULT; ++ } ++ ++ vizzini_disable(port); ++ vizzini_set_rs485(port, &rs485conf); ++ vizzini_enable(port); ++ break; ++ + case VZIOC_GET_REG: + if (get_user(block, (int __user *)arg)) + return -EFAULT; diff --git a/multitech/recipes/vizzini/vizzini-0.76/xr21v141x-lnx-3.0-pak.tar.gz b/multitech/recipes/vizzini/vizzini-0.76/xr21v141x-lnx-3.0-pak.tar.gz Binary files differnew file mode 100644 index 0000000..3d10bac --- /dev/null +++ b/multitech/recipes/vizzini/vizzini-0.76/xr21v141x-lnx-3.0-pak.tar.gz diff --git a/multitech/recipes/vizzini/vizzini.inc b/multitech/recipes/vizzini/vizzini.inc new file mode 100644 index 0000000..6ceaeb9 --- /dev/null +++ b/multitech/recipes/vizzini/vizzini.inc @@ -0,0 +1,52 @@ +DESCRIPTION = "USB Driver for Exar USB UARTs" +HOMEPAGE = "http://www.exar.com/connectivity/uart-and-bridging-solutions/usb-uarts/xr21v1414" +SECTION = "base" +PRIORITY = "optional" +LICENSE = "GPL" +DEPENDS = "virtual/kernel" +RDEPENDS = "kernel (${KERNEL_VERSION})" +INC_PR = "r1" + +SRC_URI = " \ + file://vizzini.init \ +" + +inherit module-base +inherit update-rc.d + +EXTRA_OEMAKE = " -C ${STAGING_KERNEL_DIR} \ + M=${S} \ + modules \ + " + +do_configure () { + echo "Nothing to configure for vizzini" +} + +do_compile () { + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS + oe_runmake +} + +PACKAGES = "${PN}" + +FILES_${PN} = "${base_libdir}/modules/${KERNEL_VERSION}/extra/vizzini.ko" +FILES_${PN} += "${sysconfdir}/init.d/vizzini" + +INITSCRIPT_NAME = "vizzini" +INITSCRIPT_PARAMS = "start 90 S ." + +PARALLEL_MAKE = "" + +fakeroot do_install () { + install -m 0755 -d ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra + # use cp instead of install so the driver doesn't get stripped + cp ${S}/vizzini.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/extra + cp ${S}/vizzini.h ${STAGING_KERNEL_DIR}/include/linux/ + cp ${S}/vizzini.h ${STAGING_INCDIR}/linux/ + cp ${S}/vzioctl.h ${STAGING_KERNEL_DIR}/include/linux/ + cp ${S}/vzioctl.h ${STAGING_INCDIR}/linux/ + + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/vizzini.init ${D}${sysconfdir}/init.d/vizzini +} diff --git a/multitech/recipes/vizzini/vizzini_0.76.bb b/multitech/recipes/vizzini/vizzini_0.76.bb new file mode 100644 index 0000000..ff1f421 --- /dev/null +++ b/multitech/recipes/vizzini/vizzini_0.76.bb @@ -0,0 +1,10 @@ +require vizzini.inc + +LOCAL_PR = "${INC_PR}.0" +MACHINE_KERNEL_PR_append = "${LOCAL_PR}" + +SRC_URI += "file://xr21v141x-lnx-3.0-pak.tar.gz \ + file://vizzini-0.76-rs485.patch \ + " +S = "${WORKDIR}/xr21v141x-lnx-3.0-pak" + |