Merge branch 'linus' into cpus4096
This commit is contained in:
Коммит
b9974dc6bd
|
@ -114,11 +114,11 @@ modules.
|
||||||
Then you must load the gadget serial driver. To load it as an
|
Then you must load the gadget serial driver. To load it as an
|
||||||
ACM device (recommended for interoperability), do this:
|
ACM device (recommended for interoperability), do this:
|
||||||
|
|
||||||
modprobe g_serial use_acm=1
|
modprobe g_serial
|
||||||
|
|
||||||
To load it as a vendor specific bulk in/out device, do this:
|
To load it as a vendor specific bulk in/out device, do this:
|
||||||
|
|
||||||
modprobe g_serial
|
modprobe g_serial use_acm=0
|
||||||
|
|
||||||
This will also automatically load the underlying gadget peripheral
|
This will also automatically load the underlying gadget peripheral
|
||||||
controller driver. This must be done each time you reboot the gadget
|
controller driver. This must be done each time you reboot the gadget
|
||||||
|
|
|
@ -49,8 +49,10 @@ it and 002/048 sometime later.
|
||||||
|
|
||||||
These files can be read as binary data. The binary data consists
|
These files can be read as binary data. The binary data consists
|
||||||
of first the device descriptor, then the descriptors for each
|
of first the device descriptor, then the descriptors for each
|
||||||
configuration of the device. That information is also shown in
|
configuration of the device. Multi-byte fields in the device and
|
||||||
text form by the /proc/bus/usb/devices file, described later.
|
configuration descriptors, but not other descriptors, are converted
|
||||||
|
to host endianness by the kernel. This information is also shown
|
||||||
|
in text form by the /proc/bus/usb/devices file, described later.
|
||||||
|
|
||||||
These files may also be used to write user-level drivers for the USB
|
These files may also be used to write user-level drivers for the USB
|
||||||
devices. You would open the /proc/bus/usb/BBB/DDD file read/write,
|
devices. You would open the /proc/bus/usb/BBB/DDD file read/write,
|
||||||
|
|
|
@ -34,11 +34,12 @@ if usbmon is built into the kernel.
|
||||||
Verify that bus sockets are present.
|
Verify that bus sockets are present.
|
||||||
|
|
||||||
# ls /sys/kernel/debug/usbmon
|
# ls /sys/kernel/debug/usbmon
|
||||||
0s 0t 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
|
0s 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
|
||||||
#
|
#
|
||||||
|
|
||||||
Now you can choose to either use the sockets numbered '0' (to capture packets on
|
Now you can choose to either use the socket '0u' (to capture packets on all
|
||||||
all buses), and skip to step #3, or find the bus used by your device with step #2.
|
buses), and skip to step #3, or find the bus used by your device with step #2.
|
||||||
|
This allows to filter away annoying devices that talk continuously.
|
||||||
|
|
||||||
2. Find which bus connects to the desired device
|
2. Find which bus connects to the desired device
|
||||||
|
|
||||||
|
@ -99,8 +100,9 @@ on the event type, but there is a set of words, common for all types.
|
||||||
|
|
||||||
Here is the list of words, from left to right:
|
Here is the list of words, from left to right:
|
||||||
|
|
||||||
- URB Tag. This is used to identify URBs is normally a kernel mode address
|
- URB Tag. This is used to identify URBs, and is normally an in-kernel address
|
||||||
of the URB structure in hexadecimal.
|
of the URB structure in hexadecimal, but can be a sequence number or any
|
||||||
|
other unique string, within reason.
|
||||||
|
|
||||||
- Timestamp in microseconds, a decimal number. The timestamp's resolution
|
- Timestamp in microseconds, a decimal number. The timestamp's resolution
|
||||||
depends on available clock, and so it can be much worse than a microsecond
|
depends on available clock, and so it can be much worse than a microsecond
|
||||||
|
|
|
@ -486,13 +486,13 @@ _GLOBAL(_tlbil_va)
|
||||||
tlbsx 0,r3
|
tlbsx 0,r3
|
||||||
mfspr r4,SPRN_MAS1 /* check valid */
|
mfspr r4,SPRN_MAS1 /* check valid */
|
||||||
andis. r3,r4,MAS1_VALID@h
|
andis. r3,r4,MAS1_VALID@h
|
||||||
beqlr
|
beq 1f
|
||||||
rlwinm r4,r4,0,1,31
|
rlwinm r4,r4,0,1,31
|
||||||
mtspr SPRN_MAS1,r4
|
mtspr SPRN_MAS1,r4
|
||||||
tlbwe
|
tlbwe
|
||||||
msync
|
msync
|
||||||
isync
|
isync
|
||||||
wrtee r10
|
1: wrtee r10
|
||||||
blr
|
blr
|
||||||
#endif /* CONFIG_FSL_BOOKE */
|
#endif /* CONFIG_FSL_BOOKE */
|
||||||
|
|
||||||
|
|
|
@ -556,6 +556,7 @@ unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size, co
|
||||||
be = blk->start + blk->size;
|
be = blk->start + blk->size;
|
||||||
if (s >= bs && e <= be)
|
if (s >= bs && e <= be)
|
||||||
break;
|
break;
|
||||||
|
blk = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blk == NULL)
|
if (blk == NULL)
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2003-2008 Xilinx Inc.
|
* (c) Copyright 2003-2008 Xilinx Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2003-2008 Xilinx Inc.
|
* (c) Copyright 2003-2008 Xilinx Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2007-2008 Xilinx Inc.
|
* (c) Copyright 2007-2008 Xilinx Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2007-2008 Xilinx Inc.
|
* (c) Copyright 2007-2008 Xilinx Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2002 Xilinx Inc., Systems Engineering Group
|
* (c) Copyright 2002 Xilinx Inc., Systems Engineering Group
|
||||||
* (c) Copyright 2004 Xilinx Inc., Systems Engineering Group
|
* (c) Copyright 2004 Xilinx Inc., Systems Engineering Group
|
||||||
* (c) Copyright 2007-2008 Xilinx Inc.
|
* (c) Copyright 2007-2008 Xilinx Inc.
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||||
* FOR A PARTICULAR PURPOSE.
|
* FOR A PARTICULAR PURPOSE.
|
||||||
*
|
*
|
||||||
* Xilinx products are not intended for use in life support appliances,
|
|
||||||
* devices, or systems. Use in such applications is expressly prohibited.
|
|
||||||
*
|
|
||||||
* (c) Copyright 2003-2007 Xilinx Inc.
|
* (c) Copyright 2003-2007 Xilinx Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
|
|
|
@ -365,6 +365,7 @@ static int cpm_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
|
||||||
pmsg = &msgs[tptr];
|
pmsg = &msgs[tptr];
|
||||||
if (pmsg->flags & I2C_M_RD)
|
if (pmsg->flags & I2C_M_RD)
|
||||||
ret = wait_event_interruptible_timeout(cpm->i2c_wait,
|
ret = wait_event_interruptible_timeout(cpm->i2c_wait,
|
||||||
|
(in_be16(&tbdf[tptr].cbd_sc) & BD_SC_NAK) ||
|
||||||
!(in_be16(&rbdf[rptr].cbd_sc) & BD_SC_EMPTY),
|
!(in_be16(&rbdf[rptr].cbd_sc) & BD_SC_EMPTY),
|
||||||
1 * HZ);
|
1 * HZ);
|
||||||
else
|
else
|
||||||
|
|
|
@ -56,6 +56,7 @@ enum s3c24xx_i2c_state {
|
||||||
struct s3c24xx_i2c {
|
struct s3c24xx_i2c {
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
wait_queue_head_t wait;
|
wait_queue_head_t wait;
|
||||||
|
unsigned int suspended:1;
|
||||||
|
|
||||||
struct i2c_msg *msg;
|
struct i2c_msg *msg;
|
||||||
unsigned int msg_num;
|
unsigned int msg_num;
|
||||||
|
@ -507,7 +508,7 @@ static int s3c24xx_i2c_doxfer(struct s3c24xx_i2c *i2c, struct i2c_msg *msgs, int
|
||||||
unsigned long timeout;
|
unsigned long timeout;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (!(readl(i2c->regs + S3C2410_IICCON) & S3C2410_IICCON_IRQEN))
|
if (i2c->suspended)
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
|
||||||
ret = s3c24xx_i2c_set_master(i2c);
|
ret = s3c24xx_i2c_set_master(i2c);
|
||||||
|
@ -986,17 +987,26 @@ static int s3c24xx_i2c_remove(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
|
static int s3c24xx_i2c_suspend_late(struct platform_device *dev,
|
||||||
|
pm_message_t msg)
|
||||||
|
{
|
||||||
|
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
|
||||||
|
i2c->suspended = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int s3c24xx_i2c_resume(struct platform_device *dev)
|
static int s3c24xx_i2c_resume(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
|
struct s3c24xx_i2c *i2c = platform_get_drvdata(dev);
|
||||||
|
|
||||||
if (i2c != NULL)
|
i2c->suspended = 0;
|
||||||
s3c24xx_i2c_init(i2c);
|
s3c24xx_i2c_init(i2c);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
#define s3c24xx_i2c_suspend_late NULL
|
||||||
#define s3c24xx_i2c_resume NULL
|
#define s3c24xx_i2c_resume NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1005,6 +1015,7 @@ static int s3c24xx_i2c_resume(struct platform_device *dev)
|
||||||
static struct platform_driver s3c2410_i2c_driver = {
|
static struct platform_driver s3c2410_i2c_driver = {
|
||||||
.probe = s3c24xx_i2c_probe,
|
.probe = s3c24xx_i2c_probe,
|
||||||
.remove = s3c24xx_i2c_remove,
|
.remove = s3c24xx_i2c_remove,
|
||||||
|
.suspend_late = s3c24xx_i2c_suspend_late,
|
||||||
.resume = s3c24xx_i2c_resume,
|
.resume = s3c24xx_i2c_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
@ -1015,6 +1026,7 @@ static struct platform_driver s3c2410_i2c_driver = {
|
||||||
static struct platform_driver s3c2440_i2c_driver = {
|
static struct platform_driver s3c2440_i2c_driver = {
|
||||||
.probe = s3c24xx_i2c_probe,
|
.probe = s3c24xx_i2c_probe,
|
||||||
.remove = s3c24xx_i2c_remove,
|
.remove = s3c24xx_i2c_remove,
|
||||||
|
.suspend_late = s3c24xx_i2c_suspend_late,
|
||||||
.resume = s3c24xx_i2c_resume,
|
.resume = s3c24xx_i2c_resume,
|
||||||
.driver = {
|
.driver = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
|
|
|
@ -22,6 +22,8 @@ menuconfig STAGING
|
||||||
If in doubt, say N here.
|
If in doubt, say N here.
|
||||||
|
|
||||||
|
|
||||||
|
if STAGING
|
||||||
|
|
||||||
config STAGING_EXCLUDE_BUILD
|
config STAGING_EXCLUDE_BUILD
|
||||||
bool "Exclude Staging drivers from being built" if STAGING
|
bool "Exclude Staging drivers from being built" if STAGING
|
||||||
default y
|
default y
|
||||||
|
@ -62,3 +64,4 @@ source "drivers/staging/at76_usb/Kconfig"
|
||||||
source "drivers/staging/poch/Kconfig"
|
source "drivers/staging/poch/Kconfig"
|
||||||
|
|
||||||
endif # !STAGING_EXCLUDE_BUILD
|
endif # !STAGING_EXCLUDE_BUILD
|
||||||
|
endif # STAGING
|
||||||
|
|
|
@ -51,6 +51,7 @@ static struct usb_device_id usbtmc_devices[] = {
|
||||||
{ USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), },
|
{ USB_INTERFACE_INFO(USB_CLASS_APP_SPEC, 3, 0), },
|
||||||
{ 0, } /* terminating entry */
|
{ 0, } /* terminating entry */
|
||||||
};
|
};
|
||||||
|
MODULE_DEVICE_TABLE(usb, usbtmc_devices);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This structure is the capabilities for the device
|
* This structure is the capabilities for the device
|
||||||
|
|
|
@ -279,7 +279,9 @@ static int usb_unbind_interface(struct device *dev)
|
||||||
* altsetting means creating new endpoint device entries).
|
* altsetting means creating new endpoint device entries).
|
||||||
* When either of these happens, defer the Set-Interface.
|
* When either of these happens, defer the Set-Interface.
|
||||||
*/
|
*/
|
||||||
if (!error && intf->dev.power.status == DPM_ON)
|
if (intf->cur_altsetting->desc.bAlternateSetting == 0)
|
||||||
|
; /* Already in altsetting 0 so skip Set-Interface */
|
||||||
|
else if (!error && intf->dev.power.status == DPM_ON)
|
||||||
usb_set_interface(udev, intf->altsetting[0].
|
usb_set_interface(udev, intf->altsetting[0].
|
||||||
desc.bInterfaceNumber, 0);
|
desc.bInterfaceNumber, 0);
|
||||||
else
|
else
|
||||||
|
|
|
@ -651,6 +651,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
|
||||||
fs_in_desc.bEndpointAddress;
|
fs_in_desc.bEndpointAddress;
|
||||||
hs_out_desc.bEndpointAddress =
|
hs_out_desc.bEndpointAddress =
|
||||||
fs_out_desc.bEndpointAddress;
|
fs_out_desc.bEndpointAddress;
|
||||||
|
hs_notify_desc.bEndpointAddress =
|
||||||
|
fs_notify_desc.bEndpointAddress;
|
||||||
|
|
||||||
/* copy descriptors, and track endpoint copies */
|
/* copy descriptors, and track endpoint copies */
|
||||||
f->hs_descriptors = usb_copy_descriptors(eth_hs_function);
|
f->hs_descriptors = usb_copy_descriptors(eth_hs_function);
|
||||||
|
@ -662,6 +664,8 @@ rndis_bind(struct usb_configuration *c, struct usb_function *f)
|
||||||
f->hs_descriptors, &hs_in_desc);
|
f->hs_descriptors, &hs_in_desc);
|
||||||
rndis->hs.out = usb_find_endpoint(eth_hs_function,
|
rndis->hs.out = usb_find_endpoint(eth_hs_function,
|
||||||
f->hs_descriptors, &hs_out_desc);
|
f->hs_descriptors, &hs_out_desc);
|
||||||
|
rndis->hs.notify = usb_find_endpoint(eth_hs_function,
|
||||||
|
f->hs_descriptors, &hs_notify_desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
rndis->port.open = rndis_open;
|
rndis->port.open = rndis_open;
|
||||||
|
|
|
@ -143,6 +143,7 @@ static struct ftdi_sio_quirk ftdi_HE_TIRA1_quirk = {
|
||||||
static struct usb_device_id id_table_combined [] = {
|
static struct usb_device_id id_table_combined [] = {
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_AMC232_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_CANUSB_PID) },
|
||||||
|
{ USB_DEVICE(FTDI_VID, FTDI_CANDAPTER_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_0_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_1_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_SCS_DEVICE_2_PID) },
|
||||||
|
@ -166,6 +167,7 @@ static struct usb_device_id id_table_combined [] = {
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) },
|
||||||
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
|
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
|
||||||
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
|
{ USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
|
||||||
|
{ USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
|
||||||
{ USB_DEVICE(FTDI_VID, FTDI_XF_547_PID) },
|
{ USB_DEVICE(FTDI_VID, FTDI_XF_547_PID) },
|
||||||
|
|
|
@ -40,6 +40,9 @@
|
||||||
/* AlphaMicro Components AMC-232USB01 device */
|
/* AlphaMicro Components AMC-232USB01 device */
|
||||||
#define FTDI_AMC232_PID 0xFF00 /* Product Id */
|
#define FTDI_AMC232_PID 0xFF00 /* Product Id */
|
||||||
|
|
||||||
|
/* www.candapter.com Ewert Energy Systems CANdapter device */
|
||||||
|
#define FTDI_CANDAPTER_PID 0x9F80 /* Product Id */
|
||||||
|
|
||||||
/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
|
/* SCS HF Radio Modems PID's (http://www.scs-ptc.com) */
|
||||||
/* the VID is the standard ftdi vid (FTDI_VID) */
|
/* the VID is the standard ftdi vid (FTDI_VID) */
|
||||||
#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
|
#define FTDI_SCS_DEVICE_0_PID 0xD010 /* SCS PTC-IIusb */
|
||||||
|
@ -75,6 +78,9 @@
|
||||||
/* OpenDCC (www.opendcc.de) product id */
|
/* OpenDCC (www.opendcc.de) product id */
|
||||||
#define FTDI_OPENDCC_PID 0xBFD8
|
#define FTDI_OPENDCC_PID 0xBFD8
|
||||||
|
|
||||||
|
/* Sprog II (Andrew Crosland's SprogII DCC interface) */
|
||||||
|
#define FTDI_SPROG_II 0xF0C8
|
||||||
|
|
||||||
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
|
/* www.crystalfontz.com devices - thanx for providing free devices for evaluation ! */
|
||||||
/* they use the ftdi chipset for the USB interface and the vendor id is the same */
|
/* they use the ftdi chipset for the USB interface and the vendor id is the same */
|
||||||
#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
|
#define FTDI_XF_632_PID 0xFC08 /* 632: 16x2 Character Display */
|
||||||
|
|
|
@ -91,6 +91,8 @@ static struct usb_device_id id_table [] = {
|
||||||
{ USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
|
{ USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
|
||||||
{ USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) },
|
{ USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) },
|
||||||
{ USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) },
|
{ USB_DEVICE(YCCABLE_VENDOR_ID, YCCABLE_PRODUCT_ID) },
|
||||||
|
{ USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) },
|
||||||
|
{ USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) },
|
||||||
{ } /* Terminating entry */
|
{ } /* Terminating entry */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -110,3 +110,11 @@
|
||||||
/* Y.C. Cable U.S.A., Inc - USB to RS-232 */
|
/* Y.C. Cable U.S.A., Inc - USB to RS-232 */
|
||||||
#define YCCABLE_VENDOR_ID 0x05ad
|
#define YCCABLE_VENDOR_ID 0x05ad
|
||||||
#define YCCABLE_PRODUCT_ID 0x0fba
|
#define YCCABLE_PRODUCT_ID 0x0fba
|
||||||
|
|
||||||
|
/* "Superial" USB - Serial */
|
||||||
|
#define SUPERIAL_VENDOR_ID 0x5372
|
||||||
|
#define SUPERIAL_PRODUCT_ID 0x2303
|
||||||
|
|
||||||
|
/* Hewlett-Packard LD220-HP POS Pole Display */
|
||||||
|
#define HP_VENDOR_ID 0x03f0
|
||||||
|
#define HP_LD220_PRODUCT_ID 0x3524
|
||||||
|
|
|
@ -16,56 +16,6 @@
|
||||||
* For questions or problems with this driver, contact Texas Instruments
|
* For questions or problems with this driver, contact Texas Instruments
|
||||||
* technical support, or Al Borchers <alborchers@steinerpoint.com>, or
|
* technical support, or Al Borchers <alborchers@steinerpoint.com>, or
|
||||||
* Peter Berger <pberger@brimson.com>.
|
* Peter Berger <pberger@brimson.com>.
|
||||||
*
|
|
||||||
* This driver needs this hotplug script in /etc/hotplug/usb/ti_usb_3410_5052
|
|
||||||
* or in /etc/hotplug.d/usb/ti_usb_3410_5052.hotplug to set the device
|
|
||||||
* configuration.
|
|
||||||
*
|
|
||||||
* #!/bin/bash
|
|
||||||
*
|
|
||||||
* BOOT_CONFIG=1
|
|
||||||
* ACTIVE_CONFIG=2
|
|
||||||
*
|
|
||||||
* if [[ "$ACTION" != "add" ]]
|
|
||||||
* then
|
|
||||||
* exit
|
|
||||||
* fi
|
|
||||||
*
|
|
||||||
* CONFIG_PATH=/sys${DEVPATH%/?*}/bConfigurationValue
|
|
||||||
*
|
|
||||||
* if [[ 0`cat $CONFIG_PATH` -ne $BOOT_CONFIG ]]
|
|
||||||
* then
|
|
||||||
* exit
|
|
||||||
* fi
|
|
||||||
*
|
|
||||||
* PRODUCT=${PRODUCT%/?*} # delete version
|
|
||||||
* VENDOR_ID=`printf "%d" 0x${PRODUCT%/?*}`
|
|
||||||
* PRODUCT_ID=`printf "%d" 0x${PRODUCT#*?/}`
|
|
||||||
*
|
|
||||||
* PARAM_PATH=/sys/module/ti_usb_3410_5052/parameters
|
|
||||||
*
|
|
||||||
* function scan() {
|
|
||||||
* s=$1
|
|
||||||
* shift
|
|
||||||
* for i
|
|
||||||
* do
|
|
||||||
* if [[ $s -eq $i ]]
|
|
||||||
* then
|
|
||||||
* return 0
|
|
||||||
* fi
|
|
||||||
* done
|
|
||||||
* return 1
|
|
||||||
* }
|
|
||||||
*
|
|
||||||
* IFS=$IFS,
|
|
||||||
*
|
|
||||||
* if (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_3410` &&
|
|
||||||
* scan $PRODUCT_ID 13328 `cat $PARAM_PATH/product_3410`) ||
|
|
||||||
* (scan $VENDOR_ID 1105 `cat $PARAM_PATH/vendor_5052` &&
|
|
||||||
* scan $PRODUCT_ID 20562 20818 20570 20575 `cat $PARAM_PATH/product_5052`)
|
|
||||||
* then
|
|
||||||
* echo $ACTIVE_CONFIG > $CONFIG_PATH
|
|
||||||
* fi
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
@ -457,9 +407,10 @@ static int ti_startup(struct usb_serial *serial)
|
||||||
goto free_tdev;
|
goto free_tdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the second configuration must be set (in sysfs by hotplug script) */
|
/* the second configuration must be set */
|
||||||
if (dev->actconfig->desc.bConfigurationValue == TI_BOOT_CONFIG) {
|
if (dev->actconfig->desc.bConfigurationValue == TI_BOOT_CONFIG) {
|
||||||
status = -ENODEV;
|
status = usb_driver_set_configuration(dev, TI_ACTIVE_CONFIG);
|
||||||
|
status = status ? status : -ENODEV;
|
||||||
goto free_tdev;
|
goto free_tdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -167,8 +167,22 @@ UNUSUAL_DEV( 0x0421, 0x005d, 0x0001, 0x0600,
|
||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
US_FL_FIX_CAPACITY ),
|
US_FL_FIX_CAPACITY ),
|
||||||
|
|
||||||
|
/* Reported by Ozan Sener <themgzzy@gmail.com> */
|
||||||
|
UNUSUAL_DEV( 0x0421, 0x0060, 0x0551, 0x0551,
|
||||||
|
"Nokia",
|
||||||
|
"3500c",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
|
US_FL_FIX_CAPACITY ),
|
||||||
|
|
||||||
|
/* Reported by CSECSY Laszlo <boobaa@frugalware.org> */
|
||||||
|
UNUSUAL_DEV( 0x0421, 0x0063, 0x0001, 0x0601,
|
||||||
|
"Nokia",
|
||||||
|
"Nokia 3109c",
|
||||||
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
|
US_FL_FIX_CAPACITY ),
|
||||||
|
|
||||||
/* Patch for Nokia 5310 capacity */
|
/* Patch for Nokia 5310 capacity */
|
||||||
UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0591,
|
UNUSUAL_DEV( 0x0421, 0x006a, 0x0000, 0x0701,
|
||||||
"Nokia",
|
"Nokia",
|
||||||
"5310",
|
"5310",
|
||||||
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
US_SC_DEVICE, US_PR_DEVICE, NULL,
|
||||||
|
|
|
@ -3983,7 +3983,8 @@ parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr,
|
||||||
|
|
||||||
node->flags = le16_to_cpu(pSMBr->DFSFlags);
|
node->flags = le16_to_cpu(pSMBr->DFSFlags);
|
||||||
if (is_unicode) {
|
if (is_unicode) {
|
||||||
__le16 *tmp = kmalloc(strlen(searchName)*2, GFP_KERNEL);
|
__le16 *tmp = kmalloc(strlen(searchName)*2 + 2,
|
||||||
|
GFP_KERNEL);
|
||||||
cifsConvertToUCS((__le16 *) tmp, searchName,
|
cifsConvertToUCS((__le16 *) tmp, searchName,
|
||||||
PATH_MAX, nls_codepage, remap);
|
PATH_MAX, nls_codepage, remap);
|
||||||
node->path_consumed = hostlen_fromUCS(tmp,
|
node->path_consumed = hostlen_fromUCS(tmp,
|
||||||
|
|
|
@ -86,7 +86,8 @@
|
||||||
#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
|
#define OCFS2_CLEAR_INCOMPAT_FEATURE(sb,mask) \
|
||||||
OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
|
OCFS2_SB(sb)->s_feature_incompat &= ~(mask)
|
||||||
|
|
||||||
#define OCFS2_FEATURE_COMPAT_SUPP OCFS2_FEATURE_COMPAT_BACKUP_SB
|
#define OCFS2_FEATURE_COMPAT_SUPP (OCFS2_FEATURE_COMPAT_BACKUP_SB \
|
||||||
|
| OCFS2_FEATURE_COMPAT_JBD2_SB)
|
||||||
#define OCFS2_FEATURE_INCOMPAT_SUPP (OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT \
|
#define OCFS2_FEATURE_INCOMPAT_SUPP (OCFS2_FEATURE_INCOMPAT_LOCAL_MOUNT \
|
||||||
| OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \
|
| OCFS2_FEATURE_INCOMPAT_SPARSE_ALLOC \
|
||||||
| OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
|
| OCFS2_FEATURE_INCOMPAT_INLINE_DATA \
|
||||||
|
@ -152,6 +153,11 @@
|
||||||
*/
|
*/
|
||||||
#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
|
#define OCFS2_FEATURE_COMPAT_BACKUP_SB 0x0001
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The filesystem will correctly handle journal feature bits.
|
||||||
|
*/
|
||||||
|
#define OCFS2_FEATURE_COMPAT_JBD2_SB 0x0002
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unwritten extents support.
|
* Unwritten extents support.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2645,9 +2645,9 @@ static int ocfs2_xattr_update_xattr_search(struct inode *inode,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = xs->here - old_xh->xh_entries;
|
|
||||||
xs->here = &xs->header->xh_entries[i];
|
|
||||||
}
|
}
|
||||||
|
i = xs->here - old_xh->xh_entries;
|
||||||
|
xs->here = &xs->header->xh_entries[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -158,8 +158,12 @@ struct usb_ctrlrequest {
|
||||||
* (rarely) accepted by SET_DESCRIPTOR.
|
* (rarely) accepted by SET_DESCRIPTOR.
|
||||||
*
|
*
|
||||||
* Note that all multi-byte values here are encoded in little endian
|
* Note that all multi-byte values here are encoded in little endian
|
||||||
* byte order "on the wire". But when exposed through Linux-USB APIs,
|
* byte order "on the wire". Within the kernel and when exposed
|
||||||
* they've been converted to cpu byte order.
|
* through the Linux-USB APIs, they are not converted to cpu byte
|
||||||
|
* order; it is the responsibility of the client code to do this.
|
||||||
|
* The single exception is when device and configuration descriptors (but
|
||||||
|
* not other descriptors) are read from usbfs (i.e. /proc/bus/usb/BBB/DDD);
|
||||||
|
* in this case the fields are converted to host endianness by the kernel.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -135,7 +135,7 @@ int unregister_dynamic_debug_module(char *mod_name)
|
||||||
nr_entries--;
|
nr_entries--;
|
||||||
out:
|
out:
|
||||||
up(&debug_list_mutex);
|
up(&debug_list_mutex);
|
||||||
return 0;
|
return ret;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module);
|
EXPORT_SYMBOL_GPL(unregister_dynamic_debug_module);
|
||||||
|
|
||||||
|
@ -289,7 +289,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
|
||||||
dynamic_enabled = DYNAMIC_ENABLED_SOME;
|
dynamic_enabled = DYNAMIC_ENABLED_SOME;
|
||||||
err = 0;
|
err = 0;
|
||||||
printk(KERN_DEBUG
|
printk(KERN_DEBUG
|
||||||
"debugging enabled for module %s",
|
"debugging enabled for module %s\n",
|
||||||
elem->name);
|
elem->name);
|
||||||
} else if (!value && (elem->enable == 1)) {
|
} else if (!value && (elem->enable == 1)) {
|
||||||
elem->enable = 0;
|
elem->enable = 0;
|
||||||
|
@ -309,7 +309,7 @@ static ssize_t pr_debug_write(struct file *file, const char __user *buf,
|
||||||
err = 0;
|
err = 0;
|
||||||
printk(KERN_DEBUG
|
printk(KERN_DEBUG
|
||||||
"debugging disabled for module "
|
"debugging disabled for module "
|
||||||
"%s", elem->name);
|
"%s\n", elem->name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче