[PATCH 4/4] pata_samsung: Add Samsung PATA controller driver

Sergei Shtylyov sshtylyov at mvista.com
Wed Jun 2 05:51:51 EDT 2010


Hello.

Kukjin Kim wrote:

>>> From: Abhilash Kesavan <a.kesavan at samsung.com>
>>> Adds support for the Samsung PATA controller. This driver is based on the
>>> Libata subsystem and references the earlier patches sent for IDE subsystem.

    Where I those I wonder? :-)
    It's a pity they didn't get accepted.

>>> Signed-off-by: Abhilash Kesavan <a.kesavan at samsung.com>
>>> Signed-off-by: Kukjin Kim <kgene.kim at samsung.com>

[...]

>>> +		for (i = 0; i < words; i++, temp_addr++) {
>>> +			wait_for_host_ready(info);
>>> +			writel(*temp_addr, data_addr);
>>> +		}
>>> +	}

>>     Well, if this is pere CF case, 'buflen' can't be odd, but otherwise

    I meant to type "pure". :-)

>> you should handle that case...

>>> +	uint pio_teoc[5] = { 240, 43, 10, 70, 25 };

>>     What timing is this? :-O

> Should have been t2i rec.

    If it's t2i timing, it is incorrect for the first 3 PIO modes.

>>> +	if (cpu_type == TYPE_S3C6400) {
>>> +		ap->ops = &pata_s3c_port_ops;
>>> +		info->sfr_addr = info->ide_addr + 0x1800;
>>> +		info->ide_addr = info->ide_addr + 0x1900;
>>> +		info->fifo_status_reg = 0x94;
>>> +	} else if (cpu_type == TYPE_S5PC100) {
>>> +		ap->ops = &pata_s5p_port_ops;
>>> +		info->sfr_addr = info->ide_addr + 0x1800;
>>> +		info->ide_addr = info->ide_addr + 0x1900;

>>     Does make sense to assign those before *if*.

> Offsets not required for S5PV210/S5PC110.

    pata_s3c_tune_chipset() certainly requires them.

>>> +		info->fifo_status_reg = 0x84;
>>> +	} else {
>>> +		ap->ops = &pata_s5p_port_ops;

>>     You don't assign 'info->ide_addr' here but you'll need it in
>> pata_s3c_tune_chipset() which will be called thru pata_s5p_port_ops!

> The address received at ioremap() is enough for S5PV210/S5PC110..no offset
> needed.

    I only have to restate that pata_s3c_tune_chipset() does use 
'info->ide_addr'. Maybe you shouldn't install this method for S5PV210/S5PC110? 
Or do you mean thgat offset of 0 will work?

>>> +release_mem:
>>> +	release_mem_region(res->start, res->end - res->start + 1);

>>     But you didn't call request_mem_region()!

> I didn't..will remove.

    But you should call request_mem_region() in one or another form...

MBR, Sergei



More information about the linux-arm-kernel mailing list