I don't understand your problem.
You need a hardware engineer to design the hardware, and to check and make sure that all of the timing requirements of all of the new chips can be met by their design. It is VERY likely you'll have to reprogram the chip select decode "on the fly" when accessing different chips through it. This is possible as anything can be done in software. But not everything SHOULD be done.
Then you need a programmer (preferably also an engineer who understands hardware) to modify the code so it can address these peripherals. Then it will need a lot of new driver code to make those peripherals work, especially the Ethernet controller.
I don't know what sort of Ethernet controller you are going to select that you can operate over a simple data bus without DMA. You really need a new main board with a CPU chip that has built-in Ethernet. Re-reading your original post indicates you already have "CS4 ( Memory mapped Ethernet IO)", so I guess you already have a controller and code, and the purpose is to add a SECOND ethernet controller.
Your best choice for an "Ethernet controller" might be a completely separate microcontroller, like any of the Coldfire chips. The smallest one looks to be the MCF51CN128 with Ethernet and FlexBus. You would then need to connect the two CPUs together through a dual-port-RAM, like these:
Dual - Port SRAMs - Cypress
(I wrote the above before I realised you already seem to have an existing Ethernet controller and you have an interrupt available).
> Challenge we are facing is on firmware side and currently all chip select is done during boot up
So what? It doesn't have to be set up then. The firmware can easily be changed to set up the new peripherals. There's just new code to be written.
> along with modification in linker files
The one thing that shouldn't need to change much is the linker file. Everything else has to change, but I don't see what that should. If you have different "blocks" of memory defined in the linker file, then changing an address is as simple as changing the old address to the new address. What more would you want? I can't see how you could have used up the 4G address space. There has to be a spare Gig or so of address space in there you can program CS2 to decode, and have all the new peripherals show up there.
In case it helps at all I typed "address decoder hc131 example" into Google and the first match is this:
http://research.cs.tamu.edu/prism/lectures/mbsd/mbsd_l16.pdf
Rereading your posts it looks like:
I'm trying to work out your chip select and memory map from your posts, but there's not enough information. Could you please make a complete list like this:
Chip Select Address Size Function
CS0 ????? ????? Boot Memory/Flash
CS1 8M 128k Flash
CS2 5M 3M BBRAM (but there are 1M and 2M BBRAMs?)
CS3 4M 1M SRAM
CS4 ????? ?? Ethernet
CS5 10M-4k 1k Peripherals (CPLD UART etc)
RAMBAR ???? 8k Internal SRAM
MBAR ???? 1k Internal Peripherals
CPLD ???? ?? Peripherals decoded by CPLD
Is the CPLD driven from a Chip Select or does it separately decode the bus signals? If CS2 is sent to the expansion connector, does it also select BBRAM chips on the main board? Is there any selection logic to declare an address range within CS2's range that does not select any motherboard BBRAM chips? How are the 1M and 2M BBRAM chips selected? Are there any bus buffers between the CPU bus and the expansion connector? Does the current system have BBRAM chips on an expansion board, and you're intending to replace that board perhaps?
Tom