PREP Hardware goes IDE again

VALETTE Eric valette at crf.canon.fr
Thu Dec 10 21:00:27 EST 1998


>>>>> "Alois" == Alois Fertl <alois_fertl at TalkNet.de> writes:

Alois> Here are some small patches (ralative to 2.1.129) which make IDE
Alois> working on PREP Hardware especially the RiscPC (probably also needed
Alois> for MPC750).

Unfortunately, nearly all the change you have proposed are either
irrelevant for MCP750 or worse will cause it to not function.

Alois> The first problem I had was related to interrups on the RiscPC.
Alois> It always assigned IRQ13 to the IDE port. However actually the
Alois> port is connected to IRQ14. The next problem was that prep_pci.c
Alois> assigned IRQ14 to PCI. The Patch now assigns 14 to IDE and uses
Alois> 9,11 and 15 for PCI. In addition to this it sets the edge/level
Alois> control according to PCI preconfiguration. In addition it adds
Alois> 3 more entries to the Blackhawk table.

This is true only if you do not try to use the "full native PCI mode".
In that case you should not look at IDE assigned value in the PCB
but at the PCI interrupt line. This is what happens on MCP750 as
the code automatically switch the driver to "full native PCI mode".

Alois> The second problem was that the partition table of a DOS IDE drive
Alois> was not recognized unless I specified hda=swapdata at the boot prompt.
Alois> IDE CD-Rom drives were not recognized at all. All the required coding
Alois> to operate IDE devices correctly is already there but it is not used
Alois> for PREP hardware. I changed ide.h so that PREP is handled the same
Alois> way as CHRP. This makes IDE disks and CD-roms work without the need
Alois> to specify boot options.

This breaks the MCP750. I tried the patch below, and was not detecting the disk
correctly : everything was incorrectly swapped (including the name of the disk).
My mcp750 system will run correctly *only* if this patch is not included...

Alois>  static __inline__ void ide_fix_driveid (struct hd_driveid *id) {
Alois> -	if (( _machine == _MACH_Pmac ) || (_machine == _MACH_chrp)|| (_machine == _MACH_mbx) ) {
Alois> +	if (( _machine == _MACH_Pmac ) || (_machine == _MACH_chrp)|| (_machine == _MACH_mbx) || (_machine == _MACH_prep) ) {
 
Since you and mark are motorola felow I will ask you a favor as I did not find
anything on the public docs. In the MCP750A/PG1 manual, page 4-5, I would like
to know how to program PCB and more specifically the PIRQ control route. 
I do not find anything in the doc.

-- eric

[[ This message was sent via the linuxppc-dev mailing list. Replies are ]]
[[ not forced back to the list, so be sure to  Cc linuxppc-dev  if your ]]
[[ reply is of general interest. To unsubscribe from linuxppc-dev, send ]]
[[ the message 'unsubscribe' to linuxppc-dev-request at lists.linuxppc.org ]]




More information about the Linuxppc-dev mailing list