* HP 6020 writers now supported.
*/
-#include <linux/config.h>
+#include <linux/cdrom.h>
#include <linux/errno.h>
#include <linux/string.h>
#include <linux/bcd.h>
-
#include <linux/blkdev.h>
-#include "scsi.h"
-#include "hosts.h"
+
+#include <scsi/scsi.h>
+#include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
+#include <scsi/scsi_host.h>
#include <scsi/scsi_ioctl.h>
-#include <linux/cdrom.h>
#include "sr.h"
#if 0
#ifndef CONFIG_BLK_DEV_SR_VENDOR
cd->vendor = VENDOR_SCSI3;
#else
- char *vendor = cd->device->vendor;
- char *model = cd->device->model;
+ const char *vendor = cd->device->vendor;
+ const char *model = cd->device->model;
/* default */
cd->vendor = VENDOR_SCSI3;
int sr_set_blocklength(Scsi_CD *cd, int blocklength)
{
unsigned char *buffer; /* the buffer for the ioctl */
- struct cdrom_generic_command cgc;
+ struct packet_command cgc;
struct ccs_modesel_head *modesel;
int rc, density = 0;
density = (blocklength > 2048) ? 0x81 : 0x83;
#endif
- buffer = (unsigned char *) kmalloc(512, GFP_KERNEL | GFP_DMA);
+ buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
if (!buffer)
return -ENOMEM;
#ifdef DEBUG
printk("%s: MODE SELECT 0x%x/%d\n", cd->cdi.name, density, blocklength);
#endif
- memset(&cgc, 0, sizeof(struct cdrom_generic_command));
+ memset(&cgc, 0, sizeof(struct packet_command));
cgc.cmd[0] = MODE_SELECT;
cgc.cmd[1] = (1 << 4);
cgc.cmd[4] = 12;
modesel->block_length_lo = blocklength & 0xff;
cgc.buffer = buffer;
cgc.buflen = sizeof(*modesel);
- cgc.data_direction = SCSI_DATA_WRITE;
+ cgc.data_direction = DMA_TO_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
if (0 == (rc = sr_do_ioctl(cd, &cgc))) {
cd->device->sector_size = blocklength;
Scsi_CD *cd = cdi->handle;
unsigned long sector;
unsigned char *buffer; /* the buffer for the ioctl */
- struct cdrom_generic_command cgc;
+ struct packet_command cgc;
int rc, no_multi;
if (cd->cdi.mask & CDC_MULTI_SESSION)
return 0;
- buffer = (unsigned char *) kmalloc(512, GFP_KERNEL | GFP_DMA);
+ buffer = kmalloc(512, GFP_KERNEL | GFP_DMA);
if (!buffer)
return -ENOMEM;
no_multi = 0; /* flag: the drive can't handle multisession */
rc = 0;
- memset(&cgc, 0, sizeof(struct cdrom_generic_command));
+ memset(&cgc, 0, sizeof(struct packet_command));
switch (cd->vendor) {
cgc.buffer = buffer;
cgc.buflen = 12;
cgc.quiet = 1;
- cgc.data_direction = SCSI_DATA_READ;
+ cgc.data_direction = DMA_FROM_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
rc = sr_do_ioctl(cd, &cgc);
if (rc != 0)
cgc.buffer = buffer;
cgc.buflen = 0x16;
cgc.quiet = 1;
- cgc.data_direction = SCSI_DATA_READ;
+ cgc.data_direction = DMA_FROM_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
rc = sr_do_ioctl(cd, &cgc);
if (rc != 0)
cgc.buffer = buffer;
cgc.buflen = 4;
cgc.quiet = 1;
- cgc.data_direction = SCSI_DATA_READ;
+ cgc.data_direction = DMA_FROM_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
rc = sr_do_ioctl(cd, &cgc);
if (rc == -EINVAL) {
cgc.buffer = buffer;
cgc.buflen = 0x04;
cgc.quiet = 1;
- cgc.data_direction = SCSI_DATA_READ;
+ cgc.data_direction = DMA_FROM_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
rc = sr_do_ioctl(cd, &cgc);
if (rc != 0) {
cgc.buffer = buffer;
cgc.buflen = 12;
cgc.quiet = 1;
- cgc.data_direction = SCSI_DATA_READ;
+ cgc.data_direction = DMA_FROM_DEVICE;
cgc.timeout = VENDOR_TIMEOUT;
rc = sr_do_ioctl(cd, &cgc);
if (rc != 0) {