| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | #include <linux/kernel.h>
 | 
					
						
							|  |  |  | #include <linux/ide.h>
 | 
					
						
							|  |  |  | #include <linux/hdreg.h>
 | 
					
						
							| 
									
										
										
										
											2010-07-08 10:18:46 +02:00
										 |  |  | #include <linux/smp_lock.h>
 | 
					
						
							| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #include "ide-disk.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static const struct ide_ioctl_devset ide_disk_ioctl_settings[] = { | 
					
						
							|  |  |  | { HDIO_GET_ADDRESS,	HDIO_SET_ADDRESS,   &ide_devset_address   }, | 
					
						
							|  |  |  | { HDIO_GET_MULTCOUNT,	HDIO_SET_MULTCOUNT, &ide_devset_multcount }, | 
					
						
							|  |  |  | { HDIO_GET_NOWERR,	HDIO_SET_NOWERR,    &ide_devset_nowerr	  }, | 
					
						
							|  |  |  | { HDIO_GET_WCACHE,	HDIO_SET_WCACHE,    &ide_devset_wcache	  }, | 
					
						
							|  |  |  | { HDIO_GET_ACOUSTIC,	HDIO_SET_ACOUSTIC,  &ide_devset_acoustic  }, | 
					
						
							|  |  |  | { 0 } | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-16 10:23:20 -04:00
										 |  |  | int ide_disk_ioctl(ide_drive_t *drive, struct block_device *bdev, fmode_t mode, | 
					
						
							| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | 		   unsigned int cmd, unsigned long arg) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	int err; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 10:18:46 +02:00
										 |  |  | 	lock_kernel(); | 
					
						
							| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | 	err = ide_setting_ioctl(drive, bdev, cmd, arg, ide_disk_ioctl_settings); | 
					
						
							|  |  |  | 	if (err != -EOPNOTSUPP) | 
					
						
							| 
									
										
										
										
											2010-07-08 10:18:46 +02:00
										 |  |  | 		goto out; | 
					
						
							| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-08 10:18:46 +02:00
										 |  |  | 	err = generic_ide_ioctl(drive, bdev, cmd, arg); | 
					
						
							|  |  |  | out: | 
					
						
							|  |  |  | 	unlock_kernel(); | 
					
						
							|  |  |  | 	return err; | 
					
						
							| 
									
										
										
										
											2008-10-13 21:39:45 +02:00
										 |  |  | } |