* mpc5200 and pcmcia
@ 2005-09-28 12:23 Derycke, Johan
2005-09-28 23:26 ` Andrew Dennison
0 siblings, 1 reply; 7+ messages in thread
From: Derycke, Johan @ 2005-09-28 12:23 UTC (permalink / raw)
To: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 475 bytes --]
Hi all,
I am working on a custom board based on the Lite5200.
It is expanded with a PCI1410 PC Card Controller on the PCI bus.
In the history of this list I found a patch against an older kernel version
to solve some issues:
http://ozlabs.org/pipermail/linuxppc-embedded/2004-December/016273.html
I took the old 2.4.23 kernel and applied the patch.
I could get my 3c589 network adaptor to work.
Is this patch available for the current 2.4.25 kernel?
Br,
Johan Derycke
[-- Attachment #2: Type: text/html, Size: 1146 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: mpc5200 and pcmcia
2005-09-28 12:23 mpc5200 and pcmcia Derycke, Johan
@ 2005-09-28 23:26 ` Andrew Dennison
0 siblings, 0 replies; 7+ messages in thread
From: Andrew Dennison @ 2005-09-28 23:26 UTC (permalink / raw)
To: Derycke, Johan; +Cc: linuxppc-embedded
On 9/28/05, Derycke, Johan <johan.derycke@barco.com> wrote:
>
> I am working on a custom board based on the Lite5200.
> It is expanded with a PCI1410 PC Card Controller on the PCI bus.
>
> In the history of this list I found a patch against an older kernel versi=
on
> to solve some issues:
> http://ozlabs.org/pipermail/linuxppc-embedded/2004-December/016273.html
>
> I took the old 2.4.23 kernel and applied the patch.
> I could get my 3c589 network adaptor to work.
Nice to get some feedback, Your the second person that has used it.
> Is this patch available for the current 2.4.25 kernel?
>
It will work conceptually with 2.4.25 as I'm currently running a
relatively recent denx kernel with similar changes. I haven't
published a recent patch yet as there wasn't much feedback last
time...
I've recently done some more work on this to clean it up, for example
USB didn't work with that previous patch but they now coesist happily.
I'll look at posting a patch soon when it's merged into my shiny new GIT tr=
ee.
Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: mpc5200 and pcmcia
@ 2005-10-03 13:56 Derycke, Johan
2005-10-04 4:31 ` Andrew Dennison
0 siblings, 1 reply; 7+ messages in thread
From: Derycke, Johan @ 2005-10-03 13:56 UTC (permalink / raw)
To: Andrew Dennison; +Cc: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 2166 bytes --]
Hi Andrew,
I am looking forward to your patch.
If there is anything you want me to test let me know...
Does it support 32bit cards?
Br,
Johan
-----Original Message-----
From: Andrew Dennison [mailto:andrewd.lists@gmail.com]
Sent: donderdag 29 september 2005 1:26
To: Derycke, Johan
Cc: linuxppc-embedded@ozlabs.org
Subject: Re: mpc5200 and pcmcia
On 9/28/05, Derycke, Johan <johan.derycke@barco.com> wrote:
>
> I am working on a custom board based on the Lite5200.
> It is expanded with a PCI1410 PC Card Controller on the PCI bus.
>
> In the history of this list I found a patch against an older kernel
version
> to solve some issues:
> http://ozlabs.org/pipermail/linuxppc-embedded/2004-December/016273.html
>
> I took the old 2.4.23 kernel and applied the patch.
> I could get my 3c589 network adaptor to work.
Nice to get some feedback, Your the second person that has used it.
> Is this patch available for the current 2.4.25 kernel?
>
It will work conceptually with 2.4.25 as I'm currently running a
relatively recent denx kernel with similar changes. I haven't
published a recent patch yet as there wasn't much feedback last
time...
I've recently done some more work on this to clean it up, for example
USB didn't work with that previous patch but they now coesist happily.
I'll look at posting a patch soon when it's merged into my shiny new GIT
tree.
Andrew
- - - - - - - DISCLAIMER - - - - - - - -
Unless indicated otherwise, the information contained in this message is
privileged and confidential, and is intended only for the use of the
addressee(s) named above and others who have been specifically authorized to
receive it. If you are not the intended recipient, you are hereby notified
that any dissemination, distribution or copying of this message and/or
attachments is strictly prohibited. The company accepts no liability for any
damage caused by any virus transmitted by this email. Furthermore, the
company does not warrant a proper and complete transmission of this
information, nor does it accept liability for any delays. If you have
received this message in error, please contact the sender and delete the
message. Thank you.
[-- Attachment #2: Type: text/html, Size: 3618 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: mpc5200 and pcmcia
2005-10-03 13:56 Derycke, Johan
@ 2005-10-04 4:31 ` Andrew Dennison
2005-10-04 6:21 ` Sylvain Munaut
0 siblings, 1 reply; 7+ messages in thread
From: Andrew Dennison @ 2005-10-04 4:31 UTC (permalink / raw)
To: Derycke, Johan; +Cc: linuxppc-embedded
On 10/3/05, Derycke, Johan <johan.derycke@barco.com> wrote:
>
> If there is anything you want me to test let me know...
> Does it support 32bit cards?
Cardbus support is a problem at the moment. Not sure if it's my
hardware or a 5200 PCI configuration issue.
Apparnetly it's working in 2.6 but I haven't had time to sort this out.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: mpc5200 and pcmcia
2005-10-04 4:31 ` Andrew Dennison
@ 2005-10-04 6:21 ` Sylvain Munaut
2005-10-04 7:11 ` Andrew Dennison
0 siblings, 1 reply; 7+ messages in thread
From: Sylvain Munaut @ 2005-10-04 6:21 UTC (permalink / raw)
To: Andrew Dennison; +Cc: linuxppc-embedded
Andrew Dennison wrote:
> On 10/3/05, Derycke, Johan <johan.derycke@barco.com> wrote:
>
>>If there is anything you want me to test let me know...
>>Does it support 32bit cards?
>
>
> Cardbus support is a problem at the moment. Not sure if it's my
> hardware or a 5200 PCI configuration issue.
IIRC, there is an errata wrt configuration cycle thru bridges.
> Apparnetly it's working in 2.6 but I haven't had time to sort this out.
Is it ? not sure. I remember seeing a patch about it but it removed
the "always 32 bit access" in all cases and not just in the needed case
iirc. Make me think I forgot to sort that out ...
Sylvain
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: mpc5200 and pcmcia
2005-10-04 6:21 ` Sylvain Munaut
@ 2005-10-04 7:11 ` Andrew Dennison
2005-10-04 7:30 ` Asier Llano Palacios
0 siblings, 1 reply; 7+ messages in thread
From: Andrew Dennison @ 2005-10-04 7:11 UTC (permalink / raw)
To: Sylvain Munaut; +Cc: linuxppc-embedded
On 10/4/05, Sylvain Munaut <tnt@246tnt.com> wrote:
>
> IIRC, there is an errata wrt configuration cycle thru bridges.
I've got support for this (it's in my December patch). Configuration
cycles work but some cardbus cards / drivers cause a TEA when the
device is enabled driver loads Netgear FA511), while with a prism
based WLAN card (Netcomm NP5430) I can load the firmware into the card
but it doesn't run correctly - iwconfig can cause a TEA.
I haven't had time to work out how to debug these properly - other
more important things to do.
>
> > Apparnetly it's working in 2.6 but I haven't had time to sort this out.
>
> Is it ? not sure. I remember seeing a patch about it but it removed
> the "always 32 bit access" in all cases and not just in the needed case
> iirc. Make me think I forgot to sort that out ...
At one stange you mentioned you had a patch from someone for cardbus
support on 2.6 - it just fixed the configuration cycle errata so I
assumed this meant the rest "just worked". Maybe that was a bad
assumption...
Andrew
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: mpc5200 and pcmcia
2005-10-04 7:11 ` Andrew Dennison
@ 2005-10-04 7:30 ` Asier Llano Palacios
0 siblings, 0 replies; 7+ messages in thread
From: Asier Llano Palacios @ 2005-10-04 7:30 UTC (permalink / raw)
To: Andrew Dennison; +Cc: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 4750 bytes --]
I've developed the following patch.
It is not tested against the last git revision (I have to update my tree
as soon as I have enough time) and I sent it to Sylvain so it may be
partially commited.
Sorry, but this patch solves (or tries to solve) several problems.
You will have to have a look at the patch manually to understand every
of the issues it tries to solve.
PCI bus initialization: If you boot the MPC5200 with u-boot without PCI
support you will end up with some linux initialization problems. It is
because of the reset process (which leaves the PCI bus in its previous
state, that is reset by default, unless u-boot touches it). It does also
need to initialize some configuration elements of the PCI bus.
+ tmp = in_be32(&pci_regs->scr);
+ tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+ out_be32(&pci_regs->scr, tmp);
and
- out_be32(&pci_regs->gscr, tmp);
+ out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
Flags for hotplug: The function mpc52xx_pci_fixup_resources is called
for every PCI device (included cardbus) so if it is called from cardbus
it cannot be __init (it caused a big problem). Removing the __init is
enough.
-static void __init mpc52xx_pci_fixup_resources(struct pci_dev *dev) {
+static void mpc52xx_pci_fixup_resources(struct pci_dev *dev) {
Introduced Delay: A udelay(1) is introduced before configuration cycles.
Otherwise it crashes for me. Sylvain told me that the PCI should wait
some time after reset before it is used. I've not tested including the
delay in other parts.
Workaround for bug of MPC5200: MPC5200 has a bug with PCI type 1
configuration frames so the workaround proposed by freescale is
splitting them. Sylvain told me that some PCI cards have problems
reading or writting operations that are not 32 bits. So this code should
be rewritten a little bit. (I think I should rewrite it near in the
future).
(This is everything else in the patch).
I would thank very much to anyone that splits this patch, introduces the
workaround for the bug of MPC5200 while using only 32 bit operation on
type 0 frames, and sends it to Sylvain. (I feel like writting my Xmas
letter to Santa. XoD).
I hope this helps.
Asier Llano
El mar, 04-10-2005 a las 17:11 +1000, Andrew Dennison escribió:
> On 10/4/05, Sylvain Munaut <tnt@246tnt.com> wrote:
> >
> > IIRC, there is an errata wrt configuration cycle thru bridges.
>
> I've got support for this (it's in my December patch). Configuration
> cycles work but some cardbus cards / drivers cause a TEA when the
> device is enabled driver loads Netgear FA511), while with a prism
> based WLAN card (Netcomm NP5430) I can load the firmware into the card
> but it doesn't run correctly - iwconfig can cause a TEA.
>
> I haven't had time to work out how to debug these properly - other
> more important things to do.
>
> >
> > > Apparnetly it's working in 2.6 but I haven't had time to sort this out.
> >
> > Is it ? not sure. I remember seeing a patch about it but it removed
> > the "always 32 bit access" in all cases and not just in the needed case
> > iirc. Make me think I forgot to sort that out ...
>
> At one stange you mentioned you had a patch from someone for cardbus
> support on 2.6 - it just fixed the configuration cycle errata so I
> assumed this meant the rest "just worked". Maybe that was a bad
> assumption...
>
> Andrew
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded
--
Asier Llano Palacios <a.llano@usyscom.com>
----------------------------------------- PLEASE NOTE -------------------------------------------
This message, along with any attachments, may be confidential or legally privileged.
It is intended only for the named person(s), who is/are the only authorized recipients.
If this message has reached you in error, kindly destroy it without review and notify the sender immediately.
Thank you for your help.
µSysCom uses virus scanning software but excludes any liability for viruses contained in any attachment.
------------------------------------ ROGAMOS LEA ESTE TEXTO -------------------------------
Este mensaje y sus anexos pueden contener información confidencial y/o con derecho legal.
Está dirigido únicamente a la/s persona/s o entidad/es reseñadas como único destinatario autorizado.
Si este mensaje le hubiera llegado por error, por favor elimínelo sin revisarlo ni reenviarlo y notifíquelo inmediatamente al remitente. Gracias por su colaboración.
µSysCom utiliza software antivirus, pero no se hace responsable de los virus contenidos en los ficheros anexos.
[-- Attachment #2: mpc5200_pci.patch --]
[-- Type: text/x-patch, Size: 3089 bytes --]
diff -urP linux-2.6.10-mpc5200/arch/ppc/syslib/mpc52xx_pci.c linux-2.6.10-mpc5200-pci/arch/ppc/syslib/mpc52xx_pci.c
--- linux-2.6.10-mpc5200/arch/ppc/syslib/mpc52xx_pci.c 2005-01-14 18:44:43.000000000 +0100
+++ linux-2.6.10-mpc5200-pci/arch/ppc/syslib/mpc52xx_pci.c 2005-02-10 09:50:23.000000000 +0100
@@ -22,6 +22,10 @@
#include <asm/delay.h>
+/* This macro is defined to activate the workaround for the bug
+ 435 of the MPC5200 (L25R) */
+#define MPC5200_BUG_435_WORKAROUND
+
static int mpc52xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
int offset, int len, u32 *val)
@@ -39,11 +43,24 @@
(devfn << 8) |
(offset & 0xfc));
- value = in_le32((u32*)hose->cfg_data);
+ udelay( 1 );
- if (len != 4) {
- value >>= ((offset & 0x3) << 3);
- value &= 0xffffffff >> (32 - (len << 3));
+ switch( len )
+ {
+ case 1:
+ value = in_8(((u8*)hose->cfg_data) + (offset&0x3));
+ break;
+ case 2:
+ value = in_le16(((u16*)hose->cfg_data) + ((offset>>1)&1));
+ break;
+ default:
+#ifdef MPC5200_BUG_435_WORKAROUND
+ if( bus->number != hose->bus_offset )
+ value = in_le16((u16*)hose->cfg_data) | (in_le16(((u16*)hose->cfg_data) + 1) << 16);
+ else
+#endif
+ value = in_le32((u32*)hose->cfg_data);
+ break;
}
*val = value;
@@ -57,7 +74,6 @@
int offset, int len, u32 val)
{
struct pci_controller *hose = bus->sysdata;
- u32 value, mask;
if (ppc_md.pci_exclude_device)
if (ppc_md.pci_exclude_device(bus->number, devfn))
@@ -69,19 +85,27 @@
(devfn << 8) |
(offset & 0xfc));
- if (len != 4) {
- value = in_le32((u32*)hose->cfg_data);
-
- offset = (offset & 0x3) << 3;
- mask = (0xffffffff >> (32 - (len << 3)));
- mask <<= offset;
-
- value &= ~mask;
- val = value | ((val << offset) & mask);
+ switch( len )
+ {
+ case 1:
+ out_8(((u8*)hose->cfg_data) + (offset&0x3), val);
+ break;
+ case 2:
+ out_le16(((u16*)hose->cfg_data) + ((offset>>1)&1), val);
+ break;
+ default:
+#ifdef MPC5200_BUG_435_WORKAROUND
+ if( bus->number != hose->bus_offset )
+ {
+ out_le16((u16*)hose->cfg_data, (u16)val);
+ out_le16(((u16*)hose->cfg_data) + 1, (u16)(val>>16));
+ }
+ else
+#endif
+ out_le32((u32*)hose->cfg_data, val);
+ break;
}
- out_le32((u32*)hose->cfg_data, val);
-
out_be32(hose->cfg_addr, 0);
return PCIBIOS_SUCCESSFUL;
@@ -98,6 +122,9 @@
u32 tmp;
/* Setup control regs */
+ tmp = in_be32(&pci_regs->scr);
+ tmp |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
+ out_be32(&pci_regs->scr, tmp);
/* Setup windows */
out_be32(&pci_regs->iw0btar, MPC52xx_PCI_IWBTAR_TRANSLATION(
@@ -138,10 +165,10 @@
tmp = in_be32(&pci_regs->gscr);
out_be32(&pci_regs->gscr, tmp | MPC52xx_PCI_GSCR_PR);
udelay(50);
- out_be32(&pci_regs->gscr, tmp);
+ out_be32(&pci_regs->gscr, tmp & ~MPC52xx_PCI_GSCR_PR);
}
-static void __init mpc52xx_pci_fixup_resources(struct pci_dev *dev) {
+static void mpc52xx_pci_fixup_resources(struct pci_dev *dev) {
int i;
/* We don't rely on boot loader for PCI and resets all
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2005-10-04 7:42 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-09-28 12:23 mpc5200 and pcmcia Derycke, Johan
2005-09-28 23:26 ` Andrew Dennison
-- strict thread matches above, loose matches on Subject: below --
2005-10-03 13:56 Derycke, Johan
2005-10-04 4:31 ` Andrew Dennison
2005-10-04 6:21 ` Sylvain Munaut
2005-10-04 7:11 ` Andrew Dennison
2005-10-04 7:30 ` Asier Llano Palacios
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).