Skip to contentSkip to conversation

MPC85xx, MPC83xx: Add/Fix UPM configuration support

PATCH New David Saada 4 participants 11 messages May 19, 2008 – Jun 15, 2008 1 message not in the archive

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Add support for UPM configuration on the 85xx platform.
In addition, on the MPC83xx, remove MPC834x precompiler condition, in order to support all MPC83xx processors.

cpu/mpc83xx/cpu.c |    5 ----
cpu/mpc85xx/cpu.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
include/mpc85xx.h |    7 ++++-
3 files changed, 72 insertions(+), 6 deletions(-)
cpu/mpc83xx/cpu.c 2008-05-18 11:22:34.503036000 +0300 renamed from cpu/mpc83xx/cpu.c 2008-05-15 01:42:46.000000000 +0300 +0 -5
@@ -147,7 +147,6 @@ int checkcpu(void)
  */
 void upmconfig (uint upm, uint *table, uint size)
 {
-#if defined(CONFIG_MPC834X)
        volatile immap_t *immap = (immap_t *) CFG_IMMR;
        volatile lbus83xx_t *lbus = &immap->lbus;
        volatile uchar *dummy = NULL;
@@ -180,10 +179,6 @@ void upmconfig (uint upm, uint *table, u
 
        /* Set the OP field in the MxMR to "normal" and the MAD field to 000000 */
        *mxmr &= 0xCFFFFFC0;
-#else
-       printf("Error: %s() not defined for this configuration.\n", __FUNCTION__);
-       hang();
-#endif
 }
 
 
cpu/mpc85xx/cpu.c 2008-05-18 11:22:34.528046000 +0300 renamed from cpu/mpc85xx/cpu.c 2008-05-15 01:42:46.000000000 +0300 +66 -0

75 lines not on this page · raw message

include/mpc85xx.h 2008-05-18 11:22:34.519035000 +0300 renamed from include/mpc85xx.h 2008-05-15 01:42:46.000000000 +0300 +6 -1
@@ -35,7 +35,10 @@
 #define BRx_MS_UPMA    0x00000080      /* U.P.M.A Machine Select       */
 #define BRx_MS_UPMB    0x000000a0      /* U.P.M.B Machine Select       */
 #define BRx_MS_UPMC    0x000000c0      /* U.P.M.C Machine Select       */
+#define BRx_MS_MSK     0x000000e0      /* Machine select mask */
+#define BRx_MS_SHIFT   5               /* Machine select shift */
 #define BRx_PS_8       0x00000800      /*  8 bit port size             */
+#define BRx_PS_16      0x00001000      /* 16 bit port size             */
 #define BRx_PS_32      0x00001800      /* 32 bit port size             */
 #define BRx_BA_MSK     0xffff8000      /* Base Address Mask            */
 
@@ -53,8 +56,10 @@
 #define ORxU_AM_MSK    0xffff8000      /* Address Mask Mask            */
 
 #define MxMR_OP_NORM   0x00000000      /* Normal Operation             */
-#define MxMR_DSx_2_CYCL 0x00400000     /* 2 cycle Disable Period       */
 #define MxMR_OP_WARR   0x10000000      /* Write to Array               */
+#define MxMR_DSx_2_CYCL 0x00400000     /* 2 cycle Disable Period       */
+#define MxMR_DSx_3_CYCL 0x00800000     /* 3 cycle Disable Period       */
+#define MxMR_GPL4_LPWT  0x00040000     /* LGPL4 Line in LUPWAIT mode   */
 #define MxMR_BSEL      0x80000000      /* Bus Select                   */
 
 /* helpers to convert values into an OR address mask (GPCM mode) */

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080519/6843978e/attachment.htm

#1 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 5 lines · David Saada

Add support for UPM configuration on the 85xx platform.
In addition, on the MPC83xx, remove MPC834x precompiler condition, in order to support all MPC83xx processors.

Bad news, David, I think I mislead you with my Option #1 - it looks sorta OK, but it still is full of bad stuff, including line wraps, when you look at the actual text of the email.

This is a snippet of the email source (text version, the HTML version is not even worth pasting in)

Quoted 19 lines

cpu/mpc83xx/cpu.c | 5 ----
cpu/mpc85xx/cpu.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++=
++++
include/mpc85xx.h | 7 ++++-

3 files changed, 72 insertions(+), 6 deletions(-)
cpu/mpc83xx/cpu.c 2008-05-18 11:22:34.503036000 +0300 renamed from cpu/mpc83xx/cpu.c 2008-05-15 01:42:46.000000000 +0300 +0 -1
@@ -147,7 +147,6 @@ int checkcpu(void)
  */
 void upmconfig (uint upm, uint *table, uint size)
 {
-#if defined(CONFIG_MPC834X)
        volatile immap_t *immap =3D (immap_t *) CFG_IMMR;
        volatile lbus83xx_t *lbus =3D &immap->lbus;
        volatile uchar *dummy =3D NULL;
@@ -180,10 +179,6 @@ void upmconfig (uint upm, uint *table, u
 
        /* Set the OP field in the MxMR to "normal" and the MAD field to 00=
Quoted 1 line

0000 */

Note the above is linewrapped with quoted printable "stuff" in it.

Quoted 1 line
        *mxmr &=3D 0xCFFFFFC0;

The =3D is more quoted printable "stuff."

Quoted 3 lines
cpu/mpc83xx/cpu.c 2008-05-18 11:22:34.503036000 +0300 renamed from cpu/mpc83xx/cpu.c 2008-05-15 01:42:46.000000000 +0300 +0 -2
-#else
-       printf("Error: %s() not defined for this configuration.\n", __FUNCT=

ION__);

More line wrapped q-p "stuff."

cpu/mpc83xx/cpu.c 2008-05-18 11:22:34.503036000 +0300 void upmconfig (uint upm, uint *table, u · line 182

Quoted 3 lines
cpu/mpc83xx/cpu.c 2008-05-18 11:22:34.503036000 +0300 renamed from cpu/mpc83xx/cpu.c 2008-05-15 01:42:46.000000000 +0300 +0 -2
-       hang();
-#endif
 }

Sorry for getting your hopes up. Try finding an open port 25. :-/

Best regards,
gvb

#2 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 3 lines

Bad news, David, I think I mislead you with my Option #1 - it looks sorta OK, but it still is full of bad stuff, including line wraps, when you look at the actual text of the email.

.
.
.

Quoted 2 lines

Sorry for getting your hopes up. Try finding an open port 25. :-/

That's pretty strange, as I managed to apply the patch after receiving my own mail. I also diffed it with my original patch file, and no difference was found (it wasn't so in the past). Also, in the past, when I had wrapping problems, I got the patch all wrapped up in the daily list mail, but here it was fine...
Well, will try to look for that 25 port...
Regards,
David.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080520/78de2e93/attachment.htm

#3 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 8 lines · David Saada
Quoted 3 lines

Bad news, David, I think I mislead you with my Option #1 - it looks sorta OK, but it still is full of bad stuff, including line wraps, when you look at the actual text of the email.

.
.
.

Quoted 2 lines

Sorry for getting your hopes up. Try finding an open port 25. :-/

Quoted 8 lines

That's pretty strange, as I managed to apply the patch after receiving my own mail. I also diffed it with my original patch file, and no difference was found (it wasn't so in the past).
Also, in the past, when I had wrapping problems, I got the patch all wrapped up in the daily list mail, but here it was fine? Well, will try to look for that 25 port?
Regards,
David.

OK, it is possible my end messed it up or that I'm just confused. Since nobody else hollared on the list, it is probably my bad. I did not check at home where I have a sane email stack. :-/

gvb

#4 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 18 lines · On Tue, 20 May 2008 08:44:09 -0400 Jerry Van Baren <[email protected]>…
Quoted 8 lines · David Saada
Quoted 3 lines

Bad news, David, I think I mislead you with my Option #1 - it looks sorta OK, but it still is full of bad stuff, including line wraps, when you look at the actual text of the email.

.
.
.

Quoted 2 lines

Sorry for getting your hopes up. Try finding an open port 25. :-/

Quoted 8 lines

That's pretty strange, as I managed to apply the patch after receiving my own mail. I also diffed it with my original patch file, and no difference was found (it wasn't so in the past).
Also, in the past, when I had wrapping problems, I got the patch all wrapped up in the daily list mail, but here it was fine? Well, will try to look for that 25 port?
Regards,
David.

Quoted 3 lines

OK, it is possible my end messed it up or that I'm just confused. Since nobody else hollared on the list, it is probably my bad. I did not check at home where I have a sane email stack. :-/

nope, happens here too:

Applying MPC85xx, MPC83xx: Add/Fix UPM configuration support
fatal: corrupt patch at line 14
Patch failed at 0001.
When you have resolved this problem run "git-am --resolved". If you would prefer to skip this patch, instead run "git-am --skip".

...

ERROR: patch seems to be corrupt (line wrapped?)
#105: FILE: cpu/mpc83xx/cpu.c:180:
0000 */

...

Kim

A message that is not in the archive (sent off-list or not yet received): [email protected]

#6 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 11 lines · Andy Fleming
Quoted 4 lines

OK, it is possible my end messed it up or that I'm just confused. Since nobody else hollared on the list, it is probably my bad. I did not check at home where I have a sane email stack. :-/

No, no. You are right. The mail contains all the problems you said it did, I just stayed silent because you had already said it. My client may be mangling things, but it works for patches from everyone else, so I'm currently sticking with hypothesis a) David's mail setup is broken.

OK, I feel the need to paste in my #2 favorite quote. Sorry for bending the "no HTML" rule, but the bolding and linking are useful.
------------------------------------------------------------------------

/The Hitchhiker's Guide to the Galaxy,/ in a moment of reasoned lucidity which is almost unique among its current tally of five million, nine hundred and seventy-three thousand, five hundred and nine pages, says of the Sirius Cybernetics Corporation products that *"it is very easy to be blinded to the essential uselessness of them by the sense of achievement you get from getting them to work at all."* In other words, - and this is the rock-solid principle on which the whole of the Corporation's Galaxywide success is founded - *their fundamental design flaws are completely hidden by their superficial design flaws.*

--- /The Hitchhiker's Guide to the Galaxy/ / Douglas Adams
<http://www.douglasadams.com/> (1952 - 2001
<http://www.douglasadams.com/funeral.html>). 1st American ed. New York : Harmony Books, 1980, c1979

------------------------------------------------------------------------
If you are curious, my #1 favorite quote is...

Never confuse motion for action.

--- Benjamin Franklin

...but that is probably only because I live in a Dilbert corporation and see a lot of Brownian motion.
------------------------------------------------------------------------
//Best regards,
gvb
*
*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20080520/e3efd347/attachment.htm

#7 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

In reply to David Saada
Quoted 9 lines · On Mon, 19 May 2008 19:05:04 +0300 David Saada <[email protected]> wrote:

Add support for UPM configuration on the 85xx platform.
In addition, on the MPC83xx, remove MPC834x precompiler condition, in order to support all MPC83xx processors.

cpu/mpc83xx/cpu.c |    5 ----
cpu/mpc85xx/cpu.c |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
include/mpc85xx.h |    7 ++++-
3 files changed, 72 insertions(+), 6 deletions(-)

Can we merge the register definition files and have a single upm_config for mpc8[356]xx instead of duplicating it as being done here?

Kim

#8 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 3 lines

Can we merge the register definition files and have a single upm_config for mpc8[356]xx instead of duplicating it as being done here?

Not sure that I'm the right person for this job, as I don't have an 86xx based board. Also, I'm not sure this would be a good idea: There are some differences between the registers in these 3 families, and the header file would look pretty ugly (many ifdefs). Even the UPM code won't be the same: for instance, the mpc85xx code scans the BR registers (which are adjacent) to determine the UPM machine, while in the 83xx we need to scan the lbus banks (and extract the BRs from there). This means that we will also have many ifdefs there as well. David.

#9 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 5 lines · On Tue, 20 May 2008 10:32:24 +0300 David Saada <[email protected]> wrote:
Quoted 3 lines

Can we merge the register definition files and have a single upm_config for mpc8[356]xx instead of duplicating it as being done here?

Not sure that I'm the right person for this job, as I don't have an 86xx based board.

86xx can be tested by others; point here is to avoid code duplication.

Quoted 3 lines

Also, I'm not sure this would be a good idea: There are some differences between the registers in these 3 families, and the header file would look pretty ugly (many ifdefs). Even the UPM code won't be

the registers have a common base, and all the registers this patch uses are the same on all of them. I don't see why they can't be unified into a common include/asm-ppc/immap_8xxx.h file.

Quoted 4 lines

the same: for instance, the mpc85xx code scans the BR registers (which are adjacent) to determine the UPM machine, while in the 83xx we need to scan the lbus banks (and extract the BRs from there). This means that we will also have many ifdefs there as well.

afaict, the code this patch introduces for 85xx is functionally identical to that of 83xx:

* Program a UPM with the code supplied in the table. *
* The 'dummy' variable is used to increment the MAD. 'dummy' is
@@ -133,7 +13,7 @@
*
* The value can be extracted from the base address bits of the
* Base Register (BR) associated with the specific UPM. To find
- * that BR, we need to scan all 8 BRs until we find the one that
+ * that BR, we need to scan all BRs until we find the one that
* has its MSEL bits matching the UPM we want. Once we know the
* right BR, we can extract the base address bits from it. *
@@ -147,20 +27,20 @@
*/
void upmconfig (uint upm, uint *table, uint size)
{
- volatile immap_t *immap = (immap_t *) CFG_IMMR;
- volatile lbus83xx_t *lbus = &immap->lbus;
+ volatile ccsr_lbc_t *lbc = (void *)(CFG_MPC85xx_LBC_ADDR);
volatile uchar *dummy = NULL;
- const u32 msel = (upm + 4) << BR_MSEL_SHIFT; /* What
the MSEL field in BRn should be */
- volatile u32 *mxmr = &lbus->mamr + upm; /* Pointer to
mamr, mbmr, or mcmr */
+ const u32 msel = (upm + 4) << BRx_MS_SHIFT; /* What the MSEL
field in BRn should be */
+ volatile uint *mxmr = &lbc->mamr + upm; /* Pointer to mamr,
mbmr, or mcmr */
+ volatile uint *brx = &lbc->br0; /* Pointer to BRx */
uint i;

/* Scan all the banks to determine the base address of the
device */ for (i = 0; i < 8; i++) {
- if ((lbus->bank[i].br & BR_MSEL) == msel) {
- dummy = (uchar *) (lbus->bank[i].br & BR_BA);
+ if ((*brx & BRx_MS_MSK) == msel) {
+ dummy = (uchar *) (*brx & BRx_BA_MSK);
break;
}
+ brx += 2; /* Skip to next BRx */
}

if (!dummy) {
@@ -169,10 +49,10 @@
}

/* Set the OP field in the MxMR to "write" and the MAD field
to 000000 */
- *mxmr = (*mxmr & 0xCFFFFFC0) | 0x10000000;
+ *mxmr = (*mxmr & 0xCFFFFFC0) | MxMR_OP_WARR;

for (i = 0; i < size; i++) {
- lbus->mdr = table[i];
+ lbc->mdr = table[i];
__asm__ __volatile__ ("sync");
*dummy; /* Write the value to memory and
increment MAD */ __asm__ __volatile__ ("sync");

btw, I don't see arch/powerpc/sysdev/fsl_lbc.c functionally differing among the families either.

am I missing something?

Quoted 1 line

David.

Kim

#10 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

In reply to David Saada
Quoted 5 lines · David Saada

Add support for UPM configuration on the 85xx platform.
In addition, on the MPC83xx, remove MPC834x precompiler condition, in order to support all MPC83xx processors.

David, I think this patch has been accomplished by some other patches which came in. Could you take a look at the recent patches to cpu/mpc85xx/cpu.c and see if those changes reflect everything you wanted? If not, please submit a patch on top of those changes.

Thanks,
Andy

#11 lore raw

PATCH 1/1 MPC85xx, MPC83xx: Add/Fix UPM configuration support

Quoted 5 lines

David, I think this patch has been accomplished by some other patches which came in. Could you take a look at the recent patches to cpu/mpc85xx/cpu.c and see if those changes reflect everything you wanted? If not, please submit a patch on top of those changes.

Andy - these patched seem to have the same functionality as mine, thus there's no need for my patch now. Regards,
David.