[patch 5/6] ps3: ROM Storage Driver
Geert Uytterhoeven
Geert.Uytterhoeven at sonycom.com
Tue Jun 19 22:29:49 EST 2007
On Mon, 18 Jun 2007, Milton Miller wrote:
> > +config PS3_ROM
> > + tristate "PS3 ROM Storage Driver"
> > + depends on PPC_PS3 && BLK_DEV_SR
> > + select PS3_STORAGE
> > + help
> > + Include support for the PS3 ROM Storage.
> > +
> > + This support is required to access the PS3 BD/DVD/CD-ROM drive.
> > + In general, all users will say Y or M.
> > +
>
>
> When I think ROM I usually dont' start with optical media.
>
> Have you condered calling this the optical driver?
The name comes from the SCSI device type (0x05 == TYPE_ROM). But if people
prefer ps3atapi, I can change it.
> Or at least putting BD?DVD?CD-ROM on the prompt.
>
>
> Why does it depend on BLK_DEV_SR?
Because it needs SCSI CD-ROM support.
> > +static int __devinit ps3rom_probe(struct ps3_system_bus_device *_dev)
> > +{
> > + struct ps3_storage_device *dev = to_ps3_storage_device(&_dev->core);
> > + int error;
> > + struct Scsi_Host *host;
> > + struct ps3rom_private *priv;
> > +
> > + if (dev->blk_size != CD_FRAMESIZE) {
> > + dev_err(&dev->sbd.core,
> > + "%s:%u: cannot handle block size %lu\n", __func__,
> > + __LINE__, dev->blk_size);
> > + return -EINVAL;
> > + }
> > +
> > + dev->bounce_size = BOUNCE_SIZE;
> > + dev->bounce_buf = kmalloc(BOUNCE_SIZE, GFP_DMA);
> > + if (!dev->bounce_buf) {
> > + return -ENOMEM;
> > + }
> > +
> > + error = ps3stor_setup(dev);
> > + if (error)
> > + goto fail_free_bounce;
> > +
> > + /* override the interrupt handler */
> > + free_irq(dev->irq, dev);
> > + error = request_irq(dev->irq, ps3rom_interrupt, IRQF_DISABLED,
> > + dev->sbd.core.driver->name, dev);
> > + if (error) {
> > + dev_err(&dev->sbd.core, "%s:%u: request_irq failed %d\n",
> > + __func__, __LINE__, error);
> > + goto fail_teardown;
> > + }
> > +
>
> Somebody's help isn't helpful? Layering problem?
ps3stor_setup() tries to read from the device to check its accessibility,
and uses a simple interrupt routine for synchronous operations (using the
completion). This interrupt routine is also used for ps3flash.
Ps3rom and ps3disk do asynchronous device accesses, hence they use different
interrupt routines.
I guess I can add synchronous support to the ps3rom interrupt handler (ps3disk
already has this, for sync cache), so ps3stor_setup() can use them for probing,
too.
With kind regards,
Geert Uytterhoeven
Software Architect
Sony Network and Software Technology Center Europe
The Corporate Village · Da Vincilaan 7-D1 · B-1935 Zaventem · Belgium
Phone: +32 (0)2 700 8453
Fax: +32 (0)2 700 8622
E-mail: Geert.Uytterhoeven at sonycom.com
Internet: http://www.sony-europe.com/
Sony Network and Software Technology Center Europe
A division of Sony Service Centre (Europe) N.V.
Registered office: Technologielaan 7 · B-1840 Londerzeel · Belgium
VAT BE 0413.825.160 · RPR Brussels
Fortis Bank Zaventem · Swift GEBABEBB08A · IBAN BE39001382358619
More information about the Linuxppc-dev
mailing list