Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -u -r -B -X ./excludes.txt ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/config_base.6a ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/config_base.6a
- --- ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/config_base.6a 2015-12-24 16:18:19.000000000 -0500
- +++ ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/config_base.6a 2015-12-26 15:24:34.523705421 -0500
- @@ -1222,7 +1222,10 @@
- #
- # PPS support
- #
- -# CONFIG_PPS is not set
- +CONFIG_PPS=m
- +# CONFIG_PPS_DEBUG is not set
- +CONFIG_PPS_CLIENT_KTIMER=m
- +CONFIG_PPS_CLIENT_LDISC=m
- # CONFIG_W1 is not set
- # CONFIG_POWER_SUPPLY is not set
- # CONFIG_HWMON is not set
- @@ -1409,13 +1412,13 @@
- # CONFIG_USB_SERIAL_AIRCABLE is not set
- # CONFIG_USB_SERIAL_ARK3116 is not set
- # CONFIG_USB_SERIAL_BELKIN is not set
- -# CONFIG_USB_SERIAL_CH341 is not set
- +CONFIG_USB_SERIAL_CH341=m
- # CONFIG_USB_SERIAL_WHITEHEAT is not set
- # CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
- # CONFIG_USB_SERIAL_CP210X is not set
- # CONFIG_USB_SERIAL_CYPRESS_M8 is not set
- # CONFIG_USB_SERIAL_EMPEG is not set
- -# CONFIG_USB_SERIAL_FTDI_SIO is not set
- +CONFIG_USB_SERIAL_FTDI_SIO=m
- # CONFIG_USB_SERIAL_FUNSOFT is not set
- # CONFIG_USB_SERIAL_VISOR is not set
- # CONFIG_USB_SERIAL_IPAQ is not set
- @@ -1434,7 +1437,7 @@
- # CONFIG_USB_SERIAL_MOS7840 is not set
- # CONFIG_USB_SERIAL_MOTOROLA is not set
- # CONFIG_USB_SERIAL_NAVMAN is not set
- -# CONFIG_USB_SERIAL_PL2303 is not set
- +CONFIG_USB_SERIAL_PL2303=m
- # CONFIG_USB_SERIAL_OTI6858 is not set
- # CONFIG_USB_SERIAL_QCAUX is not set
- # CONFIG_USB_SERIAL_QUALCOMM is not set
- @@ -1442,13 +1445,13 @@
- # CONFIG_USB_SERIAL_HP4X is not set
- # CONFIG_USB_SERIAL_SAFE is not set
- # CONFIG_USB_SERIAL_SIEMENS_MPI is not set
- -CONFIG_USB_SERIAL_SIERRAWIRELESS=m
- +CONFIG_USB_SERIAL_SIERRAWIRELESS=n
- # CONFIG_USB_SERIAL_SYMBOL is not set
- # CONFIG_USB_SERIAL_TI is not set
- # CONFIG_USB_SERIAL_CYBERJACK is not set
- # CONFIG_USB_SERIAL_XIRCOM is not set
- -CONFIG_USB_SERIAL_WWAN=m
- -CONFIG_USB_SERIAL_OPTION=m
- +CONFIG_USB_SERIAL_WWAN=n
- +CONFIG_USB_SERIAL_OPTION=n
- # CONFIG_USB_SERIAL_OMNINET is not set
- # CONFIG_USB_SERIAL_OPTICON is not set
- # CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
- diff -u -r -B -X ./excludes.txt ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/ftdi_sio.c ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/ftdi_sio.c
- --- ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/ftdi_sio.c 2015-12-24 16:18:19.000000000 -0500
- +++ ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/ftdi_sio.c 2015-12-26 15:24:34.523705421 -0500
- @@ -1868,8 +1868,20 @@
- are only processed once. */
- status = packet[0] & FTDI_STATUS_B0_MASK;
- if (status != priv->prev_status) {
- - priv->diff_status |= status ^ priv->prev_status;
- - wake_up_interruptible(&priv->delta_msr_wait);
- + char diff_status = status ^ priv->prev_status;
- + priv->diff_status |= diff_status;
- +
- + if (diff_status & FTDI_RS0_RLSD) {
- + struct tty_struct *tty;
- +
- + tty = tty_port_tty_get(&port->port);
- + if (tty)
- + usb_serial_handle_dcd_change(port, tty,
- + status & FTDI_RS0_RLSD);
- + tty_kref_put(tty);
- + }
- +
- + wake_up_interruptible(&priv->delta_msr_wait);
- priv->prev_status = status;
- }
- diff -u -r -B -X ./excludes.txt ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/generic.c ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/generic.c
- --- ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/generic.c 2015-12-24 16:18:19.000000000 -0500
- +++ ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/usb/serial/generic.c 2015-12-26 15:24:34.739705269 -0500
- @@ -491,6 +491,15 @@
- struct tty_port *port = &usb_port->port;
- dbg("%s - port %d, status %d", __func__, usb_port->number, status);
- + if (tty) {
- + struct tty_ldisc *ld = tty_ldisc_ref(tty);
- +
- + if (ld) {
- + if (ld->ops->dcd_change)
- + ld->ops->dcd_change(tty, status, NULL);
- + tty_ldisc_deref(ld);
- + }
- + }
- if (status)
- wake_up_interruptible(&port->open_wait);
- --- ./asuswrt-merlin-380.57_original/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/sysroot/usr/include/timepps.h 1969-12-31 19:00:00.000000000 -0500
- +++ ./asuswrt-merlin-380.57/release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3/arm-brcm-linux-uclibcgnueabi/sysroot/usr/include/timepps.h 2015-12-26 15:24:34.751705113 -0500
- @@ -0,0 +1,198 @@
- +/*
- + * timepps.h -- PPS API main header
- + *
- + * Copyright (C) 2005-2007 Rodolfo Giometti <giometti@linux.it>
- + *
- + * This program is free software; you can redistribute it and/or modify
- + * it under the terms of the GNU General Public License as published by
- + * the Free Software Foundation; either version 2 of the License, or
- + * (at your option) any later version.
- + *
- + * 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.
- + *
- + * You should have received a copy of the GNU General Public License
- + * along with this program; if not, write to the Free Software
- + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- + */
- +
- +#ifndef _SYS_TIMEPPS_H_
- +#define _SYS_TIMEPPS_H_
- +
- +#include <errno.h>
- +#include <sys/time.h>
- +#include <sys/ioctl.h>
- +#include <linux/types.h>
- +#include <linux/pps.h>
- +
- +#define LINUXPPS 1 /* signal we are using LinuxPPS */
- +
- +/*
- + * New data structures
- + */
- +
- +struct ntp_fp {
- + unsigned int integral;
- + unsigned int fractional;
- +};
- +
- +union pps_timeu {
- + struct timespec tspec;
- + struct ntp_fp ntpfp;
- + unsigned long longpad[3];
- +};
- +
- +struct pps_info {
- + unsigned long assert_sequence; /* seq. num. of assert event */
- + unsigned long clear_sequence; /* seq. num. of clear event */
- + union pps_timeu assert_tu; /* time of assert event */
- + union pps_timeu clear_tu; /* time of clear event */
- + int current_mode; /* current mode bits */
- +};
- +
- +struct pps_params {
- + int api_version; /* API version # */
- + int mode; /* mode bits */
- + union pps_timeu assert_off_tu; /* offset compensation for assert */
- + union pps_timeu clear_off_tu; /* offset compensation for clear */
- +};
- +
- +typedef int pps_handle_t; /* represents a PPS source */
- +typedef unsigned long pps_seq_t; /* sequence number */
- +typedef struct ntp_fp ntp_fp_t; /* NTP-compatible time stamp */
- +typedef union pps_timeu pps_timeu_t; /* generic data type for time stamps */
- +typedef struct pps_info pps_info_t;
- +typedef struct pps_params pps_params_t;
- +
- +#define assert_timestamp assert_tu.tspec
- +#define clear_timestamp clear_tu.tspec
- +
- +#define assert_timestamp_ntpfp assert_tu.ntpfp
- +#define clear_timestamp_ntpfp clear_tu.ntpfp
- +
- +#define assert_offset assert_off_tu.tspec
- +#define clear_offset clear_off_tu.tspec
- +
- +#define assert_offset_ntpfp assert_off_tu.ntpfp
- +#define clear_offset_ntpfp clear_off_tu.ntpfp
- +
- +/*
- + * The PPS API
- + */
- +
- +static __inline int time_pps_create(int source, pps_handle_t *handle)
- +{
- + int ret;
- + struct pps_kparams dummy;
- +
- + if (!handle) {
- + errno = EINVAL;
- + return -1;
- + }
- +
- + /* First we check if current device is a valid PPS one by
- + * doing a dummy PPS_GETPARAMS...
- + */
- + ret = ioctl(source, PPS_GETPARAMS, &dummy);
- + if (ret) {
- + errno = EOPNOTSUPP;
- + return -1;
- + }
- +
- + /* ... then since in LinuxPPS there are no differences between a
- + * "PPS source" and a "PPS handle", we simply return the same value.
- + */
- + *handle = source;
- +
- + return 0;
- +}
- +
- +static __inline int time_pps_destroy(pps_handle_t handle)
- +{
- + return close(handle);
- +}
- +
- +static __inline int time_pps_getparams(pps_handle_t handle,
- + pps_params_t *ppsparams)
- +{
- + int ret;
- + struct pps_kparams __ppsparams;
- +
- + ret = ioctl(handle, PPS_GETPARAMS, &__ppsparams);
- +
- + ppsparams->api_version = __ppsparams.api_version;
- + ppsparams->mode = __ppsparams.mode;
- + ppsparams->assert_off_tu.tspec.tv_sec = __ppsparams.assert_off_tu.sec;
- + ppsparams->assert_off_tu.tspec.tv_nsec = __ppsparams.assert_off_tu.nsec;
- + ppsparams->clear_off_tu.tspec.tv_sec = __ppsparams.clear_off_tu.sec;
- + ppsparams->clear_off_tu.tspec.tv_nsec = __ppsparams.clear_off_tu.nsec;
- +
- + return ret;
- +}
- +
- +static __inline int time_pps_setparams(pps_handle_t handle,
- + const pps_params_t *ppsparams)
- +{
- + struct pps_kparams __ppsparams;
- +
- + __ppsparams.api_version = ppsparams->api_version;
- + __ppsparams.mode = ppsparams->mode;
- + __ppsparams.assert_off_tu.sec = ppsparams->assert_off_tu.tspec.tv_sec;
- + __ppsparams.assert_off_tu.nsec = ppsparams->assert_off_tu.tspec.tv_nsec;
- + __ppsparams.clear_off_tu.sec = ppsparams->clear_off_tu.tspec.tv_sec;
- + __ppsparams.clear_off_tu.nsec = ppsparams->clear_off_tu.tspec.tv_nsec;
- +
- + return ioctl(handle, PPS_SETPARAMS, &__ppsparams);
- +}
- +
- +/* Get capabilities for handle */
- +static __inline int time_pps_getcap(pps_handle_t handle, int *mode)
- +{
- + return ioctl(handle, PPS_GETCAP, mode);
- +}
- +
- +static __inline int time_pps_fetch(pps_handle_t handle, const int tsformat,
- + pps_info_t *ppsinfobuf,
- + const struct timespec *timeout)
- +{
- + struct pps_fdata __fdata;
- + int ret;
- +
- + /* Sanity checks */
- + if (tsformat != PPS_TSFMT_TSPEC) {
- + errno = EINVAL;
- + return -1;
- + }
- +
- + if (timeout) {
- + __fdata.timeout.sec = timeout->tv_sec;
- + __fdata.timeout.nsec = timeout->tv_nsec;
- + __fdata.timeout.flags = ~PPS_TIME_INVALID;
- + } else
- + __fdata.timeout.flags = PPS_TIME_INVALID;
- +
- + ret = ioctl(handle, PPS_FETCH, &__fdata);
- +
- + ppsinfobuf->assert_sequence = __fdata.info.assert_sequence;
- + ppsinfobuf->clear_sequence = __fdata.info.clear_sequence;
- + ppsinfobuf->assert_tu.tspec.tv_sec = __fdata.info.assert_tu.sec;
- + ppsinfobuf->assert_tu.tspec.tv_nsec = __fdata.info.assert_tu.nsec;
- + ppsinfobuf->clear_tu.tspec.tv_sec = __fdata.info.clear_tu.sec;
- + ppsinfobuf->clear_tu.tspec.tv_nsec = __fdata.info.clear_tu.nsec;
- + ppsinfobuf->current_mode = __fdata.info.current_mode;
- +
- + return ret;
- +}
- +
- +static __inline int time_pps_kcbind(pps_handle_t handle,
- + const int kernel_consumer,
- + const int edge, const int tsformat)
- +{
- + /* LinuxPPS doesn't implement kernel consumer feature */
- + errno = EOPNOTSUPP;
- + return -1;
- +}
- +
- +#endif /* _SYS_TIMEPPS_H_ */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement