* [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics
@ 2008-05-15 21:23 Grant Erickson
2008-06-11 23:00 ` Wolfgang Denk
0 siblings, 1 reply; 5+ messages in thread
From: Grant Erickson @ 2008-05-15 21:23 UTC (permalink / raw)
To: u-boot
Added preprocessor definitions for External Bus Controller (EBC)
configuration, bank configuration and access parameter register fields
along with a macro for defining them and verifying them against the
data sheet or user's manual easier.
Tested against AMCC "Haleakala".
Signed-off-by: Grant Erickson <gerickson@nuovations.com>
---
include/ppc405.h | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 98 insertions(+), 0 deletions(-)
diff --git a/include/ppc405.h b/include/ppc405.h
index 37b121c..009aa68 100644
--- a/include/ppc405.h
+++ b/include/ppc405.h
@@ -22,6 +22,9 @@
#ifndef __PPC405_H__
#define __PPC405_H__
+#define PPC_REG_BITS 32
+#define PPC_REG_VAL(bit, value) ((value) << ((PPC_REG_BITS - 1) - (bit)))
+
#ifndef CONFIG_IOP480
#define CFG_DCACHE_SIZE (16 << 10) /* For AMCC 405 CPUs */
#else
@@ -363,6 +366,101 @@
#endif /* defined(CONFIG_405EZ) */
/******************************************************************************
+ * External Bus Controller (EBC)
+ *****************************************************************************/
+
+/* Bank Configuration Register */
+#define EBC_BXCR_BAS_MASK PPC_REG_VAL(11, 0xFFF)
+#define EBC_BXCR_BAS_ENCODE(n) ((((unsigned long)(n))&EBC_BXCR_BAS_MASK)<<0)
+#define EBC_BXCR_BS_MASK PPC_REG_VAL(14, 0x7)
+#define EBC_BXCR_BS_1MB PPC_REG_VAL(14, 0x0)
+#define EBC_BXCR_BS_2MB PPC_REG_VAL(14, 0x1)
+#define EBC_BXCR_BS_4MB PPC_REG_VAL(14, 0x2)
+#define EBC_BXCR_BS_8MB PPC_REG_VAL(14, 0x3)
+#define EBC_BXCR_BS_16MB PPC_REG_VAL(14, 0x4)
+#define EBC_BXCR_BS_32MB PPC_REG_VAL(14, 0x5)
+#define EBC_BXCR_BS_64MB PPC_REG_VAL(14, 0x6)
+#define EBC_BXCR_BS_128MB PPC_REG_VAL(14, 0x7)
+#define EBC_BXCR_BU_MASK PPC_REG_VAL(16, 0x3)
+#define EBC_BXCR_BU_NONE PPC_REG_VAL(16, 0x0)
+#define EBC_BXCR_BU_R PPC_REG_VAL(16, 0x1)
+#define EBC_BXCR_BU_W PPC_REG_VAL(16, 0x2)
+#define EBC_BXCR_BU_RW PPC_REG_VAL(16, 0x3)
+#define EBC_BXCR_BW_MASK PPC_REG_VAL(18, 0x3)
+#define EBC_BXCR_BW_8BIT PPC_REG_VAL(18, 0x0)
+#define EBC_BXCR_BW_16BIT PPC_REG_VAL(18, 0x1)
+#define EBC_BXCR_BW_32BIT PPC_REG_VAL(18, 0x3)
+
+/* Bank Access Parameter Register */
+#define EBC_BXAP_BME_ENABLED PPC_REG_VAL(0, 0x1)
+#define EBC_BXAP_BME_DISABLED PPC_REG_VAL(0, 0x0)
+#define EBC_BXAP_TWT_ENCODE(n) PPC_REG_VAL(8, ((unsigned long)(n)) & 0xFF)
+#define EBC_BXAP_FWT_ENCODE(n) PPC_REG_VAL(5, ((unsigned long)(n)) & 0x1F)
+#define EBC_BXAP_BWT_ENCODE(n) PPC_REG_VAL(8, ((unsigned long)(n)) & 0x7)
+#define EBC_BXAP_BCE_DISABLE PPC_REG_VAL(9, 0x0)
+#define EBC_BXAP_BCE_ENABLE PPC_REG_VAL(9, 0x1)
+#define EBC_BXAP_BCT_MASK PPC_REG_VAL(11, 0x3)
+#define EBC_BXAP_BCT_2TRANS PPC_REG_VAL(11, 0x0)
+#define EBC_BXAP_BCT_4TRANS PPC_REG_VAL(11, 0x1)
+#define EBC_BXAP_BCT_8TRANS PPC_REG_VAL(11, 0x2)
+#define EBC_BXAP_BCT_16TRANS PPC_REG_VAL(11, 0x3)
+#define EBC_BXAP_CSN_ENCODE(n) PPC_REG_VAL(13, ((unsigned long)(n)) & 0x3)
+#define EBC_BXAP_OEN_ENCODE(n) PPC_REG_VAL(15, ((unsigned long)(n)) & 0x3)
+#define EBC_BXAP_WBN_ENCODE(n) PPC_REG_VAL(17, ((unsigned long)(n)) & 0x3)
+#define EBC_BXAP_WBF_ENCODE(n) PPC_REG_VAL(19, ((unsigned long)(n)) & 0x3)
+#define EBC_BXAP_TH_ENCODE(n) PPC_REG_VAL(22, ((unsigned long)(n)) & 0x7)
+#define EBC_BXAP_RE_ENABLED PPC_REG_VAL(23, 0x1)
+#define EBC_BXAP_RE_DISABLED PPC_REG_VAL(23, 0x0)
+#define EBC_BXAP_SOR_DELAYED PPC_REG_VAL(24, 0x0)
+#define EBC_BXAP_SOR_NONDELAYED PPC_REG_VAL(24, 0x1)
+#define EBC_BXAP_BEM_WRITEONLY PPC_REG_VAL(25, 0x0)
+#define EBC_BXAP_BEM_RW PPC_REG_VAL(25, 0x1)
+#define EBC_BXAP_PEN_DISABLED PPC_REG_VAL(26, 0x0)
+#define EBC_BXAP_PEN_ENABLED PPC_REG_VAL(26, 0x1)
+
+/* Configuration Register */
+#define EBC_CFG_LE_MASK PPC_REG_VAL(0, 0x1)
+#define EBC_CFG_LE_UNLOCK PPC_REG_VAL(0, 0x0)
+#define EBC_CFG_LE_LOCK PPC_REG_VAL(0, 0x1)
+#define EBC_CFG_PTD_MASK PPC_REG_VAL(1, 0x1)
+#define EBC_CFG_PTD_ENABLE PPC_REG_VAL(1, 0x0)
+#define EBC_CFG_PTD_DISABLE PPC_REG_VAL(1, 0x1)
+#define EBC_CFG_RTC_MASK PPC_REG_VAL(4, 0x7)
+#define EBC_CFG_RTC_16PERCLK PPC_REG_VAL(4, 0x0)
+#define EBC_CFG_RTC_32PERCLK PPC_REG_VAL(4, 0x1)
+#define EBC_CFG_RTC_64PERCLK PPC_REG_VAL(4, 0x2)
+#define EBC_CFG_RTC_128PERCLK PPC_REG_VAL(4, 0x3)
+#define EBC_CFG_RTC_256PERCLK PPC_REG_VAL(4, 0x4)
+#define EBC_CFG_RTC_512PERCLK PPC_REG_VAL(4, 0x5)
+#define EBC_CFG_RTC_1024PERCLK PPC_REG_VAL(4, 0x6)
+#define EBC_CFG_RTC_2048PERCLK PPC_REG_VAL(4, 0x7)
+#define EBC_CFG_ATC_MASK PPC_REG_VAL(5, 0x1)
+#define EBC_CFG_ATC_HI PPC_REG_VAL(5, 0x0)
+#define EBC_CFG_ATC_PREVIOUS PPC_REG_VAL(5, 0x1)
+#define EBC_CFG_DTC_MASK PPC_REG_VAL(6, 0x1)
+#define EBC_CFG_DTC_HI PPC_REG_VAL(6, 0x0)
+#define EBC_CFG_DTC_PREVIOUS PPC_REG_VAL(6, 0x1)
+#define EBC_CFG_CTC_MASK PPC_REG_VAL(7, 0x1)
+#define EBC_CFG_CTC_HI PPC_REG_VAL(7, 0x0)
+#define EBC_CFG_CTC_PREVIOUS PPC_REG_VAL(7, 0x1)
+#define EBC_CFG_OEO_MASK PPC_REG_VAL(8, 0x1)
+#define EBC_CFG_OEO_DISABLE PPC_REG_VAL(8, 0x0)
+#define EBC_CFG_OEO_ENABLE PPC_REG_VAL(8, 0x1)
+#define EBC_CFG_EMC_MASK PPC_REG_VAL(9, 0x1)
+#define EBC_CFG_EMC_NONDEFAULT PPC_REG_VAL(9, 0x0)
+#define EBC_CFG_EMC_DEFAULT PPC_REG_VAL(9, 0x1)
+#define EBC_CFG_PME_MASK PPC_REG_VAL(14, 0x1)
+#define EBC_CFG_PME_DISABLE PPC_REG_VAL(14, 0x0)
+#define EBC_CFG_PME_ENABLE PPC_REG_VAL(14, 0x1)
+#define EBC_CFG_PMT_MASK PPC_REG_VAL(19, 0x1F)
+#define EBC_CFG_PMT_ENCODE(n) PPC_REG_VAL(19, ((unsigned long)(n)) & 0x1F)
+#define EBC_CFG_PR_MASK PPC_REG_VAL(21, 0x3)
+#define EBC_CFG_PR_16 PPC_REG_VAL(21, 0x0)
+#define EBC_CFG_PR_32 PPC_REG_VAL(21, 0x1)
+#define EBC_CFG_PR_64 PPC_REG_VAL(21, 0x2)
+#define EBC_CFG_PR_128 PPC_REG_VAL(21, 0x3)
+
+/******************************************************************************
* SDRAM Controller
******************************************************************************/
/* values for memcfga register - indirect addressing of these regs */
--
1.5.4.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics
2008-05-15 21:23 [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics Grant Erickson
@ 2008-06-11 23:00 ` Wolfgang Denk
2008-06-11 23:10 ` Grant Erickson
0 siblings, 1 reply; 5+ messages in thread
From: Wolfgang Denk @ 2008-06-11 23:00 UTC (permalink / raw)
To: u-boot
In message <1210886606-12929-1-git-send-email-gerickson@nuovations.com> you wrote:
> Added preprocessor definitions for External Bus Controller (EBC)
> configuration, bank configuration and access parameter register fields
> along with a macro for defining them and verifying them against the
> data sheet or user's manual easier.
>
> Tested against AMCC "Haleakala".
>
> Signed-off-by: Grant Erickson <gerickson@nuovations.com>
Are these definitions being used anywhere?
I tend to drop this patch because it seems to be just dead code.
Stefan, do you agree?
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Fascinating, a totally parochial attitude.
-- Spock, "Metamorphosis", stardate 3219.8
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics
2008-06-11 23:00 ` Wolfgang Denk
@ 2008-06-11 23:10 ` Grant Erickson
2008-06-12 6:37 ` Wolfgang Denk
0 siblings, 1 reply; 5+ messages in thread
From: Grant Erickson @ 2008-06-11 23:10 UTC (permalink / raw)
To: u-boot
On 6/11/08 4:00 PM, Wolfgang Denk wrote:
> In message <1210886606-12929-1-git-send-email-gerickson@nuovations.com> you
> wrote:
>> Added preprocessor definitions for External Bus Controller (EBC)
>> configuration, bank configuration and access parameter register fields
>> along with a macro for defining them and verifying them against the
>> data sheet or user's manual easier.
>>
>> Tested against AMCC "Haleakala".
>>
>> Signed-off-by: Grant Erickson <gerickson@nuovations.com>
>
> Are these definitions being used anywhere?
>
> I tend to drop this patch because it seems to be just dead code.
> Stefan, do you agree?
>
>
> Best regards,
>
> Wolfgang Denk
Wolfgang,
These are actually now used in cpu/ppc4xx/start.S and are probably already
included in the latest 4xx pull from Stefan. So, this patch might be a no-op
at this point.
Regardless, while they are not used in include/configs/kilauea.h and
include/configs/makalu.h yet (but both could and should be) I have used them
in the include/config/<board>.h for the new boards I am supporting for a
client. They make it much easier to decode BxAP and BxCR settings than an
arbitrary 32-bit hex value.
Regards,
Grant
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics
2008-06-11 23:10 ` Grant Erickson
@ 2008-06-12 6:37 ` Wolfgang Denk
2008-06-12 9:58 ` Stefan Roese
0 siblings, 1 reply; 5+ messages in thread
From: Wolfgang Denk @ 2008-06-12 6:37 UTC (permalink / raw)
To: u-boot
In message <C475A96A.FBA7%gerickson@nuovations.com> you wrote:
>
> These are actually now used in cpu/ppc4xx/start.S and are probably already
> included in the latest 4xx pull from Stefan. So, this patch might be a no-op
> at this point.
A slightly different version of this seems to have benn pulled in
with your "ppc4xx: Enable Primordial Stack for 40x and Unify ECC
Handling" patch (c821b5f120be), but note that we have for example two
different implementations of EBC_BXCR_BAS_ENCODE in include/ppc405.h
and include/ppc440.h - the include/ppc405.h was changed with your
c821b5f120be commit, while the include/ppc440.h code is much older
(63153492 from 3 years ago).
Please check that this is as intended.
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
CONSUMER NOTICE: Because of the "Uncertainty Principle," It Is
Impossible for the Consumer to Find Out at the Same Time Both
Precisely Where This Product Is and How Fast It Is Moving.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics
2008-06-12 6:37 ` Wolfgang Denk
@ 2008-06-12 9:58 ` Stefan Roese
0 siblings, 0 replies; 5+ messages in thread
From: Stefan Roese @ 2008-06-12 9:58 UTC (permalink / raw)
To: u-boot
On Thursday 12 June 2008, Wolfgang Denk wrote:
> In message <C475A96A.FBA7%gerickson@nuovations.com> you wrote:
> > These are actually now used in cpu/ppc4xx/start.S and are probably
> > already included in the latest 4xx pull from Stefan. So, this patch might
> > be a no-op at this point.
>
> A slightly different version of this seems to have benn pulled in
> with your "ppc4xx: Enable Primordial Stack for 40x and Unify ECC
> Handling" patch (c821b5f120be), but note that we have for example two
> different implementations of EBC_BXCR_BAS_ENCODE in include/ppc405.h
> and include/ppc440.h - the include/ppc405.h was changed with your
> c821b5f120be commit, while the include/ppc440.h code is much older
> (63153492 from 3 years ago).
>
> Please check that this is as intended.
We should consolidate these defines into one version. No need to have them
defined multiple times, since the EBC IP core should be nearly identical on
405 and 440 systems. Perhaps somebody else (Grant?) will find the time to do
this soon. If not I'll add it to my list...
Thanks.
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 at denx.de
=====================================================================
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-06-12 9:58 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-15 21:23 [U-Boot-Users] [PATCH] Add PPC405 External Bus Controller (EBC) Register Field Mnemonics Grant Erickson
2008-06-11 23:00 ` Wolfgang Denk
2008-06-11 23:10 ` Grant Erickson
2008-06-12 6:37 ` Wolfgang Denk
2008-06-12 9:58 ` Stefan Roese
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox