mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	usb-storage: Modify and export adjust_quirks so that it can be used by uas
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
This commit is contained in:
		
							parent
							
								
									5bfd5b5d8b
								
							
						
					
					
						commit
						d24d481b7d
					
				
					 2 changed files with 13 additions and 6 deletions
				
			
		| 
						 | 
					@ -463,14 +463,14 @@ static int associate_dev(struct us_data *us, struct usb_interface *intf)
 | 
				
			||||||
#define TOLOWER(x) ((x) | 0x20)
 | 
					#define TOLOWER(x) ((x) | 0x20)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Adjust device flags based on the "quirks=" module parameter */
 | 
					/* Adjust device flags based on the "quirks=" module parameter */
 | 
				
			||||||
static void adjust_quirks(struct us_data *us)
 | 
					void usb_stor_adjust_quirks(struct usb_device *udev, unsigned long *fflags)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *p;
 | 
						char *p;
 | 
				
			||||||
	u16 vid = le16_to_cpu(us->pusb_dev->descriptor.idVendor);
 | 
						u16 vid = le16_to_cpu(udev->descriptor.idVendor);
 | 
				
			||||||
	u16 pid = le16_to_cpu(us->pusb_dev->descriptor.idProduct);
 | 
						u16 pid = le16_to_cpu(udev->descriptor.idProduct);
 | 
				
			||||||
	unsigned f = 0;
 | 
						unsigned f = 0;
 | 
				
			||||||
	unsigned int mask = (US_FL_SANE_SENSE | US_FL_BAD_SENSE |
 | 
						unsigned int mask = (US_FL_SANE_SENSE | US_FL_BAD_SENSE |
 | 
				
			||||||
			US_FL_FIX_CAPACITY |
 | 
								US_FL_FIX_CAPACITY | US_FL_IGNORE_UAS |
 | 
				
			||||||
			US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE |
 | 
								US_FL_CAPACITY_HEURISTICS | US_FL_IGNORE_DEVICE |
 | 
				
			||||||
			US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 |
 | 
								US_FL_NOT_LOCKABLE | US_FL_MAX_SECTORS_64 |
 | 
				
			||||||
			US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE |
 | 
								US_FL_CAPACITY_OK | US_FL_IGNORE_RESIDUE |
 | 
				
			||||||
| 
						 | 
					@ -541,14 +541,18 @@ static void adjust_quirks(struct us_data *us)
 | 
				
			||||||
		case 's':
 | 
							case 's':
 | 
				
			||||||
			f |= US_FL_SINGLE_LUN;
 | 
								f |= US_FL_SINGLE_LUN;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
 | 
							case 'u':
 | 
				
			||||||
 | 
								f |= US_FL_IGNORE_UAS;
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
		case 'w':
 | 
							case 'w':
 | 
				
			||||||
			f |= US_FL_NO_WP_DETECT;
 | 
								f |= US_FL_NO_WP_DETECT;
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		/* Ignore unrecognized flag characters */
 | 
							/* Ignore unrecognized flag characters */
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	us->fflags = (us->fflags & ~mask) | f;
 | 
						*fflags = (*fflags & ~mask) | f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL_GPL(usb_stor_adjust_quirks);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Get the unusual_devs entries and the string descriptors */
 | 
					/* Get the unusual_devs entries and the string descriptors */
 | 
				
			||||||
static int get_device_info(struct us_data *us, const struct usb_device_id *id,
 | 
					static int get_device_info(struct us_data *us, const struct usb_device_id *id,
 | 
				
			||||||
| 
						 | 
					@ -568,7 +572,7 @@ static int get_device_info(struct us_data *us, const struct usb_device_id *id,
 | 
				
			||||||
			idesc->bInterfaceProtocol :
 | 
								idesc->bInterfaceProtocol :
 | 
				
			||||||
			unusual_dev->useTransport;
 | 
								unusual_dev->useTransport;
 | 
				
			||||||
	us->fflags = id->driver_info;
 | 
						us->fflags = id->driver_info;
 | 
				
			||||||
	adjust_quirks(us);
 | 
						usb_stor_adjust_quirks(us->pusb_dev, &us->fflags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (us->fflags & US_FL_IGNORE_DEVICE) {
 | 
						if (us->fflags & US_FL_IGNORE_DEVICE) {
 | 
				
			||||||
		dev_info(pdev, "device ignored\n");
 | 
							dev_info(pdev, "device ignored\n");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -201,4 +201,7 @@ extern int usb_stor_probe1(struct us_data **pus,
 | 
				
			||||||
extern int usb_stor_probe2(struct us_data *us);
 | 
					extern int usb_stor_probe2(struct us_data *us);
 | 
				
			||||||
extern void usb_stor_disconnect(struct usb_interface *intf);
 | 
					extern void usb_stor_disconnect(struct usb_interface *intf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extern void usb_stor_adjust_quirks(struct usb_device *dev,
 | 
				
			||||||
 | 
							unsigned long *fflags);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue