[U-Boot] [PATCH 0/5] mpc5200: digsy_mtc: update for next

This patch series mainly updates digsy_mtc board to initialize graphic extention hardware and add splash screen support. The last patch is an update for "mtc appreg" command.
Anatolij Gustschin (5): video: mb862xx: support Coral-PA controller pci: option for configurable delay between pci reset and pci bus scan mpc5200: digsy_mtc: enable pci_scan_delay option mpc5200: digsy_mtc: add support for graphic extension board mpc5200: digsy_mtc: add support for writing 'appreg' value
board/digsy_mtc/Makefile | 7 +++-- board/digsy_mtc/cmd_disp.c | 54 +++++++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/cmd_mtc.c | 46 +++++++++++++++++++++++++++++++---- board/digsy_mtc/digsy_mtc.c | 49 +++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/exbo.h | 17 +++++++++++++ drivers/pci/pci.c | 14 +++++++++++ drivers/video/mb862xx.c | 32 +++++++++++++++++++++---- include/configs/digsy_mtc.h | 28 ++++++++++++++++++++++ 8 files changed, 233 insertions(+), 14 deletions(-) create mode 100644 board/digsy_mtc/cmd_disp.c create mode 100644 board/digsy_mtc/exbo.h

Add detection of Coral-PA and configure Coral CCF an MMR parameters using CONFIG_SYS_MB862xx_CCF and CONFIG_SYS_MB862xx_MMR macros. Use CCF and MMR parameters for Coral-P Eval. Board if the appropriate macros weren't defined.
Signed-off-by: Anatolij Gustschin agust@denx.de --- drivers/video/mb862xx.c | 32 +++++++++++++++++++++++++++----- 1 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/drivers/video/mb862xx.c b/drivers/video/mb862xx.c index edf34aa..088365d 100644 --- a/drivers/video/mb862xx.c +++ b/drivers/video/mb862xx.c @@ -189,10 +189,19 @@ static void de_init (void) }
#if defined(CONFIG_VIDEO_CORALP) +/* use CCF and MMR parameters for Coral-P Eval. Board as default */ +#ifndef CONFIG_SYS_MB862xx_CCF +#define CONFIG_SYS_MB862xx_CCF 0x00090000 +#endif +#ifndef CONFIG_SYS_MB862xx_MMR +#define CONFIG_SYS_MB862xx_MMR 0x11d7fa13 +#endif + unsigned int pci_video_init (void) { GraphicDevice *dev = &mb862xx; pci_dev_t devbusfn; + u16 device;
if ((devbusfn = pci_find_devices (supported, 0)) < 0) { puts ("PCI video controller not found!\n"); @@ -212,10 +221,25 @@ unsigned int pci_video_init (void)
dev->pciBase = dev->frameAdrs;
- /* Setup clocks and memory mode for Coral-P Eval. Board */ - HOST_WR_REG (GC_CCF, 0x00090000); + puts("Coral-"); + + pci_read_config_word(devbusfn, PCI_DEVICE_ID, &device); + switch (device) { + case PCI_DEVICE_ID_CORAL_P: + puts("P\n"); + break; + case PCI_DEVICE_ID_CORAL_PA: + puts("PA\n"); + break; + default: + puts("Unknown\n"); + return 0; + } + + /* Setup clocks and memory mode for Coral-P(A) */ + HOST_WR_REG(GC_CCF, CONFIG_SYS_MB862xx_CCF); udelay (200); - HOST_WR_REG (GC_MMR, 0x11d7fa13); + HOST_WR_REG(GC_MMR, CONFIG_SYS_MB862xx_MMR); udelay (100); return dev->frameAdrs; } @@ -235,8 +259,6 @@ unsigned int card_init (void) if (!pci_video_init ()) return 0;
- puts ("CoralP\n"); - tmp = 0; videomode = 0x310; /* get video mode via environment */

On Fri, 27 May 2011 16:08:20 +0200 Anatolij Gustschin agust@denx.de wrote:
Add detection of Coral-PA and configure Coral CCF an MMR parameters using CONFIG_SYS_MB862xx_CCF and CONFIG_SYS_MB862xx_MMR macros. Use CCF and MMR parameters for Coral-P Eval. Board if the appropriate macros weren't defined.
Signed-off-by: Anatolij Gustschin agust@denx.de
drivers/video/mb862xx.c | 32 +++++++++++++++++++++++++++----- 1 files changed, 27 insertions(+), 5 deletions(-)
applied to u-boot-video/master.
Anatolij

PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_board_init() time, so we can not use available "pcidelay" option for waiting before pci bus scan here. Add an option to delay bus scan by setting "pci_scan_delay" environment variable.
Signed-off-by: Anatolij Gustschin agust@denx.de --- drivers/pci/pci.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index cdfc4fb..2206c12 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -699,6 +699,20 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
int pci_hose_scan(struct pci_controller *hose) { +#if defined(CONFIG_PCI_SCAN_DELAY) + const char *s; + int i; + + /* wait "pci_scan_delay" ms, limit to max. 1 s */ + s = getenv("pci_scan_delay"); + if (s) { + int val = simple_strtoul(s, NULL, 10); + if (val > 1000) + val = 1000; + for (i = 0; i < val; i++) + udelay(1000); + } +#endif /* Start scan at current_busno. * PCIe will start scan at first_busno+1. */

Hi Anatolij,
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_board_init() time, so we can not use available "pcidelay" option for waiting before pci bus scan here. Add an option to delay bus scan by setting "pci_scan_delay" environment variable.
Hm, I'm not sure I understand the situation, so please correct me. We have a "pcidelay" variable, which is used to wait before pci_board_init() (I'm not counting the semantically different usage in the esd boards). This does not fit your need, so you define pci_scan_delay which is used _after_ pci_init_board(), correct?
If this is correct, then why don't you keep your new delay also in the pci_init() function so that the delays are easily visible on code inspection? But wait, if this is only needed for this very board, then why don't we put the delay into digsys pci_init_board? Actually I think this is the best way, as on this board we always need the delay as PCI is not hotplug.
Apart from that, having two variables "pcidelay" and "pci_scan_delay" we would need good documentation to explain their usage - the names do not help (me) much ;)
Cheers Detlev

Hi Detlev,
On Fri, 27 May 2011 17:26:24 +0200 Detlev Zundel dzu@denx.de wrote: ...
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_board_init() time, so we can not use available "pcidelay" option for waiting before pci bus scan here. Add an option to delay bus scan by setting "pci_scan_delay" environment variable.
Hm, I'm not sure I understand the situation, so please correct me. We have a "pcidelay" variable, which is used to wait before pci_board_init() (I'm not counting the semantically different usage in the esd boards). This does not fit your need, so you define pci_scan_delay which is used _after_ pci_init_board(), correct?
yes, this is correct.
If this is correct, then why don't you keep your new delay also in the pci_init() function so that the delays are easily visible on code inspection? But wait, if this is only needed for this very board, then why don't we put the delay into digsys pci_init_board? Actually I think this is the best way, as on this board we always need the delay as PCI is not hotplug.
The reason for not keeping new delay in pci_init() is: pci_init_board() starts scanning the bus (calls pci_hose_scan()), so when pci_init_board() returns, it is too late, the scanning is already completed.
digsy's pci_init_board() just calls pci_mpc5xxx_init(), when the latter returns, the scanning is completed, too. PCI reset is de-asserted in pci_mpc5xxx_init(), so I thought about putting the delay there, but similar situation is also on mpc8260 based boards, pci_mpc8250_init() de-asserts PCI reset and waits on some boards (on MPC8266ADS 1 sec). So the problem is not only digsy specific. The needed time after reset before config cycles could be up to 1 sec, depending on the card. The pci spec 2.2 allows this.
I think that it would be good to run arch specific pci init not from the pci_board_init(), but from pci_init(). Then we can add delay code in the board specific way. This would reduce the code duplication, too. Currently we have the same pci_init_board() for many 5200 boards, except for mvbc_p and mvsmr boards.
Apart from that, having two variables "pcidelay" and "pci_scan_delay" we would need good documentation to explain their usage - the names do not help (me) much ;)
Sure. If there is an agreement to solve the problem as proposed in the patch, I'll add the documentation in the next patch version. Maybe someone have a better idea, lets wait a bit for other comments. Actually I don't like the name of the variable, it is somehow misleading. Any better name?
Thanks, Anatolij

