Configure tweaks for SystemACE without CONFIG_XILINX_OCP
I'm working to clean up my integration of our JSE board, which is based on PPC405GPr, and has a Xilinx SystemACE as a cf interface. I find that the block/drivers/xilinx_systemace/adapter driver needs the arch/ppc/platforms/xilinx_ocp/xilinx_ocp.o file compiled, but definitely does *NOT* want the CONFIG_XILINX_OCP config defined. If the latter is defined, then some changes in the ppc405_pci.c source file are compiled in that are not right for ppc405GPr devices.
In order to get CONFIG_XILINX_SYSACE to define, the unmodified source requries that CONFIG_XILINX_OCP is defined. I created this patch to alloc SYSACE on by board:
@@ -41,7 +41,7 @@
dep_tristate 'Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)'CONFIG_BLK_DEV_UMEM $CONFIG_PCI $CONFIG_EXPERIMENTAL
dep_tristate 'Promise SATA SX8 (carmel) support' CONFIG_BLK_DEV_CARMEL $CONFIG_PCI
-if [ "$CONFIG_XILINX_OCP" = "y" ]; then
+if [ "$CONFIG_XILINX_OCP" = "y" || "$CONFIG_JSE" = "y" ]; then
tristate 'Xilinx on-chip System ACE' CONFIG_XILINX_SYSACE
fi
Functional, but brutish. Better would be for the ifdefs on the CONFIG_XILINX_OCP in arch/ppc/kernel/ppc405_pci.o go away. Who is the maintainer for this bit (Andrei?) and would in be OK to further qualify this code so that the CONFIG_XILINX_OCP is not enough to make a complete mess for non-virtex2pro folks? Heck, one idea would be to change ppc405_pci.c:135 from:
#ifdef CONFIG_XILINX_OCP
to the more complete test:
#if DEFINED(CONFIG_XILINX_OCP) && defined(CONFIG_VIRTEX_II_PRO)
Please?
--
Steve Williams "The woods are lovely, dark and deep. steve at XXXXXXXXXX But I have promises to keep, http://www.XXXXXXXXXX and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep."
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Quoted 3 lines · Stephen Williams 612dlag102-at-sneakemail.com |PPC Linux Embedded| wrote:
In order to get
CONFIG_XILINX_SYSACEto define, the unmodified source requries thatCONFIG_XILINX_OCPis defined. I created this patch to alloc SYSACE on by board:
I've made a patch that demonstrates what I have in mind, and should work in general. With this patch, a configuration can enable CONFIG_XILINX_OCP and enable CONFIG_XILINX_SYSACE and not have ppc405gpr pci setup or PIC setup messed with.
Patch is relative the ppc.bkbits.net linuxppc-2.4 tree. I'm guessing Andrei is the authority for this aspect.
--
Steve Williams "The woods are lovely, dark and deep. steve at XXXXXXXXXX But I have promises to keep, http://www.XXXXXXXXXX and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep." # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/06/10 18:45:08-07:00 [email protected] # Condition Xilinx on-chip processor config with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/ppc405_pci.c # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/Makefile # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # BitKeeper/etc/ignore # 2004/06/10 18:45:06-07:00 [email protected] +4 -0 # Added arch/ppc/boot/images/uImage arch/ppc/boot/images/vmlinux.UBoot arch/ppc/boot/images/vmlinux.gz arch/ppc/kernel/ppc_defs.h to the ignore list # diff -Nru a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile --- a/arch/ppc/kernel/Makefile 2004-06-10 19:57:40 -07:00 +++ b/arch/ppc/kernel/Makefile 2004-06-10 19:57:40 -07:00 @@ -61,7 +61,7 @@ obj-$(CONFIG_PPC_OCP) += ocp.o obj-$(CONFIG_40x) += ppc4xx_setup.o obj-$(CONFIG_4xx) += todc_time.o idle_4xx.o -ifeq ($(CONFIG_XILINX_OCP),y) +ifeq ($(CONFIG_XILINX_OCP)$(CONFIG_VIRTEX_II_PRO),yy) obj-$(CONFIG_40x) += xilinx_pic.o else obj-$(CONFIG_40x) += ppc4xx_pic.o diff -Nru a/arch/ppc/kernel/ppc405_pci.c b/arch/ppc/kernel/ppc405_pci.c --- a/arch/ppc/kernel/ppc405_pci.c 2004-06-10 19:57:40 -07:00 +++ b/arch/ppc/kernel/ppc405_pci.c 2004-06-10 19:57:40 -07:00 @@ -132,7 +132,7 @@ setup_indirect_pci(hose_a, PPC405_PCI_CONFIG_ADDR, PPC405_PCI_CONFIG_DATA);
-#ifdef CONFIG_XILINX_OCP
+#if defined(CONFIG_XILINX_OCP) && defined(CONFIG_VIRTEX_II_PRO)
/* Eliminate "unused variable" warning for pcip. Optimizer removes. */ pcip = NULL;
new_pmm_min = PPC405_PCI_LOWER_MEM;
The patch is OK for me.
Thanks,
Andrei
Quoted 62 lines · Stephen Williams
Quoted 3 lines · Stephen Williams 612dlag102-at-sneakemail.com |PPC Linux Embedded| wrote:
In order to get
CONFIG_XILINX_SYSACEto define, the unmodified source requries thatCONFIG_XILINX_OCPis defined. I created this patch to alloc SYSACE on by board:I've made a patch that demonstrates what I have in mind, and should work in general. With this patch, a configuration can enable
CONFIG_XILINX_OCPand enableCONFIG_XILINX_SYSACEand not have ppc405gpr pci setup or PIC setup messed with.Patch is relative the ppc.bkbits.net linuxppc-2.4 tree. I'm guessing Andrei is the authority for this aspect.
--
Steve Williams "The woods are lovely, dark and deep. steve at XXXXXXXXXX But I have promises to keep, http://www.XXXXXXXXXX and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep."------------------------------------------------------------------------
# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet# 2004/06/10 18:45:08-07:00 [email protected] # Condition Xilinx on-chip processor config with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/ppc405_pci.c # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/Makefile # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # BitKeeper/etc/ignore # 2004/06/10 18:45:06-07:00 [email protected] +4 -0 # Added arch/ppc/boot/images/uImage arch/ppc/boot/images/vmlinux.UBoot arch/ppc/boot/images/vmlinux.gz arch/ppc/kernel/ppc_defs.h to the ignore list # diff -Nru a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefilearch/ppc/kernel/Makefile +1
-1@@ -61,7 +61,7 @@ obj-$(CONFIG_PPC_OCP) += ocp.o obj-$(CONFIG_40x) += ppc4xx_setup.o obj-$(CONFIG_4xx) += todc_time.o idle_4xx.o -ifeq ($(CONFIG_XILINX_OCP),y) +ifeq ($(CONFIG_XILINX_OCP)$(CONFIG_VIRTEX_II_PRO),yy) obj-$(CONFIG_40x) += xilinx_pic.o else obj-$(CONFIG_40x) += ppc4xx_pic.odiff -Nru
a/arch/ppc/kernel/ppc405_pci.cb/arch/ppc/kernel/ppc405_pci.c
arch/ppc/kernel/ppc405_pci.c line 138
Quoted 8 lines
arch/ppc/kernel/ppc405_pci.c +1
-1@@ -132,7 +132,7 @@setup_indirect_pci (hose_a,PPC405_PCI_CONFIG_ADDR ,PPC405_PCI_CONFIG_DATA ); -#ifdef CONFIG_XILINX_OCP +#if defined(CONFIG_XILINX_OCP ) && defined(CONFIG_VIRTEX_II_PRO )/* Eliminate "unused variable" warning for pcip. Optimizer removes. */ pcip =NULL ; new_pmm_min =PPC405_PCI_LOWER_MEM ;
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 13 lines · Travis B. Sawyer tsawyer-at-sandburst.com |PPC Linux Embedded| wrote:
Steve:
I'm working on getting sysace to come up on our custom hw.
Where did you put the definitions that the driver code needs, eg:
#ifdefined(CONFIG_XILINX_SYSACE)
#defineXPAR_XSYSACE_NUM_INSTANCES1
#defineXPAR_SYSACE_0_BASEADDR0xe8100000
#defineXPAR_SYSACE_0_HIGHADDR0xe8100FFF
#defineXPAR_SYSACE_0_DEVICE_ID160
#defineXPAR_INTC_0_SYSACE_0_VEC_ID51 /* UIC1:20, IRQ9 */
#endif
Quoted 5 lines
Am I way off base with these? I dropped them in my board specific header file... Or, should I be using:
#define
XPAR_SYSACE_0_BASEADDR0x0000000148100000ULL
#defineXPAR_SYSACE_0_HIGHADDR0x0000000148100FFFULL
First, you'll need the attached sysace-without-virtexii patch, which has not been pushed to the linuxppc-2.4 tree yet. This fixes some V2PRO dependencies when XILINX_OCP is activated.
I started by editing the file platforms/xilinx_ocp/xparameters.h:
===== arch/ppc/platforms/xilinx_ocp/xparameters.h 1.1 vs edited =====
arch/ppc/platforms/xilinx_ocp/xparameters.h +4 -0
@@ -16,3 +16,7 @@#if defined(CONFIG_XILINX_ML300 )#include "xparameters_ml300.h" #endif + +#if defined(CONFIG_JSE ) +#include "xparameters_jse.h" +#endif
The CONFIG_JSE is for my board. I then added the xparameters_jse.h file next to the xparameters_ml300.h that has the pertinent values for my system. I've attached mine as a working example.
I also edited the arch/ppc/config.in so that the right defines are enabled:
===== arch/ppc/config.in 1.69 vs edited =====
arch/ppc/config.in +6 -0
@@ -79,6 +79,7 @@ CPCI405 CONFIG_CPCI405 \ EP405/EP405PC CONFIG_EP405 \ 405EP-eval CONFIG_EVB405EP \ + JSE CONFIG_JSE \ Oak CONFIG_OAK \ Rainier CONFIG_RAINIER \ Redwood-4 CONFIG_REDWOOD_4 \
@@ -321,6 +322,11 @@ define_bool CONFIG_405GPR y define_bool CONFIG_BIOS_FIXUP y define_bool CONFIG_IBM_OPENBIOS y + fi + + if [ "$CONFIG_JSE" = "y" ]; then + define_bool CONFIG_405GPR y + define_bool CONFIG_XILINX_OCP y fi if [ "$CONFIG_EBONY" = "y" ]; then
This activates CONFIG_XILINX_OCP when I config the JSE board, and that allows the XILINX_SYSACE to be selected. From here, make sure CONFIG_XILINX_SYSACE=y in your .config and you are set.
--
Steve Williams "The woods are lovely, dark and deep. steve at XXXXXXXXXX But I have promises to keep, http://www.XXXXXXXXXX and lines to code before I sleep, http://www.picturel.com And lines to code before I sleep." # This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/06/10 18:45:08-07:00 [email protected] # Condition Xilinx on-chip processor config with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/ppc405_pci.c # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # arch/ppc/kernel/Makefile # 2004/06/10 18:45:06-07:00 [email protected] +1 -1 # Condition Xilinx on-chip processor support with # CONFIG_VIRTEX_II_PRO # # BitKeeper/etc/ignore # 2004/06/10 18:45:06-07:00 [email protected] +4 -0 # Added arch/ppc/boot/images/uImage arch/ppc/boot/images/vmlinux.UBoot arch/ppc/boot/images/vmlinux.gz arch/ppc/kernel/ppc_defs.h to the ignore list # diff -Nru a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile --- a/arch/ppc/kernel/Makefile 2004-06-10 19:57:40 -07:00 +++ b/arch/ppc/kernel/Makefile 2004-06-10 19:57:40 -07:00 @@ -61,7 +61,7 @@ obj-$(CONFIG_PPC_OCP) += ocp.o obj-$(CONFIG_40x) += ppc4xx_setup.o obj-$(CONFIG_4xx) += todc_time.o idle_4xx.o -ifeq ($(CONFIG_XILINX_OCP),y) +ifeq ($(CONFIG_XILINX_OCP)$(CONFIG_VIRTEX_II_PRO),yy) obj-$(CONFIG_40x) += xilinx_pic.o else obj-$(CONFIG_40x) += ppc4xx_pic.o diff -Nru a/arch/ppc/kernel/ppc405_pci.c b/arch/ppc/kernel/ppc405_pci.c --- a/arch/ppc/kernel/ppc405_pci.c 2004-06-10 19:57:40 -07:00 +++ b/arch/ppc/kernel/ppc405_pci.c 2004-06-10 19:57:40 -07:00 @@ -132,7 +132,7 @@ setup_indirect_pci(hose_a, PPC405_PCI_CONFIG_ADDR, PPC405_PCI_CONFIG_DATA);
-#ifdef CONFIG_XILINX_OCP
+#if defined(CONFIG_XILINX_OCP) && defined(CONFIG_VIRTEX_II_PRO)
/* Eliminate "unused variable" warning for pcip. Optimizer removes. */ pcip = NULL;
new_pmm_min = PPC405_PCI_LOWER_MEM;
/* The SystemACE chip is on CS1#, mapped here. */
#define XPAR_SYSACE_0_BASEADDR 0xf0000000 #define XPAR_SYSACE_0_HIGHADDR 0xf00001FF
/* On the JSE board, the SystemACE chip is wired to IRQ 29 */
#define XPAR_INTC_0_SYSACE_0_VEC_ID 2
#define XPAR_XSYSACE_NUM_INSTANCES 1
#define XPAR_OPB_SYSACE_0_MEM_WIDTH 8
#define XPAR_OPB_SYSACE_0_DEVICE_ID 0
#define XPAR_OPB_SYSACE_0_BASEADDR XPAR_SYSACE_0_BASEADDR