Hi Anatolij,
Hi Detlev,
On Fri, 27 May 2011 17:26:24 +0200 Detlev Zundel dzu@denx.de wrote: ...
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_board_init() time, so we can not use available "pcidelay" option for waiting before pci bus scan here. Add an option to delay bus scan by setting "pci_scan_delay" environment variable.
Hm, I'm not sure I understand the situation, so please correct me. We have a "pcidelay" variable, which is used to wait before pci_board_init() (I'm not counting the semantically different usage in the esd boards). This does not fit your need, so you define pci_scan_delay which is used _after_ pci_init_board(), correct?
yes, this is correct.
If this is correct, then why don't you keep your new delay also in the pci_init() function so that the delays are easily visible on code inspection? But wait, if this is only needed for this very board, then why don't we put the delay into digsys pci_init_board? Actually I think this is the best way, as on this board we always need the delay as PCI is not hotplug.
The reason for not keeping new delay in pci_init() is: pci_init_board() starts scanning the bus (calls pci_hose_scan()), so when pci_init_board() returns, it is too late, the scanning is already completed.
digsy's pci_init_board() just calls pci_mpc5xxx_init(), when the latter returns, the scanning is completed, too. PCI reset is de-asserted in pci_mpc5xxx_init(), so I thought about putting the delay there, but similar situation is also on mpc8260 based boards, pci_mpc8250_init() de-asserts PCI reset and waits on some boards (on MPC8266ADS 1 sec). So the problem is not only digsy specific. The needed time after reset before config cycles could be up to 1 sec, depending on the card. The pci spec 2.2 allows this.
Ah, thanks for shedding some light on this. Now I see how you arrived at the solution you propose.
I think that it would be good to run arch specific pci init not from the pci_board_init(), but from pci_init(). Then we can add delay code in the board specific way. This would reduce the code duplication, too. Currently we have the same pci_init_board() for many 5200 boards, except for mvbc_p and mvsmr boards.
Yes, I have also noticed the massive code duplicatin here. But as I obviously didn't even understand the problem I didn't ponder changing it ;)
Apart from that, having two variables "pcidelay" and "pci_scan_delay" we would need good documentation to explain their usage - the names do not help (me) much ;)
Sure. If there is an agreement to solve the problem as proposed in the patch, I'll add the documentation in the next patch version. Maybe someone have a better idea, lets wait a bit for other comments. Actually I don't like the name of the variable, it is somehow misleading. Any better name?
Sorry, no idea. If we are stuck stuck with "pcidelay" (which I think we are), then it is hard to come up with a differentiating name. So good documentation will have to make up for the lack of good names ;)
Cheers Detlev

Hi Anatolij and Detlev,
On Monday 30 May 2011 09:45:08 Detlev Zundel wrote:
Hm, I'm not sure I understand the situation, so please correct me. We have a "pcidelay" variable, which is used to wait before pci_board_init() (I'm not counting the semantically different usage in the esd boards). This does not fit your need, so you define pci_scan_delay which is used _after_ pci_init_board(), correct?
yes, this is correct.
If this is correct, then why don't you keep your new delay also in the pci_init() function so that the delays are easily visible on code inspection? But wait, if this is only needed for this very board, then why don't we put the delay into digsys pci_init_board? Actually I think this is the best way, as on this board we always need the delay as PCI is not hotplug.
The reason for not keeping new delay in pci_init() is: pci_init_board() starts scanning the bus (calls pci_hose_scan()), so when pci_init_board() returns, it is too late, the scanning is already completed.
Right. With this PCI reset "design", the current "pcidelay" option won't work for these platforms. Too bad.
But thinking more about it, couldn't your new code location supersede the old one before pci_init_board()? If this really is the case (we would need to check with users of this "pcidelay" env variable, Mattias?), then we could remove the old code in pci_init() and only use your new version. We would need to use the old env variable name "pcidelay" though, since there are boards in the field already using this version.
Anatolij, what do you think?
Matthias, could you do some tests on some esd boards with the new version when available, to make sure that we don't break backwards compatibility?
Best regards, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de

Hi Stefan,
On Mon, 30 May 2011 16:10:34 +0200 Stefan Roese sr@denx.de wrote:
Hi Anatolij and Detlev,
On Monday 30 May 2011 09:45:08 Detlev Zundel wrote:
Hm, I'm not sure I understand the situation, so please correct me. We have a "pcidelay" variable, which is used to wait before pci_board_init() (I'm not counting the semantically different usage in the esd boards). This does not fit your need, so you define pci_scan_delay which is used _after_ pci_init_board(), correct?
yes, this is correct.
If this is correct, then why don't you keep your new delay also in the pci_init() function so that the delays are easily visible on code inspection? But wait, if this is only needed for this very board, then why don't we put the delay into digsys pci_init_board? Actually I think this is the best way, as on this board we always need the delay as PCI is not hotplug.
The reason for not keeping new delay in pci_init() is: pci_init_board() starts scanning the bus (calls pci_hose_scan()), so when pci_init_board() returns, it is too late, the scanning is already completed.
Right. With this PCI reset "design", the current "pcidelay" option won't work for these platforms. Too bad.
But thinking more about it, couldn't your new code location supersede the old one before pci_init_board()? If this really is the case (we would need to check with users of this "pcidelay" env variable, Mattias?), then we could remove the old code in pci_init() and only use your new version. We would need to use the old env variable name "pcidelay" though, since there are boards in the field already using this version.
Anatolij, what do you think?
This should work, I think. I'll send a patch moving pcidelay code to new location.
Matthias, could you do some tests on some esd boards with the new version when available, to make sure that we don't break backwards compatibility?
Would be great if Matthias could test the patch.
Thanks, Anatolij
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office@denx.de

PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Signed-off-by: Anatolij Gustschin agust@denx.de --- drivers/pci/pci.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 1a0b14c..b65cdd1 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -695,6 +695,19 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
int pci_hose_scan(struct pci_controller *hose) { +#if defined(CONFIG_PCI_BOOTDELAY) + char *s; + int i; + + /* wait "pcidelay" ms (if defined)... */ + s = getenv("pcidelay"); + if (s) { + int val = simple_strtoul(s, NULL, 10); + for (i = 0; i < val; i++) + udelay(1000); + } +#endif /* CONFIG_PCI_BOOTDELAY */ + /* Start scan at current_busno. * PCIe will start scan at first_busno+1. */ @@ -709,19 +722,6 @@ int pci_hose_scan(struct pci_controller *hose)
void pci_init(void) { -#if defined(CONFIG_PCI_BOOTDELAY) - char *s; - int i; - - /* wait "pcidelay" ms (if defined)... */ - s = getenv ("pcidelay"); - if (s) { - int val = simple_strtoul (s, NULL, 10); - for (i=0; i<val; i++) - udelay (1000); - } -#endif /* CONFIG_PCI_BOOTDELAY */ - hose_head = NULL;
/* now call board specific pci_init()... */

Hi Anatolij,
in general this is a good idea. It also fixes an issue on dual role boards that can act as pci host and target like the PMC440 and PMC405DE. When these boards are configured as target, the pcidelay variable must be ignored or _target_ initialization must be done before the delay.
That's why I put my own pcidelay implementation in our board code.
But I see a problem on boards with more than one PCI bus/PCIe rootcomplex like some 440 parts. In this case the delay is executed multiple times.
So it might be a good idea to restrict pci_hose_scan to wait for only during its initial call and to ignore pcidelay for any further call.
BTW, 4xx_pcie.c also implements an additional delay controlled by the pciscandelay variable before calling pci_hose_scan() :-) I think this is obsolete.
Matthias
On 11.10.2011 17:18, Anatolij Gustschin wrote:
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Signed-off-by: Anatolij Gustschin agust@denx.de
drivers/pci/pci.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 1a0b14c..b65cdd1 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -695,6 +695,19 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
int pci_hose_scan(struct pci_controller *hose) { +#if defined(CONFIG_PCI_BOOTDELAY)
- char *s;
- int i;
- /* wait "pcidelay" ms (if defined)... */
- s = getenv("pcidelay");
- if (s) {
int val = simple_strtoul(s, NULL, 10);
for (i = 0; i < val; i++)
udelay(1000);
- }
+#endif /* CONFIG_PCI_BOOTDELAY */
- /* Start scan at current_busno.
*/
- PCIe will start scan at first_busno+1.
@@ -709,19 +722,6 @@ int pci_hose_scan(struct pci_controller *hose)
void pci_init(void) { -#if defined(CONFIG_PCI_BOOTDELAY)
- char *s;
- int i;
- /* wait "pcidelay" ms (if defined)... */
- s = getenv ("pcidelay");
- if (s) {
int val = simple_strtoul (s, NULL, 10);
for (i=0; i<val; i++)
udelay (1000);
- }
-#endif /* CONFIG_PCI_BOOTDELAY */
hose_head = NULL;
/* now call board specific pci_init()... */

PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Since pci_hose_scan() could be called multiple times, restrict the function to wait only during its first call and to ignore pcidelay for any further call (as pointed out by Matthias).
Signed-off-by: Anatolij Gustschin agust@denx.de Cc: Matthias Fuchs matthias.fuchs@esd.eu --- Changes since first version: - extend to wait only during initial pci_hose_scan() call as pointed out by Matthias
drivers/pci/pci.c | 30 +++++++++++++++++------------- 1 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 1a0b14c..5f1f128 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -695,6 +695,23 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
int pci_hose_scan(struct pci_controller *hose) { +#if defined(CONFIG_PCI_BOOTDELAY) + static int pcidelay_done; + char *s; + int i; + + if (!pcidelay_done) { + /* wait "pcidelay" ms (if defined)... */ + s = getenv("pcidelay"); + if (s) { + int val = simple_strtoul(s, NULL, 10); + for (i = 0; i < val; i++) + udelay(1000); + } + pcidelay_done = 1; + } +#endif /* CONFIG_PCI_BOOTDELAY */ + /* Start scan at current_busno. * PCIe will start scan at first_busno+1. */ @@ -709,19 +726,6 @@ int pci_hose_scan(struct pci_controller *hose)
void pci_init(void) { -#if defined(CONFIG_PCI_BOOTDELAY) - char *s; - int i; - - /* wait "pcidelay" ms (if defined)... */ - s = getenv ("pcidelay"); - if (s) { - int val = simple_strtoul (s, NULL, 10); - for (i=0; i<val; i++) - udelay (1000); - } -#endif /* CONFIG_PCI_BOOTDELAY */ - hose_head = NULL;
/* now call board specific pci_init()... */

On Wednesday 12 October 2011 10:44:30 Anatolij Gustschin wrote:
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Since pci_hose_scan() could be called multiple times, restrict the function to wait only during its first call and to ignore pcidelay for any further call (as pointed out by Matthias).
Signed-off-by: Anatolij Gustschin agust@denx.de Cc: Matthias Fuchs matthias.fuchs@esd.eu
Looks good, so:
Acked-by: Stefan Roese sr@denx.de
Thanks, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de

On 12.10.2011 10:44, Anatolij Gustschin wrote:
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Since pci_hose_scan() could be called multiple times, restrict the function to wait only during its first call and to ignore pcidelay for any further call (as pointed out by Matthias).
Signed-off-by: Anatolij Gustschin agust@denx.de Cc: Matthias Fuchs matthias.fuchs@esd.eu
Changes since first version:
- extend to wait only during initial pci_hose_scan() call as pointed out by Matthias
Tested on PMC440. Works fine.
Acked-by: Matthias Fuchs matthias.fuchs@esd.eu
Matthias

On Thursday 13 October 2011 14:50:02 Matthias Fuchs wrote:
On 12.10.2011 10:44, Anatolij Gustschin wrote:
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Since pci_hose_scan() could be called multiple times, restrict the function to wait only during its first call and to ignore pcidelay for any further call (as pointed out by Matthias).
Signed-off-by: Anatolij Gustschin agust@denx.de Cc: Matthias Fuchs matthias.fuchs@esd.eu
Changes since first version:
extend to wait only during initial pci_hose_scan() call
as pointed out by Matthias
Tested on PMC440. Works fine.
Acked-by: Matthias Fuchs matthias.fuchs@esd.eu
Thanks. In this case a:
Tested-by: ...
would be even better. :)
Thanks, Stefan
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de

On 13.10.2011 15:03, Stefan Roese wrote:
Tested on PMC440. Works fine.
Acked-by: Matthias Fuchs matthias.fuchs@esd.eu
Thanks. In this case a:
Tested-by: ...
would be even better. :)
Even both if you like :-)
Matthias

Dear Anatolij Gustschin,
In message 1318409070-11792-1-git-send-email-agust@denx.de you wrote:
PCI cards might need some time after reset to respond. On some boards (mpc5200 or mpc8260 based) the PCI bus reset is deasserted at pci_init_board() time, so we currently can not use available "pcidelay" option for waiting before PCI bus scan since this waiting takes place before calling pci_init_board(). By moving the pcidelay code to the new location using of the "pcidelay" option is possible on mpc5200 or mpc8260 based boards, too.
Since pci_hose_scan() could be called multiple times, restrict the function to wait only during its first call and to ignore pcidelay for any further call (as pointed out by Matthias).
Signed-off-by: Anatolij Gustschin agust@denx.de Cc: Matthias Fuchs matthias.fuchs@esd.eu
Changes since first version:
- extend to wait only during initial pci_hose_scan() call as pointed out by Matthias
drivers/pci/pci.c | 30 +++++++++++++++++------------- 1 files changed, 17 insertions(+), 13 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

A delay of approximately 250 ms after PCI bus reset in pci_mpc5xxx_init() is needed to recognize the Coral-PA controller on graphic extention board. With this option enabled we can set the environment variable "pci_scan_delay" to the needed value.
Signed-off-by: Anatolij Gustschin agust@denx.de --- include/configs/digsy_mtc.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index c738b3a..2b7ba4d 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -70,6 +70,7 @@ #define CONFIG_PCI 1 #define CONFIG_PCI_PNP 1 #define CONFIG_PCI_SCAN_SHOW 1 +#define CONFIG_PCI_SCAN_DELAY
#define CONFIG_PCI_MEM_BUS 0x40000000 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS

Hi Anatolij,
A delay of approximately 250 ms after PCI bus reset in pci_mpc5xxx_init() is needed to recognize the Coral-PA controller on graphic extention board. With this option enabled we can set the environment variable "pci_scan_delay" to the needed value.
Signed-off-by: Anatolij Gustschin agust@denx.de
Although I propose not to introduce a new environment variable for this option, _if_ you do want to use it, you should also set its value in the boards default configuration.
Cheers Detlev

A delay of approximately 250 ms after PCI bus reset in pci_mpc5xxx_init() is needed to recognize the Coral-PA controller on the graphic extention board.
Signed-off-by: Anatolij Gustschin agust@denx.de --- To make it actually work another patch "pci: move pcidelay code to new location just before PCI bus scan" is also required. It has been submitted earlier [1] and there is already some positive feedback.
[1] http://patchwork.ozlabs.org/patch/119171/
include/configs/digsy_mtc.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index 522ec57..d0d1eda 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -70,6 +70,7 @@ #define CONFIG_PCI 1 #define CONFIG_PCI_PNP 1 #define CONFIG_PCI_SCAN_SHOW 1 +#define CONFIG_PCI_BOOTDELAY 250
#define CONFIG_PCI_MEM_BUS 0x40000000 #define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS

Hi Anatolij,
A delay of approximately 250 ms after PCI bus reset in pci_mpc5xxx_init() is needed to recognize the Coral-PA controller on the graphic extention board.
Signed-off-by: Anatolij Gustschin agust@denx.de
To make it actually work another patch "pci: move pcidelay code to new location just before PCI bus scan" is also required. It has been submitted earlier [1] and there is already some positive feedback.
Acked-by: Detlev Zundel dzu@denx.de

Dear Anatolij Gustschin,
In message 1318519157-4945-1-git-send-email-agust@denx.de you wrote:
A delay of approximately 250 ms after PCI bus reset in pci_mpc5xxx_init() is needed to recognize the Coral-PA controller on the graphic extention board.
Signed-off-by: Anatolij Gustschin agust@denx.de
To make it actually work another patch "pci: move pcidelay code to new location just before PCI bus scan" is also required. It has been submitted earlier [1] and there is already some positive feedback.
[1] http://patchwork.ozlabs.org/patch/119171/
include/configs/digsy_mtc.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk

Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off.
Signed-off-by: Anatolij Gustschin agust@denx.de --- board/digsy_mtc/Makefile | 7 +++-- board/digsy_mtc/cmd_disp.c | 54 +++++++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/digsy_mtc.c | 49 +++++++++++++++++++++++++++++++++++++++ board/digsy_mtc/exbo.h | 17 +++++++++++++ include/configs/digsy_mtc.h | 27 +++++++++++++++++++++ 5 files changed, 151 insertions(+), 3 deletions(-) create mode 100644 board/digsy_mtc/cmd_disp.c create mode 100644 board/digsy_mtc/exbo.h
diff --git a/board/digsy_mtc/Makefile b/board/digsy_mtc/Makefile index a40076c..19f5b3a 100644 --- a/board/digsy_mtc/Makefile +++ b/board/digsy_mtc/Makefile @@ -7,10 +7,11 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).o
-COBJS := $(BOARD).o cmd_mtc.o +COBJS-y := $(BOARD).o cmd_mtc.o +COBJS-$(CONFIG_VIDEO) += cmd_disp.o
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) +SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) SOBJS := $(addprefix $(obj),$(SOBJS))
$(LIB): $(obj).depend $(OBJS) diff --git a/board/digsy_mtc/cmd_disp.c b/board/digsy_mtc/cmd_disp.c new file mode 100644 index 0000000..16f0737 --- /dev/null +++ b/board/digsy_mtc/cmd_disp.c @@ -0,0 +1,54 @@ +/* + * (C) Copyright 2011 DENX Software Engineering, + * Anatolij Gustschin agust@denx.de + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <command.h> +#include <mpc5xxx.h> +#include "exbo.h" + +static int cmd_disp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + + if (argc < 2) { + printf("%s\n", gpio->simple_dvo & GPIO_USB1_0 ? "on" : "off"); + return 0; + } + + if (!strncmp(argv[1], "on", 2)) { + gpio->simple_dvo |= GPIO_USB1_0; + } else if (!strncmp(argv[1], "off", 3)) { + gpio->simple_dvo &= ~GPIO_USB1_0; + } else { + cmd_usage(cmdtp); + return 1; + } + return 0; +} + +U_BOOT_CMD(disp, 2, 1, cmd_disp, + "disp [on/off] - switch display on/off", + "\n - print display on/off status\n" + "on\n - turn on\n" + "off\n - turn off\n" +); diff --git a/board/digsy_mtc/digsy_mtc.c b/board/digsy_mtc/digsy_mtc.c index 588face..219b61a 100644 --- a/board/digsy_mtc/digsy_mtc.c +++ b/board/digsy_mtc/digsy_mtc.c @@ -48,6 +48,8 @@ #endif #include <libfdt.h> #include <fdt_support.h> +#include <i2c.h> +#include "exbo.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -207,6 +209,51 @@ int checkboard(void) return 0; }
+#if defined(CONFIG_VIDEO) +static void exbo_hw_init(void) +{ + struct mpc5xxx_gpt *gpt = (struct mpc5xxx_gpt *)MPC5XXX_GPT; + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + struct mpc5xxx_wu_gpio *wu_gpio = + (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO; + unsigned char val; + + /* 1st, check if extension board is present */ + if (i2c_read(EXBO_EE_I2C_ADDRESS, 0, 1, &val, 1)) + return; + + /* configure IrDA pins (PSC6 port) as gpios */ + gpio->port_config &= 0xFF8FFFFF; + + /* Init for USB1_0, EE_CLK and EE_DI - Low */ + gpio->simple_ddr |= GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI; + gpio->simple_ode &= ~(GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + gpio->simple_dvo &= ~(GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + gpio->simple_gpioe |= GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI; + + /* Init for EE_DO, EE_CTS - Input */ + wu_gpio->ddr &= ~(GPIO_EE_DO | GPIO_EE_CTS); + wu_gpio->enable |= GPIO_EE_DO | GPIO_EE_CTS; + + /* Init for PX_~EN (USB1_9) - High */ + gpio->sint_ode &= ~GPIO_USB1_9; + gpio->sint_ddr |= GPIO_USB1_9; + gpio->sint_inten &= ~GPIO_USB1_9; + gpio->sint_dvo |= GPIO_USB1_9; + gpio->sint_gpioe |= GPIO_USB1_9; + + /* Init for ~OE Switch (GPIO3) - Timer_0 GPIO High */ + gpt[0].emsr = GPT_GPIO_ON; + /* Init for S Switch (GPIO4) - Timer_1 GPIO High */ + gpt[1].emsr = GPT_GPIO_ON; + + /* Power-On camera supply */ + gpio->simple_dvo |= GPIO_USB1_0; +} +#else +static inline void exbo_hw_init(void) {} +#endif /* CONFIG_VIDEO */ + int board_early_init_r(void) { #ifdef CONFIG_MPC52XX_SPI @@ -224,6 +271,8 @@ int board_early_init_r(void) /* enable CS0 */ setbits_be32((void *)MPC5XXX_ADDECR, (1 << 16));
+ exbo_hw_init(); + #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) /* Low level USB init, required for proper kernel operation */ usb_cpu_init(); diff --git a/board/digsy_mtc/exbo.h b/board/digsy_mtc/exbo.h new file mode 100644 index 0000000..ccc9d9c --- /dev/null +++ b/board/digsy_mtc/exbo.h @@ -0,0 +1,17 @@ +#ifndef _EXBO_H +#define _EXBO_H + +#define GPIO_USB1_0 0x00010000 /* Power-On pin */ +#define GPIO_USB1_9 0x00000008 /* PX_~EN pin */ + +#define GPIO_EE_DO 0x10000000 /* PSC6_0 (DO) pin */ +#define GPIO_EE_CTS 0x20000000 /* PSC6_1 (CTS) pin */ +#define GPIO_EE_DI 0x10000000 /* PSC6_2 (DI) pin */ +#define GPIO_EE_CLK 0x20000000 /* PSC6_3 (CLK) pin */ + +#define GPT_GPIO_ON 0x00000034 /* GPT as simple GPIO, high */ + +/* ExBo I2C Addresses */ +#define EXBO_EE_I2C_ADDRESS 0x56 + +#endif diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index 2b7ba4d..c2b642c 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -87,10 +87,37 @@ #define CONFIG_BZIP2
/* + * Video + */ +#define CONFIG_VIDEO + +#ifdef CONFIG_VIDEO +#define CONFIG_VIDEO_MB862xx +#define CONFIG_VIDEO_MB862xx_ACCEL +#define CONFIG_VIDEO_CORALP +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_VGA_AS_SINGLE_DEVICE +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SPLASH_SCREEN +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (2 << 20) /* decompressed img */ + +/* Coral-PA clock frequency, geo and other both 133MHz */ +#define CONFIG_SYS_MB862xx_CCF 0x00050000 +/* Video SDRAM parameters */ +#define CONFIG_SYS_MB862xx_MMR 0x11d7fa72 +#endif + +/* * Command line configuration. */ #include <config_cmd_default.h>
+#ifdef CONFIG_VIDEO +#define CONFIG_CMD_BMP +#endif #define CONFIG_CMD_DFL #define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE

Hi Anatolij,
Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off.
Signed-off-by: Anatolij Gustschin agust@denx.de
[...]
board/digsy_mtc/exbo.h | 17 +++++++++++++
Please fold this into the digsy_mtc.h file. We should not add more files without proper licensing headers and 17 lines surely do not justify going to this length.
Apart from that
Acked-by: Detlev Zundel dzu@denx.de
Cheers Detlev

Hi Detlev,
On Fri, 27 May 2011 17:33:33 +0200 Detlev Zundel dzu@denx.de wrote: ...
board/digsy_mtc/exbo.h | 17 +++++++++++++
Please fold this into the digsy_mtc.h file. We should not add more files without proper licensing headers and 17 lines surely do not justify going to this length.
Okay. I just noticed that this patch is old. In another branch I've a newer version using register accessors. There is also a small bug in this patch. I'll resend and add the exbo.h header to existing header.
Thanks, Anatolij

Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off.
Signed-off-by: Anatolij Gustschin agust@denx.de --- v2: - get rid of exbo.h header and put the needed defines into the .c file - use accessors when reading/writing gpio registers - correct GPIO_EE_DO, GPIO_EE_CTS and GPIO_USB1_9 macros for settings in 8-bit wkup gpio registers
board/digsy_mtc/Makefile | 7 ++-- board/digsy_mtc/cmd_disp.c | 57 +++++++++++++++++++++++++++++++++++++ board/digsy_mtc/digsy_mtc.c | 66 +++++++++++++++++++++++++++++++++++++++++++ include/configs/digsy_mtc.h | 27 +++++++++++++++++ 4 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 board/digsy_mtc/cmd_disp.c
diff --git a/board/digsy_mtc/Makefile b/board/digsy_mtc/Makefile index a40076c..19f5b3a 100644 --- a/board/digsy_mtc/Makefile +++ b/board/digsy_mtc/Makefile @@ -7,10 +7,11 @@ include $(TOPDIR)/config.mk
LIB = $(obj)lib$(BOARD).o
-COBJS := $(BOARD).o cmd_mtc.o +COBJS-y := $(BOARD).o cmd_mtc.o +COBJS-$(CONFIG_VIDEO) += cmd_disp.o
-SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) -OBJS := $(addprefix $(obj),$(COBJS)) +SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c) +OBJS := $(addprefix $(obj),$(COBJS-y)) SOBJS := $(addprefix $(obj),$(SOBJS))
$(LIB): $(obj).depend $(OBJS) diff --git a/board/digsy_mtc/cmd_disp.c b/board/digsy_mtc/cmd_disp.c new file mode 100644 index 0000000..d5f5efb --- /dev/null +++ b/board/digsy_mtc/cmd_disp.c @@ -0,0 +1,57 @@ +/* + * (C) Copyright 2011 DENX Software Engineering, + * Anatolij Gustschin agust@denx.de + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +#include <common.h> +#include <command.h> +#include <mpc5xxx.h> +#include <asm/io.h> + +#define GPIO_USB1_0 0x00010000 + +static int cmd_disp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + + if (argc < 2) { + printf("%s\n", + in_be32(&gpio->simple_dvo) & GPIO_USB1_0 ? "on" : "off"); + return 0; + } + + if (!strncmp(argv[1], "on", 2)) { + setbits_be32(&gpio->simple_dvo, GPIO_USB1_0); + } else if (!strncmp(argv[1], "off", 3)) { + clrbits_be32(&gpio->simple_dvo, GPIO_USB1_0); + } else { + cmd_usage(cmdtp); + return 1; + } + return 0; +} + +U_BOOT_CMD(disp, 2, 1, cmd_disp, + "disp [on/off] - switch display on/off", + "\n - print display on/off status\n" + "on\n - turn on\n" + "off\n - turn off\n" +); diff --git a/board/digsy_mtc/digsy_mtc.c b/board/digsy_mtc/digsy_mtc.c index 588face..784ba2a 100644 --- a/board/digsy_mtc/digsy_mtc.c +++ b/board/digsy_mtc/digsy_mtc.c @@ -48,6 +48,7 @@ #endif #include <libfdt.h> #include <fdt_support.h> +#include <i2c.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -207,6 +208,69 @@ int checkboard(void) return 0; }
+#if defined(CONFIG_VIDEO) + +#define GPIO_USB1_0 0x00010000 /* Power-On pin */ +#define GPIO_USB1_9 0x08 /* PX_~EN pin */ + +#define GPIO_EE_DO 0x10 /* PSC6_0 (DO) pin */ +#define GPIO_EE_CTS 0x20 /* PSC6_1 (CTS) pin */ +#define GPIO_EE_DI 0x10000000 /* PSC6_2 (DI) pin */ +#define GPIO_EE_CLK 0x20000000 /* PSC6_3 (CLK) pin */ + +#define GPT_GPIO_ON 0x00000034 /* GPT as simple GPIO, high */ + +/* ExBo I2C Addresses */ +#define EXBO_EE_I2C_ADDRESS 0x56 + +static void exbo_hw_init(void) +{ + struct mpc5xxx_gpt *gpt = (struct mpc5xxx_gpt *)MPC5XXX_GPT; + struct mpc5xxx_gpio *gpio = (struct mpc5xxx_gpio *)MPC5XXX_GPIO; + struct mpc5xxx_wu_gpio *wu_gpio = + (struct mpc5xxx_wu_gpio *)MPC5XXX_WU_GPIO; + unsigned char val; + + /* 1st, check if extension board is present */ + if (i2c_read(EXBO_EE_I2C_ADDRESS, 0, 1, &val, 1)) + return; + + /* configure IrDA pins (PSC6 port) as gpios */ + gpio->port_config &= 0xFF8FFFFF; + + /* Init for USB1_0, EE_CLK and EE_DI - Low */ + setbits_be32(&gpio->simple_ddr, + GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + clrbits_be32(&gpio->simple_ode, + GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + clrbits_be32(&gpio->simple_dvo, + GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + setbits_be32(&gpio->simple_gpioe, + GPIO_USB1_0 | GPIO_EE_CLK | GPIO_EE_DI); + + /* Init for EE_DO, EE_CTS - Input */ + clrbits_8(&wu_gpio->ddr, GPIO_EE_DO | GPIO_EE_CTS); + setbits_8(&wu_gpio->enable, GPIO_EE_DO | GPIO_EE_CTS); + + /* Init for PX_~EN (USB1_9) - High */ + clrbits_8(&gpio->sint_ode, GPIO_USB1_9); + setbits_8(&gpio->sint_ddr, GPIO_USB1_9); + clrbits_8(&gpio->sint_inten, GPIO_USB1_9); + setbits_8(&gpio->sint_dvo, GPIO_USB1_9); + setbits_8(&gpio->sint_gpioe, GPIO_USB1_9); + + /* Init for ~OE Switch (GPIO3) - Timer_0 GPIO High */ + out_be32(&gpt[0].emsr, GPT_GPIO_ON); + /* Init for S Switch (GPIO4) - Timer_1 GPIO High */ + out_be32(&gpt[1].emsr, GPT_GPIO_ON); + + /* Power-On camera supply */ + setbits_be32(&gpio->simple_dvo, GPIO_USB1_0); +} +#else +static inline void exbo_hw_init(void) {} +#endif /* CONFIG_VIDEO */ + int board_early_init_r(void) { #ifdef CONFIG_MPC52XX_SPI @@ -224,6 +288,8 @@ int board_early_init_r(void) /* enable CS0 */ setbits_be32((void *)MPC5XXX_ADDECR, (1 << 16));
+ exbo_hw_init(); + #if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) /* Low level USB init, required for proper kernel operation */ usb_cpu_init(); diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index 2b7ba4d..c2b642c 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -87,10 +87,37 @@ #define CONFIG_BZIP2
/* + * Video + */ +#define CONFIG_VIDEO + +#ifdef CONFIG_VIDEO +#define CONFIG_VIDEO_MB862xx +#define CONFIG_VIDEO_MB862xx_ACCEL +#define CONFIG_VIDEO_CORALP +#define CONFIG_CFB_CONSOLE +#define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_SW_CURSOR +#define CONFIG_VGA_AS_SINGLE_DEVICE +#define CONFIG_SYS_CONSOLE_IS_IN_ENV +#define CONFIG_SPLASH_SCREEN +#define CONFIG_VIDEO_BMP_GZIP +#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (2 << 20) /* decompressed img */ + +/* Coral-PA clock frequency, geo and other both 133MHz */ +#define CONFIG_SYS_MB862xx_CCF 0x00050000 +/* Video SDRAM parameters */ +#define CONFIG_SYS_MB862xx_MMR 0x11d7fa72 +#endif + +/* * Command line configuration. */ #include <config_cmd_default.h>
+#ifdef CONFIG_VIDEO +#define CONFIG_CMD_BMP +#endif #define CONFIG_CMD_DFL #define CONFIG_CMD_CACHE #define CONFIG_CMD_DATE

Hi Anatolij,
Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off.
Signed-off-by: Anatolij Gustschin agust@denx.de
Acked-by: Detlev Zundel dzu@denx.de
Cheers Detlev

Dear Anatolij Gustschin,
In message 1306739780-19781-1-git-send-email-agust@denx.de you wrote:
Add detection and initialisation for graphic extension board and support splash screen when booting. Enable "bmp" command in the board configuration and provide "disp" command to be able to switch the display on/off.
Signed-off-by: Anatolij Gustschin agust@denx.de
v2:
- get rid of exbo.h header and put the needed defines into the .c file
- use accessors when reading/writing gpio registers
- correct GPIO_EE_DO, GPIO_EE_CTS and GPIO_USB1_9 macros for settings in 8-bit wkup gpio registers
board/digsy_mtc/Makefile | 7 ++-- board/digsy_mtc/cmd_disp.c | 57 +++++++++++++++++++++++++++++++++++++ board/digsy_mtc/digsy_mtc.c | 66 +++++++++++++++++++++++++++++++++++++++++++ include/configs/digsy_mtc.h | 27 +++++++++++++++++ 4 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 board/digsy_mtc/cmd_disp.c
Applied, thanks.
Best regards,
Wolfgang Denk

Up to now only reading 'appreg' value was implemented in the digsyMTC special 'mtc appreg' command. Extend the command to support writing appreg value, too.
Signed-off-by: Werner Pfister Pfister_Werner@intercontrol.de Signed-off-by: Anatolij Gustschin agust@denx.de --- board/digsy_mtc/cmd_mtc.c | 46 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/board/digsy_mtc/cmd_mtc.c b/board/digsy_mtc/cmd_mtc.c index ba0c367..a12becf 100644 --- a/board/digsy_mtc/cmd_mtc.c +++ b/board/digsy_mtc/cmd_mtc.c @@ -31,6 +31,8 @@
DECLARE_GLOBAL_DATA_PTR;
+static uchar user_out; + static const char *led_names[] = { "diag", "can1", @@ -112,6 +114,8 @@ static int do_mtc_led(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) else pcmd.cmd_val2 = 0;
+ pcmd.user_out = user_out; + mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx);
@@ -128,6 +132,7 @@ static int do_mtc_key(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_GET_VIM; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -160,6 +165,7 @@ static int do_mtc_digout(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
pcmd.cmd = CMD_GET_VIM; pcmd.user_out = channel_mask; + user_out = channel_mask;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -187,6 +193,7 @@ static int do_mtc_digin(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_GET_VIM; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -205,6 +212,7 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv rx_msp_cmd prx; int err; char buf[5]; + uchar appreg;
/* read appreg */ memset(&pcmd, 0, sizeof(pcmd)); @@ -214,13 +222,34 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv pcmd.cmd_val0 = 5; /* max. Count */ pcmd.cmd_val1 = 5; /* max. Time */ pcmd.cmd_val2 = 0; /* =0 means read appreg */ + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx);
+ /* on success decide between read or write */ if (!err) { - sprintf(buf, "%d", prx.ack2); - setenv("appreg", buf); + if (argc == 2) { + appreg = simple_strtol(argv[1], NULL, 10); + if (appreg == 0) { + printf("mtc appreg: invalid parameter - " + "must be betwenn 1 and 255\n"); + return -1; + } + memset(&pcmd, 0, sizeof(pcmd)); + pcmd.cmd = CMD_WD_PARA; + pcmd.cmd_val0 = prx.ack3; /* max. Count */ + pcmd.cmd_val1 = prx.ack0; /* max. Time */ + pcmd.cmd_val2 = appreg; /* !=0 means write appreg */ + pcmd.user_out = user_out; + memset(&prx, 0, sizeof(prx)); + + mtc_calculate_checksum(&pcmd); + err = msp430_xfer(&pcmd, &prx); + } else { + sprintf(buf, "%d", prx.ack2); + setenv("appreg", buf); + } }
return err; @@ -236,6 +265,7 @@ static int do_mtc_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_FW_VERSION; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -259,6 +289,7 @@ static int do_mtc_state(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
pcmd.cmd = CMD_WD_WDSTATE; pcmd.cmd_val2 = 1; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -288,8 +319,10 @@ cmd_tbl_t cmd_mtc_sub[] = { "returns state of user key", ""), U_BOOT_CMD_MKENT(version, 0, 1, do_mtc_version, "returns firmware version of supervisor uC", ""), - U_BOOT_CMD_MKENT(appreg, 0, 1, do_mtc_appreg, - "reads appreg value and stores in environment variable 'appreg'", ""), + U_BOOT_CMD_MKENT(appreg, 1, 1, do_mtc_appreg, + "reads or writes appreg value and stores in environment " + "variable 'appreg'", + "[value] - value (1 - 255) to write to appreg"), U_BOOT_CMD_MKENT(digin, 1, 1, do_mtc_digin, "returns state of digital input", "<channel_num> - get state of digital input (1 or 2)\n"), @@ -342,8 +375,9 @@ U_BOOT_CMD(mtc, 5, 1, cmd_mtc, " [blink]: blink interval in 100ms steps (1 - 10; 0 = static)\n" "key - returns state of user key\n" "version - returns firmware version of supervisor uC\n" - "appreg - reads appreg value and stores in environment variable" - " 'appreg'\n" + "appreg [value] - reads (in environment variable 'appreg') or writes" + " appreg value\n" + " [value]: value (1 - 255) to write to appreg\n" "digin [channel] - returns state of digital input (1 or 2)\n" "digout <on|off> <on|off> - sets state of two digital outputs\n" "state - displays state\n"

Hi Anatolij,
Up to now only reading 'appreg' value was implemented in the digsyMTC special 'mtc appreg' command. Extend the command to support writing appreg value, too.
Signed-off-by: Werner Pfister Pfister_Werner@intercontrol.de Signed-off-by: Anatolij Gustschin agust@denx.de
board/digsy_mtc/cmd_mtc.c | 46 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/board/digsy_mtc/cmd_mtc.c b/board/digsy_mtc/cmd_mtc.c index ba0c367..a12becf 100644 --- a/board/digsy_mtc/cmd_mtc.c +++ b/board/digsy_mtc/cmd_mtc.c
[...]
@@ -214,13 +222,34 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv pcmd.cmd_val0 = 5; /* max. Count */ pcmd.cmd_val1 = 5; /* max. Time */ pcmd.cmd_val2 = 0; /* =0 means read appreg */
pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx);
/* on success decide between read or write */ if (!err) {
sprintf(buf, "%d", prx.ack2);
setenv("appreg", buf);
if (argc == 2) {
appreg = simple_strtol(argv[1], NULL, 10);
if (appreg == 0) {
printf("mtc appreg: invalid parameter - "
"must be betwenn 1 and 255\n");
Typo, should be "between"
Otherwise
Acked-by: Detlev Zundel dzu@denx.de
Thanks Detlev

Hi Detlev,
On Fri, 27 May 2011 17:36:01 +0200 Detlev Zundel dzu@denx.de wrote: ...
"must be betwenn 1 and 255\n");
Typo, should be "between"
I'll fix it. Thanks for catching!
Thanks, Anatolij

Up to now only reading 'appreg' value was implemented in the digsyMTC special 'mtc appreg' command. Extend the command to support writing appreg value, too.
Signed-off-by: Werner Pfister Pfister_Werner@intercontrol.de Signed-off-by: Anatolij Gustschin agust@denx.de Acked-by: Detlev Zundel dzu@denx.de --- v2: - fix typo in error message
board/digsy_mtc/cmd_mtc.c | 46 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 6 deletions(-)
diff --git a/board/digsy_mtc/cmd_mtc.c b/board/digsy_mtc/cmd_mtc.c index ba0c367..fffcee9 100644 --- a/board/digsy_mtc/cmd_mtc.c +++ b/board/digsy_mtc/cmd_mtc.c @@ -31,6 +31,8 @@
DECLARE_GLOBAL_DATA_PTR;
+static uchar user_out; + static const char *led_names[] = { "diag", "can1", @@ -112,6 +114,8 @@ static int do_mtc_led(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) else pcmd.cmd_val2 = 0;
+ pcmd.user_out = user_out; + mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx);
@@ -128,6 +132,7 @@ static int do_mtc_key(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_GET_VIM; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -160,6 +165,7 @@ static int do_mtc_digout(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv
pcmd.cmd = CMD_GET_VIM; pcmd.user_out = channel_mask; + user_out = channel_mask;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -187,6 +193,7 @@ static int do_mtc_digin(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[ memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_GET_VIM; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -205,6 +212,7 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv rx_msp_cmd prx; int err; char buf[5]; + uchar appreg;
/* read appreg */ memset(&pcmd, 0, sizeof(pcmd)); @@ -214,13 +222,34 @@ static int do_mtc_appreg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv pcmd.cmd_val0 = 5; /* max. Count */ pcmd.cmd_val1 = 5; /* max. Time */ pcmd.cmd_val2 = 0; /* =0 means read appreg */ + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx);
+ /* on success decide between read or write */ if (!err) { - sprintf(buf, "%d", prx.ack2); - setenv("appreg", buf); + if (argc == 2) { + appreg = simple_strtol(argv[1], NULL, 10); + if (appreg == 0) { + printf("mtc appreg: invalid parameter - " + "must be between 1 and 255\n"); + return -1; + } + memset(&pcmd, 0, sizeof(pcmd)); + pcmd.cmd = CMD_WD_PARA; + pcmd.cmd_val0 = prx.ack3; /* max. Count */ + pcmd.cmd_val1 = prx.ack0; /* max. Time */ + pcmd.cmd_val2 = appreg; /* !=0 means write appreg */ + pcmd.user_out = user_out; + memset(&prx, 0, sizeof(prx)); + + mtc_calculate_checksum(&pcmd); + err = msp430_xfer(&pcmd, &prx); + } else { + sprintf(buf, "%d", prx.ack2); + setenv("appreg", buf); + } }
return err; @@ -236,6 +265,7 @@ static int do_mtc_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg memset(&prx, 0, sizeof(prx));
pcmd.cmd = CMD_FW_VERSION; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -259,6 +289,7 @@ static int do_mtc_state(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[
pcmd.cmd = CMD_WD_WDSTATE; pcmd.cmd_val2 = 1; + pcmd.user_out = user_out;
mtc_calculate_checksum(&pcmd); err = msp430_xfer(&pcmd, &prx); @@ -288,8 +319,10 @@ cmd_tbl_t cmd_mtc_sub[] = { "returns state of user key", ""), U_BOOT_CMD_MKENT(version, 0, 1, do_mtc_version, "returns firmware version of supervisor uC", ""), - U_BOOT_CMD_MKENT(appreg, 0, 1, do_mtc_appreg, - "reads appreg value and stores in environment variable 'appreg'", ""), + U_BOOT_CMD_MKENT(appreg, 1, 1, do_mtc_appreg, + "reads or writes appreg value and stores in environment " + "variable 'appreg'", + "[value] - value (1 - 255) to write to appreg"), U_BOOT_CMD_MKENT(digin, 1, 1, do_mtc_digin, "returns state of digital input", "<channel_num> - get state of digital input (1 or 2)\n"), @@ -342,8 +375,9 @@ U_BOOT_CMD(mtc, 5, 1, cmd_mtc, " [blink]: blink interval in 100ms steps (1 - 10; 0 = static)\n" "key - returns state of user key\n" "version - returns firmware version of supervisor uC\n" - "appreg - reads appreg value and stores in environment variable" - " 'appreg'\n" + "appreg [value] - reads (in environment variable 'appreg') or writes" + " appreg value\n" + " [value]: value (1 - 255) to write to appreg\n" "digin [channel] - returns state of digital input (1 or 2)\n" "digout <on|off> <on|off> - sets state of two digital outputs\n" "state - displays state\n"

Signed-off-by: Anatolij Gustschin agust@denx.de --- Another digsy_mtc patch for this merge window. It applies on top of patch series [PATCH 0/5] mpc5200: digsy_mtc: update for next.
board/{ => intercontrol}/digsy_mtc/Makefile | 0 board/{ => intercontrol}/digsy_mtc/cmd_disp.c | 0 board/{ => intercontrol}/digsy_mtc/cmd_mtc.c | 0 board/{ => intercontrol}/digsy_mtc/cmd_mtc.h | 0 board/{ => intercontrol}/digsy_mtc/digsy_mtc.c | 0 board/{ => intercontrol}/digsy_mtc/eeprom.h | 0 .../{ => intercontrol}/digsy_mtc/is42s16800a-7t.h | 0 board/{ => intercontrol}/digsy_mtc/is45s16800a2.h | 0 boards.cfg | 8 ++++---- include/configs/digsy_mtc.h | 1 + tools/Makefile | 3 +++ tools/logos/intercontrol.bmp | Bin 0 -> 4998 bytes 12 files changed, 8 insertions(+), 4 deletions(-) rename board/{ => intercontrol}/digsy_mtc/Makefile (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_disp.c (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_mtc.c (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_mtc.h (100%) rename board/{ => intercontrol}/digsy_mtc/digsy_mtc.c (100%) rename board/{ => intercontrol}/digsy_mtc/eeprom.h (100%) rename board/{ => intercontrol}/digsy_mtc/is42s16800a-7t.h (100%) rename board/{ => intercontrol}/digsy_mtc/is45s16800a2.h (100%) create mode 100644 tools/logos/intercontrol.bmp
diff --git a/board/digsy_mtc/Makefile b/board/intercontrol/digsy_mtc/Makefile similarity index 100% rename from board/digsy_mtc/Makefile rename to board/intercontrol/digsy_mtc/Makefile diff --git a/board/digsy_mtc/cmd_disp.c b/board/intercontrol/digsy_mtc/cmd_disp.c similarity index 100% rename from board/digsy_mtc/cmd_disp.c rename to board/intercontrol/digsy_mtc/cmd_disp.c diff --git a/board/digsy_mtc/cmd_mtc.c b/board/intercontrol/digsy_mtc/cmd_mtc.c similarity index 100% rename from board/digsy_mtc/cmd_mtc.c rename to board/intercontrol/digsy_mtc/cmd_mtc.c diff --git a/board/digsy_mtc/cmd_mtc.h b/board/intercontrol/digsy_mtc/cmd_mtc.h similarity index 100% rename from board/digsy_mtc/cmd_mtc.h rename to board/intercontrol/digsy_mtc/cmd_mtc.h diff --git a/board/digsy_mtc/digsy_mtc.c b/board/intercontrol/digsy_mtc/digsy_mtc.c similarity index 100% rename from board/digsy_mtc/digsy_mtc.c rename to board/intercontrol/digsy_mtc/digsy_mtc.c diff --git a/board/digsy_mtc/eeprom.h b/board/intercontrol/digsy_mtc/eeprom.h similarity index 100% rename from board/digsy_mtc/eeprom.h rename to board/intercontrol/digsy_mtc/eeprom.h diff --git a/board/digsy_mtc/is42s16800a-7t.h b/board/intercontrol/digsy_mtc/is42s16800a-7t.h similarity index 100% rename from board/digsy_mtc/is42s16800a-7t.h rename to board/intercontrol/digsy_mtc/is42s16800a-7t.h diff --git a/board/digsy_mtc/is45s16800a2.h b/board/intercontrol/digsy_mtc/is45s16800a2.h similarity index 100% rename from board/digsy_mtc/is45s16800a2.h rename to board/intercontrol/digsy_mtc/is45s16800a2.h diff --git a/boards.cfg b/boards.cfg index 4522ea7..3e3d428 100644 --- a/boards.cfg +++ b/boards.cfg @@ -317,10 +317,10 @@ a4m072 powerpc mpc5xxx a4m072 BC3450 powerpc mpc5xxx bc3450 canmb powerpc mpc5xxx cm5200 powerpc mpc5xxx -digsy_mtc powerpc mpc5xxx digsy_mtc -digsy_mtc_RAMBOOT powerpc mpc5xxx digsy_mtc - - digsy_mtc:SYS_TEXT_BASE=0x00100000 -digsy_mtc_rev5 powerpc mpc5xxx digsy_mtc - - digsy_mtc:DIGSY_REV5 -digsy_mtc_rev5_RAMBOOT powerpc mpc5xxx digsy_mtc - - digsy_mtc:SYS_TEXT_BASE=0x00100000,DIGSY_REV5 +digsy_mtc powerpc mpc5xxx digsy_mtc intercontrol +digsy_mtc_RAMBOOT powerpc mpc5xxx digsy_mtc intercontrol - digsy_mtc:SYS_TEXT_BASE=0x00100000 +digsy_mtc_rev5 powerpc mpc5xxx digsy_mtc intercontrol - digsy_mtc:DIGSY_REV5 +digsy_mtc_rev5_RAMBOOT powerpc mpc5xxx digsy_mtc intercontrol - digsy_mtc:SYS_TEXT_BASE=0x00100000,DIGSY_REV5 galaxy5200 powerpc mpc5xxx galaxy5200 - - galaxy5200:galaxy5200 galaxy5200_LOWBOOT powerpc mpc5xxx galaxy5200 - - galaxy5200:galaxy5200_LOWBOOT icecube_5200 powerpc mpc5xxx icecube - - IceCube diff --git a/include/configs/digsy_mtc.h b/include/configs/digsy_mtc.h index c2b642c..ba3097d 100644 --- a/include/configs/digsy_mtc.h +++ b/include/configs/digsy_mtc.h @@ -97,6 +97,7 @@ #define CONFIG_VIDEO_CORALP #define CONFIG_CFB_CONSOLE #define CONFIG_VIDEO_LOGO +#define CONFIG_VIDEO_BMP_LOGO #define CONFIG_VIDEO_SW_CURSOR #define CONFIG_VGA_AS_SINGLE_DEVICE #define CONFIG_SYS_CONSOLE_IS_IN_ENV diff --git a/tools/Makefile b/tools/Makefile index 97f83f8..de96e34 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -129,6 +129,9 @@ endif ifeq ($(VENDOR),syteco) LOGO_BMP= logos/syteco.bmp endif +ifeq ($(VENDOR),intercontrol) +LOGO_BMP= logos/intercontrol.bmp +endif
# now $(obj) is defined HOSTSRCS += $(addprefix $(SRCTREE)/,$(EXT_OBJ_FILES-y:.o=.c)) diff --git a/tools/logos/intercontrol.bmp b/tools/logos/intercontrol.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf2a884b2df9e6fd63d89f929b64724d0fa10426 GIT binary patch literal 4998 zcmeHJEsQEj5dLmME}LNXIJ1(VP!}XYkyDt<ATg65$tcL2K%!m{Cy*nNNF;LQO616q zNF?&Us_O0;va|0XIo^BXb+)?xzWV8+cV_<l>&x%Z_3IPRrSuP}P5K4T+=10^)c-L0 zo4SxK`k$Zq_k!map;x>Jy$ZGQD%5VHt<*)k+eNqAL$}vMuh&Pf-$!3*i2iVhq0$J$ z(Fh}@G4mWT8jmqnnlRsylw&-ZFmH|t`D8L>Zpzasrlf8!C!b+Do3TcY8F^p%oOP(r z=a`d*qnv!nTI5UeagHVVa=F5CwPK9|EAol*HCF32)=C@ZEU?~eup!On1@jb?Gi<Vq z@dYySEZZX6Zn0I`G4_P*Zik)H9=rV>ds3F2$PYLigx=^s;qXSjKjDphFZ}%-@1(=w zOn#)D{CLDsDW~m>JkO~MFOV0c{EULUIGxBZI0-)qC!NnYD_wB8T#)`;U!8!z@ijce zna`;eMMSZx=}J(O^N6E_IMGF_FKn7ex2I;S)oSqH)~|s1R)R0w8YEgW9yGnlwcu5q zL8)*eq7Y;@L93);6_*Eir@?KaiVd52no*i2(O@u$l5{a>m@#0!m7rx?Ng8*ogGPt4 zjmBCKfJn*}eWis{d#i%otPHM^-t7{J`e6x>tqe3wH_phk57<W=SiTWgTLGTjh^(~q z7n%r)3bKVI7*!M;%#0N|7%QsUsvB_w*Gh}`rBx;=JE-CxDFe+kv8%%Sdo>^{>rbV; zs=!~0avXXP4RgQ{qz5yjbJZNG91A*e8h_`xM5%wG_#aC;=W?B!;tZuiw<(0Fv&N++ zk8_HFYo;Q&B=OJM`d(_o9%AJ2V}GJgdl5jW?$77WD|Yp(-L~o|EUpat>RfK<CG_!F z0f_x?#JgL0<W(l|*bd6<K)AcnBB|-crYpMyg;`$<s=0r1hbl|lECC%q4SqDZx1vj} zNvx>su1H-|F2Jzv{@mO`0P<P4aL+nU=s)ISC2I!sfAzw5KxDaMFSyhn=JIJT?r7?# zEIgd{c7ajh-Pm+5MfdEpB$i*ZtH@0pX08feb|?Yexg_%Xo1qacI-!y;>IxW>5&=<q zoUz2**^1@7`j(2*#NJAl%8Hg1DLu3oRKGFP>u=1PdT|pltj*`%p%Cv6+=&(z9feo5 z=~unDpT-A~mp_(I=D0=QwU=p|9a;XJEoF2mz_skJNf{JAV#E{<rpjGyl%*=UE8-8` V3!BqctLOhzzJDw~BYxls{0k2L>t6r>
literal 0 HcmV?d00001

Dear Anatolij Gustschin,
In message 1310848010-31271-1-git-send-email-agust@denx.de you wrote:
Signed-off-by: Anatolij Gustschin agust@denx.de
Another digsy_mtc patch for this merge window. It applies on top of patch series [PATCH 0/5] mpc5200: digsy_mtc: update for next.
board/{ => intercontrol}/digsy_mtc/Makefile | 0 board/{ => intercontrol}/digsy_mtc/cmd_disp.c | 0 board/{ => intercontrol}/digsy_mtc/cmd_mtc.c | 0 board/{ => intercontrol}/digsy_mtc/cmd_mtc.h | 0 board/{ => intercontrol}/digsy_mtc/digsy_mtc.c | 0 board/{ => intercontrol}/digsy_mtc/eeprom.h | 0 .../{ => intercontrol}/digsy_mtc/is42s16800a-7t.h | 0 board/{ => intercontrol}/digsy_mtc/is45s16800a2.h | 0 boards.cfg | 8 ++++---- include/configs/digsy_mtc.h | 1 + tools/Makefile | 3 +++ tools/logos/intercontrol.bmp | Bin 0 -> 4998 bytes 12 files changed, 8 insertions(+), 4 deletions(-) rename board/{ => intercontrol}/digsy_mtc/Makefile (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_disp.c (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_mtc.c (100%) rename board/{ => intercontrol}/digsy_mtc/cmd_mtc.h (100%) rename board/{ => intercontrol}/digsy_mtc/digsy_mtc.c (100%) rename board/{ => intercontrol}/digsy_mtc/eeprom.h (100%) rename board/{ => intercontrol}/digsy_mtc/is42s16800a-7t.h (100%) rename board/{ => intercontrol}/digsy_mtc/is45s16800a2.h (100%) create mode 100644 tools/logos/intercontrol.bmp
Applied, thanks.
Best regards,
Wolfgang Denk

Dear Anatolij Gustschin,
In message 1306739931-19890-1-git-send-email-agust@denx.de you wrote:
Up to now only reading 'appreg' value was implemented in the digsyMTC special 'mtc appreg' command. Extend the command to support writing appreg value, too.
Signed-off-by: Werner Pfister Pfister_Werner@intercontrol.de Signed-off-by: Anatolij Gustschin agust@denx.de Acked-by: Detlev Zundel dzu@denx.de
v2:
- fix typo in error message
board/digsy_mtc/cmd_mtc.c | 46 +++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 6 deletions(-)
Applied, thanks.
Best regards,
Wolfgang Denk
participants (6)
-
Anatolij Gustschin
-
Anatolij Gustschin
-
Detlev Zundel
-
Matthias Fuchs
-
Stefan Roese
-
Wolfgang Denk