* Re: include/asm-ppc/platforms/ @ 2001-11-30 13:30 Ralph Blach 2001-11-30 22:08 ` include/asm-ppc/platforms/ Paul Mackerras 0 siblings, 1 reply; 34+ messages in thread From: Ralph Blach @ 2001-11-30 13:30 UTC (permalink / raw) To: linuxppc-dev Guys, I think we are missing the boat, on the include/asm-ppc/platforms. This does not take into account the embedded world at all. The correct form of the file should be asm-ppc/core/chip/revsion/board This is because the IBM Core Connect and the Motorola OCEAN internal interconnect systems. These allow for a 405/book E/Mot processor cores to be customized around a large set of customized on chip perphials. It will make the availabily of a large number different customized chips with different on chip perphials available. Thats my justification for core/chip Now for revsion/intersections This is a little more difficult. Book E is now a reality. The Mot E500 and the IBM 440 have been announced and are book E processors. A reality of book E not discussed in the forum here is the expansion op codes. This means that different book E processors will have different expansion op codes. The Mot book E has an isel instruction and the IBM book 440 has deterine leftmost zero byte in a string. (See http://www-3.ibm.com/chips/techlib/techlib.nsf/products/PowerPC_440GP_Embedded_Processor Read Writing High performance Assembly functions for the PowerPC 440 Core and http://e-www.motorola.com/news_center/press_releases/PR010612C.html for info on these) This is my justification for Revision, because different Chip Revision will Have differnet Expansion instruction sets. The following statements have HUGE implecation on Libraries, because the loader will have to load correct library according to Chip Revision. Life is going to be very interesting. Chip ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-30 13:30 include/asm-ppc/platforms/ Ralph Blach @ 2001-11-30 22:08 ` Paul Mackerras 2001-11-30 23:22 ` include/asm-ppc/platforms/ Frank Rowand 2001-12-01 0:19 ` include/asm-ppc/platforms/ Armin Kuster 0 siblings, 2 replies; 34+ messages in thread From: Paul Mackerras @ 2001-11-30 22:08 UTC (permalink / raw) To: Ralph Blach; +Cc: linuxppc-dev Ralph Blach writes: > This does not take into account the embedded world at all. > The correct form of the file should be asm-ppc/core/chip/revsion/board > > This is because the IBM Core Connect and the Motorola OCEAN internal > interconnect systems. > > These allow for a 405/book E/Mot processor cores to be customized around a > large set of > customized on chip perphials. It will make the availabily of a large > number different > customized chips with different on chip perphials available. > > Thats my justification for core/chip How is the kernel supposed to know what on-chip peripherals exist? By the CPU version/revision numbers? Are you *always* going to change the cpu revision number when you change the set of on-chip peripherals? Or will the kernel have to "just know" what on-chip peripherals there are? The scenario you outline leads me to think that we should flatten the structure, rather than making a very deep hierarchical structure as you suggest. What I mean is that we should structure things so that we have a collection of device drivers for various on-chip devices, a collection of PCI host bridge drivers, a collection of interrupt controller drivers, etc. And these drivers should not make any assumptions about addresses etc. Then for each platform we have a device tree, or some similar kind of database, that tells us what devices are where and how they are connected. We could consider using such a database at config time as well as at run-time. The database could be supplied statically by the board support package or it could be supplied at runtime by the boot loader. Basically I want the knowledge that "because this is a 405gp chip we must have an XYZ ethernet controller at address FOO using interrupt N" to be concentrated in one place, not spread out through the code. Then when IBM brings out a 405gp-A that has two XYZ's (neither of which are at the same address as in the 405gp) there is just one place that we have to change. > This is my justification for Revision, because different Chip Revision will > Have differnet Expansion > instruction sets. The following statements have HUGE implecation on > Libraries, because the loader will have to load correct library > according to Chip Revision. It's more a problem for the distributions - they will need to make sure the correct libraries get installed. My guess is that most libraries will end up not using the extra instructions. Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-30 22:08 ` include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-30 23:22 ` Frank Rowand 2001-12-01 3:31 ` include/asm-ppc/platforms/ Dan Malek 2001-12-01 0:19 ` include/asm-ppc/platforms/ Armin Kuster 1 sibling, 1 reply; 34+ messages in thread From: Frank Rowand @ 2001-11-30 23:22 UTC (permalink / raw) To: paulus; +Cc: Ralph Blach, linuxppc-dev Paul Mackerras wrote: > > Ralph Blach writes: > > > This does not take into account the embedded world at all. > > The correct form of the file should be asm-ppc/core/chip/revsion/board > > > > This is because the IBM Core Connect and the Motorola OCEAN internal > > interconnect systems. > > > > These allow for a 405/book E/Mot processor cores to be customized around a > > large set of > > customized on chip perphials. It will make the availabily of a large > > number different > > customized chips with different on chip perphials available. > > > > Thats my justification for core/chip > > How is the kernel supposed to know what on-chip peripherals exist? > By the CPU version/revision numbers? Are you *always* going to change > the cpu revision number when you change the set of on-chip > peripherals? Or will the kernel have to "just know" what on-chip > peripherals there are? I'm not sure why Ralph added revision into the mix. The chip should be sufficient to define the set of on-chip peripherals. Some concrete examples of core / chip / board are: 403 403GCX 405 405cr 405gp walnut cpci405 ep405 stb03xxx redwood-4 NPe405H NPe405L > The scenario you outline leads me to think that we should flatten the > structure, rather than making a very deep hierarchical structure as > you suggest. What I mean is that we should structure things so that > we have a collection of device drivers for various on-chip devices, a > collection of PCI host bridge drivers, a collection of interrupt > controller drivers, etc. And these drivers should not make any > assumptions about addresses etc. (I use the word "processor" as a synonym for "chip" in the following.) Yes, that was the direction I was headed in with my original 4xx work. Implementation didn't always match the goals, but that's where I was headed. Many of the drivers still need some work to be properly generalized (eg ethernet driver able to handle multiple EMACS on a single processor, i2c driver able to handle multiple i2c busses [which was done for the redwood-4 but doesn't seem to have shown up in the tree yet]). The IBM "Blue Logic" device cells tend to be compatible or consistent versions so far (empirical observation) and IBM has told me that I should expect the DCR register block for a device to be consistent accross processors. So a foobar controller may have a control register at offset 0 within the block, an interrupt status register at offset 4 within the block, and an error status register at offset 8 within the block. The driver simply has to know what the base address of the block is for a given processor. There are a few devices that have not been consistent from processor to processor. GPIO seems especially processor specific. The interrupt controller is mostly the same, but may or may not have a cascade level. > Then for each platform we have a device tree, or some similar kind of > database, that tells us what devices are where and how they are > connected. We could consider using such a database at config time as > well as at run-time. The database could be supplied statically by the > board support package or it could be supplied at runtime by the boot > loader. The original 4xx design was to have the block of DCR registers for a device defined in a single place (could be the device's header file or a more central header file, whatever is preferred). Then the address of the base of each block was defined for each target, where target could be either processor or processor/board, depending on which defined the address. That is the intent of the DCRN_*_BASE #defines in headers like include/asm-ppc/platforms/ibm405gp.h. Unfortunately in the merge from my tree to the ppc tree the definition of the block of DCR registers also got replicated into the same header that contains the address of the block. That should be cleaned up - each block should be defined just once (except maybe those like GPIO that vary significantly with each processor). One nice thing about the way the block of DCR registers are defined is that if the constant providing the base address of the block is not defined, then the DCRs in the block are defined to be zero and the mfdcr() and mtdcr() macros will detect the zero value and not attempt to access a non-existent DCR. mfdcr() returns zero in this case and mtdcr() does nothing. This means that, if used carefully, there are many cases where there is no need to use #ifdefs to decide whether to access a DCR or not. > Basically I want the knowledge that "because this is a 405gp chip we > must have an XYZ ethernet controller at address FOO using interrupt > N" to be concentrated in one place, not spread out through the > code. Then when IBM brings out a 405gp-A that has two XYZ's (neither > of which are at the same address as in the 405gp) there is just one > place that we have to change. > > > This is my justification for Revision, because different Chip Revision will > > Have differnet Expansion > > instruction sets. The following statements have HUGE implecation on > > Libraries, because the loader will have to load correct library > > according to Chip Revision. Oh, this is where you explain revision. Will instruction set really change with revision, or with processor name? > It's more a problem for the distributions - they will need to make > sure the correct libraries get installed. My guess is that most > libraries will end up not using the extra instructions. -Frank -- Frank Rowand <frank_rowand@mvista.com> MontaVista Software, Inc ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-30 23:22 ` include/asm-ppc/platforms/ Frank Rowand @ 2001-12-01 3:31 ` Dan Malek 2001-12-01 18:19 ` include/asm-ppc/platforms/ Frank Rowand 0 siblings, 1 reply; 34+ messages in thread From: Dan Malek @ 2001-12-01 3:31 UTC (permalink / raw) To: frowand; +Cc: paulus, Ralph Blach, linuxppc-dev Frank Rowand wrote: > ....Some concrete > examples of core / chip / board are: > > 403 > 403GCX > 405 > 405cr > 405gp > walnut > cpci405 > ep405 > stb03xxx > redwood-4 > NPe405H > NPe405L I think the 4xx has always had this backward from other PowerPC platform definiitons. While we should define processor cores, their peripherals, and boards, the least common denominator is the processor core. With the execption of few boards (the Sandpoint comes to mind), simply configuring a board type will allow you to know which processor package is used and further the processor core. If I say "Walnut" configuration, I already know everything else, I don't need to be asked all of the other configuration questions. Our files should also follow this structure. The Walnut configuration file should include 405GP (which defines peripherals) which should then include the processor core definitions (if necessary). This way, when a new processor package with a different peripheral configuration is added, all you need to do is ensure the proper lower level core file is included, you don't have to update all of the board configuration files with stuff they don't care about. If, in this example, the Walnut had different processor types available, it would make sense within that configuration to ask the processor type, but no one else would (nor should) care. Again, the file structure would follow, with the Walnut board configuration including the appropriately configured processor package. Thanks. -- Dan ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-01 3:31 ` include/asm-ppc/platforms/ Dan Malek @ 2001-12-01 18:19 ` Frank Rowand 2001-12-01 22:22 ` include/asm-ppc/platforms/ Dan Malek 0 siblings, 1 reply; 34+ messages in thread From: Frank Rowand @ 2001-12-01 18:19 UTC (permalink / raw) To: Dan Malek; +Cc: frowand, paulus, Ralph Blach, linuxppc-dev Dan Malek wrote: > > Frank Rowand wrote: > > > ....Some concrete > > examples of core / chip / board are: > > > > 403 > > 403GCX > > 405 > > 405cr > > 405gp > > walnut > > cpci405 > > ep405 > > stb03xxx > > redwood-4 > > NPe405H > > NPe405L > > I think the 4xx has always had this backward from other PowerPC platform > definiitons. While we should define processor cores, their peripherals, > and boards, the least common denominator is the processor core. With the execption > of few boards (the Sandpoint comes to mind), simply configuring a board > type will allow you to know which processor package is used and further > the processor core. If I say "Walnut" configuration, I already know everything > else, I don't need to be asked all of the other configuration questions. > Our files should also follow this structure. The Walnut configuration file > should include 405GP (which defines peripherals) which should then include > the processor core definitions (if necessary). This way, when a new processor > package with a different peripheral configuration is added, all you need to > do is ensure the proper lower level core file is included, you don't have > to update all of the board configuration files with stuff they don't care about. > > If, in this example, the Walnut had different processor types available, it > would make sense within that configuration to ask the processor type, but no > one else would (nor should) care. Again, the file structure would follow, > with the Walnut board configuration including the appropriately configured > processor package. > > Thanks. > > -- Dan If I understand correctly, you are talking only about the configuration structure, not the header file structure -- so a different topic than what this thread has been. Please correct me if you are also talking about header file structure. arch/ppc/config.in has already been changed to match what you propose. -Frank -- Frank Rowand <frank_rowand@mvista.com> MontaVista Software, Inc ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-01 18:19 ` include/asm-ppc/platforms/ Frank Rowand @ 2001-12-01 22:22 ` Dan Malek 2001-12-01 22:41 ` include/asm-ppc/platforms/ Tom Rini 0 siblings, 1 reply; 34+ messages in thread From: Dan Malek @ 2001-12-01 22:22 UTC (permalink / raw) To: frowand; +Cc: paulus, Ralph Blach, linuxppc-dev Frank Rowand wrote: > If I understand correctly, you are talking only about the configuration > structure, not the header file structure -- so a different topic than > what this thread has been. I'm talking about both. Yes, I know the configuration has been mostly changed, but today the ibm4xx.h file includes ibm405gp.h which then includes walnut.h. This is totally backward. The ibm4xx.h file should include walnut.h, which should include ibm405gp.h, which should include a core or peripheral definition file if necessary. The ibm4xx.h file (and the mpc8xx.h file) should be replaced by an appropriate platform.h file which would remove all of the ifdefs we currently have in the include lists of the C files and some of the problems with multiple definitions these ifdefs are in place to solve. Thanks. -- Dan ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-01 22:22 ` include/asm-ppc/platforms/ Dan Malek @ 2001-12-01 22:41 ` Tom Rini 0 siblings, 0 replies; 34+ messages in thread From: Tom Rini @ 2001-12-01 22:41 UTC (permalink / raw) To: Dan Malek; +Cc: frowand, paulus, Ralph Blach, linuxppc-dev On Sat, Dec 01, 2001 at 05:22:47PM -0500, Dan Malek wrote: > > Frank Rowand wrote: > > > > >If I understand correctly, you are talking only about the configuration > >structure, not the header file structure -- so a different topic than > >what this thread has been. > > I'm talking about both. Yes, I know the configuration has been mostly > changed, but today the ibm4xx.h file includes ibm405gp.h which then > includes walnut.h. This is totally backward. It used to be like that. It's now ibm4xx.h -> board.h -> proc.h > The ibm4xx.h file (and the mpc8xx.h file) should be replaced by an > appropriate platform.h file which would remove all of the ifdefs we > currently have in the include lists of the C files and some of the > problems with multiple definitions these ifdefs are in place to solve. Maybe we can do this in 2.5. We've already got the bits around for making symlinks from CONFIG_FOO -> foo.h, and an empty foo.h if it doesn't exist. So we could do CONFIG_8xx -> symlink include/asm-ppc/platform to mpc-8xx, and so on.. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-30 22:08 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-30 23:22 ` include/asm-ppc/platforms/ Frank Rowand @ 2001-12-01 0:19 ` Armin Kuster 1 sibling, 0 replies; 34+ messages in thread From: Armin Kuster @ 2001-12-01 0:19 UTC (permalink / raw) To: paulus; +Cc: Ralph Blach, linuxppc-dev Paul Mackerras wrote: > > Basically I want the knowledge that "because this is a 405gp chip we > must have an XYZ ethernet controller at address FOO using interrupt > N" to be concentrated in one place, not spread out through the > code. Then when IBM brings out a 405gp-A that has two XYZ's (neither > of which are at the same address as in the 405gp) there is just one > place that we have to change. > Exactly. Actual its an issue for the NP405H & L. I will outline how this can be addressed soon + all the other 4xx internal pripherials. > Paul. > --armin ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* include/asm-ppc/platforms/ @ 2001-11-27 11:32 Paul Mackerras 2001-11-27 15:22 ` include/asm-ppc/platforms/ Tom Rini 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek 0 siblings, 2 replies; 34+ messages in thread From: Paul Mackerras @ 2001-11-27 11:32 UTC (permalink / raw) To: linuxppc-dev I want to create a new directory, include/asm-ppc/platforms, for those files which mainly contain configuration information for specific platforms, such as address and IRQ assignments for on-board devices. The files that I want to move into include/asm-ppc/platforms are: bseip.h ibm405gp.h mvme5100_serial.h rpxclassic.h ccm.h ibmnp405.h oak.h rpxhiox.h ceder.h ibmstbx.h pcu_e.h rpxlite.h cpci405.h ip860.h powerpmc250.h sandpoint_serial.h ep405.h ivms8.h powerpmc250_serial.h spd8xx.h est8260.h lantec.h ppc4xx_serial.h spruce.h ev64260_serial.h lopec_serial.h prpmc750.h spruce_serial.h fads.h lwmon.h prpmc750_serial.h tqm8260.h gemini.h mbx.h prpmc800.h tqm8xx.h gemini_serial.h mcpn765_serial.h prpmc800_serial.h walnut.h hermes.h mvme5100.h redwood.h zx4500_serial.h This requires corresponding minor changes to 14 files in arch/ppc/platforms and 5 files in include/asm-ppc, plus some changes in the files that move to include/asm-ppc/platforms. Does anyone have any comments or objections? Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 11:32 include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-27 15:22 ` Tom Rini 2001-11-27 20:06 ` include/asm-ppc/platforms/ Roman Zippel 2001-11-28 2:35 ` include/asm-ppc/platforms/ Keith Owens 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek 1 sibling, 2 replies; 34+ messages in thread From: Tom Rini @ 2001-11-27 15:22 UTC (permalink / raw) To: Paul Mackerras; +Cc: linuxppc-dev, Keith Owens On Tue, Nov 27, 2001 at 10:32:40PM +1100, Paul Mackerras wrote: > I want to create a new directory, include/asm-ppc/platforms, for those > files which mainly contain configuration information for specific > platforms, such as address and IRQ assignments for on-board devices. > The files that I want to move into include/asm-ppc/platforms are: [snip] What about: amgia*.h ans-lcd.h backlight.h heathrow.h keylargo.h pmac_feature.h prep_nvram.h gg2.h uninorth.h and maybe ppc405_dma.h as well. I think I might have missed a few pmac-specific platform headers in there... > This requires corresponding minor changes to 14 files in > arch/ppc/platforms and 5 files in include/asm-ppc, plus some changes > in the files that move to include/asm-ppc/platforms. > > Does anyone have any comments or objections? Like I said on IRC, I don't think this really helps much. I will conceed that in _devel we have more .h files in include/asm-$(ARCH) than anyone else, but if we're going to do some organization, lets do more than throwing lots of files in one directory, which could keep on growing... I sort of like the include/asm-ppc/platforms symlink idea, but I forget if kbuild-2.5 works well with this or if it is/was painful. Keith? Barring that, maybe make processor, platform and peripheral dirs? -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 15:22 ` include/asm-ppc/platforms/ Tom Rini @ 2001-11-27 20:06 ` Roman Zippel 2001-11-28 2:35 ` include/asm-ppc/platforms/ Keith Owens 1 sibling, 0 replies; 34+ messages in thread From: Roman Zippel @ 2001-11-27 20:06 UTC (permalink / raw) To: Tom Rini; +Cc: Paul Mackerras, linuxppc-dev, Keith Owens Hi, Tom Rini wrote: > What about: > amgia*.h ans-lcd.h backlight.h heathrow.h keylargo.h pmac_feature.h > prep_nvram.h gg2.h uninorth.h and maybe ppc405_dma.h as well. I think I > might have missed a few pmac-specific platform headers in there... Be careful with amiga*.h, there are included by several drivers, which also have to continue to work under m68k. bye, Roman ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 15:22 ` include/asm-ppc/platforms/ Tom Rini 2001-11-27 20:06 ` include/asm-ppc/platforms/ Roman Zippel @ 2001-11-28 2:35 ` Keith Owens 1 sibling, 0 replies; 34+ messages in thread From: Keith Owens @ 2001-11-28 2:35 UTC (permalink / raw) To: Tom Rini; +Cc: Paul Mackerras, linuxppc-dev On Tue, 27 Nov 2001 08:22:44 -0700, Tom Rini <trini@kernel.crashing.org> wrote: >I sort of like the include/asm-ppc/platforms symlink idea, but I forget >if kbuild-2.5 works well with this or if it is/was painful. Keith? It is only painful it you want to generate files in that directory at compile time, you have to jump through hoops to prevent the files being written to the source tree when source and object are seperate directories. Symlinks for read only files are not a problem. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 11:32 include/asm-ppc/platforms/ Paul Mackerras 2001-11-27 15:22 ` include/asm-ppc/platforms/ Tom Rini @ 2001-12-27 14:59 ` Dan Malek 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter ` (2 more replies) 1 sibling, 3 replies; 34+ messages in thread From: Dan Malek @ 2001-12-27 14:59 UTC (permalink / raw) To: paulus; +Cc: linuxppc-dev Paul Mackerras wrote: > Does anyone have any comments or objections? That's a pretty good idea, and I have another one. Name the directory include/asm-ppc/ppc-platforms or something, then have a symbolic link include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> That way we can just #include <platform.h> instead of having lots of ifdefs in upper level files to determine which one is needed. If we are moving files around, let's have some effect on actually making it easier to use them, too. Thanks. -- Dan ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek @ 2001-11-27 12:00 ` Matt Porter 2001-11-27 15:18 ` include/asm-ppc/platforms/ Geert Uytterhoeven 2001-12-27 15:18 ` include/asm-ppc/platforms/ Dan Malek 2001-11-27 23:44 ` include/asm-ppc/platforms/ Wolfgang Denk 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras 2 siblings, 2 replies; 34+ messages in thread From: Matt Porter @ 2001-11-27 12:00 UTC (permalink / raw) To: Dan Malek; +Cc: paulus, linuxppc-dev On Thu, Dec 27, 2001 at 09:59:59AM -0500, Dan Malek wrote: > > Paul Mackerras wrote: > > > > Does anyone have any comments or objections? > > That's a pretty good idea, and I have another one. Name the > directory include/asm-ppc/ppc-platforms or something, then > have a symbolic link > include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> > > That way we can just #include <platform.h> instead of having lots > of ifdefs in upper level files to determine which one is needed. If > we are moving files around, let's have some effect on actually making > it easier to use them, too. Yes, this is similar to what has worked well in the arm tree. -- Matt Porter MontaVista Software, INc. mporter@mvista.com ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter @ 2001-11-27 15:18 ` Geert Uytterhoeven 2001-12-27 15:18 ` include/asm-ppc/platforms/ Dan Malek 1 sibling, 0 replies; 34+ messages in thread From: Geert Uytterhoeven @ 2001-11-27 15:18 UTC (permalink / raw) To: Matt Porter; +Cc: Dan Malek, Paul Mackerras, Linux/PPC Development On Tue, 27 Nov 2001, Matt Porter wrote: > On Thu, Dec 27, 2001 at 09:59:59AM -0500, Dan Malek wrote: > > Paul Mackerras wrote: > > > Does anyone have any comments or objections? > > > > That's a pretty good idea, and I have another one. Name the > > directory include/asm-ppc/ppc-platforms or something, then > > have a symbolic link > > include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> > > > > That way we can just #include <platform.h> instead of having lots > > of ifdefs in upper level files to determine which one is needed. If > > we are moving files around, let's have some effect on actually making > > it easier to use them, too. > > Yes, this is similar to what has worked well in the arm tree. Note that ARM has include/asm-arm/arch-$(PLATFORM)/, i.e. a whole directory with platform-specific files, not a single header file. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter 2001-11-27 15:18 ` include/asm-ppc/platforms/ Geert Uytterhoeven @ 2001-12-27 15:18 ` Dan Malek 1 sibling, 0 replies; 34+ messages in thread From: Dan Malek @ 2001-12-27 15:18 UTC (permalink / raw) To: Matt Porter; +Cc: paulus, linuxppc-dev >> have a symbolic link >> include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> Oooops. I meant 'include/asm/platform.h'....... -- Dan ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter @ 2001-11-27 23:44 ` Wolfgang Denk 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras 2 siblings, 0 replies; 34+ messages in thread From: Wolfgang Denk @ 2001-11-27 23:44 UTC (permalink / raw) To: Dan Malek; +Cc: paulus, linuxppc-dev In message <3C2B376F.9070508@embeddededge.com> you wrote: > > That's a pretty good idea, and I have another one. Name the > directory include/asm-ppc/ppc-platforms or something, then > have a symbolic link > include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> Isn't that redundand? IMHO "include/asm/platform -> include/asm-ppc/platforms/<board-file>" would do just fine - I don't expect anyone to create a include/asm-ppc/i386-platforms/ directory? Wolfgang Denk -- Software Engineering: Embedded and Realtime Systems, Embedded Linux Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de People with narrow minds usually have broad tongues. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter 2001-11-27 23:44 ` include/asm-ppc/platforms/ Wolfgang Denk @ 2001-11-28 6:13 ` Paul Mackerras 2001-11-28 6:23 ` include/asm-ppc/platforms/ Dan Malek ` (2 more replies) 2 siblings, 3 replies; 34+ messages in thread From: Paul Mackerras @ 2001-11-28 6:13 UTC (permalink / raw) To: Dan Malek; +Cc: linuxppc-dev Dan Malek writes: > That's a pretty good idea, and I have another one. Name the > directory include/asm-ppc/ppc-platforms or something, then > have a symbolic link > include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> > > That way we can just #include <platform.h> instead of having lots > of ifdefs in upper level files to determine which one is needed. If > we are moving files around, let's have some effect on actually making > it easier to use them, too. I have figured out a way to do this without too much pain. The idea is that we will have platform.h and platform-serial.h be symlinks to files in include/asm-ppc/platforms/. The way that I am suggesting that we do this is to have special comments in those files (the ones in include/asm-ppc/platforms) that say what should be symlinked, like this, from include/asm-ppc/platforms/all_ppc_serial.h: /* Link to platform_serial.h if CONFIG_ALL_PPC=y */ The comment has to be of the form: /* Link to <filename> if CONFIG_<option>=y */ and filename can't contain slashes. The patch below does all this. It does mean that we will need a platform header for every platform, and a platform_serial header for every platform where we want to use the standard serial driver. As an example, I have made an all_ppc_serial.h that contains most of what was in serial.h before. In fact, with a bit of care we could make serial.h be the symlink. Note that we can use one header for multiple platforms, just by putting multiple magic comments in. We can also potentially use this mechanism for config options other than the platform selection options. Thoughts? Paul. diff -urN linuxppc_2_4_devel/arch/ppc/Makefile pmac/arch/ppc/Makefile --- linuxppc_2_4_devel/arch/ppc/Makefile Wed Nov 14 02:50:13 2001 +++ pmac/arch/ppc/Makefile Wed Nov 28 16:22:01 2001 @@ -14,6 +14,8 @@ # Rewritten by Cort Dougan and Paul Mackerras # +MRPROPER_FILES += include/asm-ppc/platform.h include/asm-ppc/platform-serial.h + # Be sure to change PAGE_OFFSET in include/asm-ppc/page.h to match KERNELLOAD =0xc0000000 @@ -123,5 +125,11 @@ archmrproper: -archdep: scripts/mkdep +archdep: scripts/mkdep platformlinks $(MAKEBOOT) fastdep + +platformlinks: + rm -f include/asm-ppc/platform.h + rm -f include/asm-ppc/platform-serial.h + grep '=y$$' .config | grep -f - include/asm-ppc/platforms/*.h | \ + awk -f arch/ppc/mklinks.awk diff -urN linuxppc_2_4_devel/arch/ppc/mklinks.awk pmac/arch/ppc/mklinks.awk --- linuxppc_2_4_devel/arch/ppc/mklinks.awk Thu Jan 01 10:00:00 1970 +++ pmac/arch/ppc/mklinks.awk Wed Nov 28 16:33:48 2001 @@ -0,0 +1,8 @@ +/^[-_A-Za-z0-9.\/]+:\/\* Link to [-_A-Za-z0-9.]+ if CONFIG.* \*\/$/ { + target=$1; + gsub(/:.*$/, "", target); + gsub(/^include\/asm-ppc\//, "", target); + link="include/asm-ppc/" $4; + print link " -> " target; + system("ln -sf " target " " link); +} diff -urN linuxppc_2_4_devel/include/asm-ppc/platforms/all_ppc_serial.h pmac/include/asm-ppc/platforms/all_ppc_serial.h --- linuxppc_2_4_devel/include/asm-ppc/platforms/all_ppc_serial.h Thu Jan 01 10:00:00 1970 +++ pmac/include/asm-ppc/platforms/all_ppc_serial.h Wed Nov 28 16:42:57 2001 @@ -0,0 +1,128 @@ +/* + * Platform-specific header for serial devices on + * the (badly-named) ALL_PPC platform. + */ + +/* Link to platform_serial.h if CONFIG_ALL_PPC=y */ + +#include <linux/config.h> +#include <asm/processor.h> + +/* + * This assumes you have a 1.8432 MHz clock for your UART. + * + * It'd be nice if someone built a serial card with a 24.576 MHz + * clock, since the 16550A is capable of handling a top speed of 1.5 + * megabits/second; but this requires the faster clock. + */ +#define BASE_BAUD ( 1843200 / 16 ) + +#if defined(CONFIG_MAC_SERIAL) +#define SERIAL_DEV_OFFSET ((_machine == _MACH_prep || _machine == _MACH_chrp) ? 0 : 2) +#endif + +#ifdef CONFIG_SERIAL_MANY_PORTS +#define RS_TABLE_SIZE 64 +#else +#define RS_TABLE_SIZE 4 +#endif + +/* Standard COM flags (except for COM4, because of the 8514 problem) */ +#ifdef CONFIG_SERIAL_DETECT_IRQ +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ) +#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ) +#else +#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST) +#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF +#endif + +#ifdef CONFIG_SERIAL_MANY_PORTS +#define FOURPORT_FLAGS ASYNC_FOURPORT +#define ACCENT_FLAGS 0 +#define BOCA_FLAGS 0 +#define HUB6_FLAGS 0 +#endif + +/* + * The following define the access methods for the HUB6 card. All + * access is through two ports for all 24 possible chips. The card is + * selected through the high 2 bits, the port on that card with the + * "middle" 3 bits, and the register on that port with the bottom + * 3 bits. + * + * While the access port and interrupt is configurable, the default + * port locations are 0x302 for the port control register, and 0x303 + * for the data read/write register. Normally, the interrupt is at irq3 + * but can be anything from 3 to 7 inclusive. Note that using 3 will + * require disabling com2. + */ + +#define C_P(card,port) (((card)<<6|(port)<<3) + 1) + +#define STD_SERIAL_PORT_DEFNS \ + /* UART CLK PORT IRQ FLAGS */ \ + { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \ + { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \ + { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \ + { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */ + + +#ifdef CONFIG_SERIAL_MANY_PORTS +#define EXTRA_SERIAL_PORT_DEFNS \ + { 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, /* ttyS4 */ \ + { 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS }, /* ttyS5 */ \ + { 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS }, /* ttyS6 */ \ + { 0, BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS }, /* ttyS7 */ \ + { 0, BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS }, /* ttyS8 */ \ + { 0, BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS }, /* ttyS9 */ \ + { 0, BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS }, /* ttyS10 */ \ + { 0, BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS }, /* ttyS11 */ \ + { 0, BASE_BAUD, 0x330, 4, ACCENT_FLAGS }, /* ttyS12 */ \ + { 0, BASE_BAUD, 0x338, 4, ACCENT_FLAGS }, /* ttyS13 */ \ + { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS14 (spare) */ \ + { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS15 (spare) */ \ + { 0, BASE_BAUD, 0x100, 12, BOCA_FLAGS }, /* ttyS16 */ \ + { 0, BASE_BAUD, 0x108, 12, BOCA_FLAGS }, /* ttyS17 */ \ + { 0, BASE_BAUD, 0x110, 12, BOCA_FLAGS }, /* ttyS18 */ \ + { 0, BASE_BAUD, 0x118, 12, BOCA_FLAGS }, /* ttyS19 */ \ + { 0, BASE_BAUD, 0x120, 12, BOCA_FLAGS }, /* ttyS20 */ \ + { 0, BASE_BAUD, 0x128, 12, BOCA_FLAGS }, /* ttyS21 */ \ + { 0, BASE_BAUD, 0x130, 12, BOCA_FLAGS }, /* ttyS22 */ \ + { 0, BASE_BAUD, 0x138, 12, BOCA_FLAGS }, /* ttyS23 */ \ + { 0, BASE_BAUD, 0x140, 12, BOCA_FLAGS }, /* ttyS24 */ \ + { 0, BASE_BAUD, 0x148, 12, BOCA_FLAGS }, /* ttyS25 */ \ + { 0, BASE_BAUD, 0x150, 12, BOCA_FLAGS }, /* ttyS26 */ \ + { 0, BASE_BAUD, 0x158, 12, BOCA_FLAGS }, /* ttyS27 */ \ + { 0, BASE_BAUD, 0x160, 12, BOCA_FLAGS }, /* ttyS28 */ \ + { 0, BASE_BAUD, 0x168, 12, BOCA_FLAGS }, /* ttyS29 */ \ + { 0, BASE_BAUD, 0x170, 12, BOCA_FLAGS }, /* ttyS30 */ \ + { 0, BASE_BAUD, 0x178, 12, BOCA_FLAGS }, /* ttyS31 */ +#else +#define EXTRA_SERIAL_PORT_DEFNS +#endif + +/* You can have up to four HUB6's in the system, but I've only + * included two cards here for a total of twelve ports. + */ +#if (defined(CONFIG_HUB6) && defined(CONFIG_SERIAL_MANY_PORTS)) +#define HUB6_SERIAL_PORT_DFNS \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) }, /* ttyS32 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) }, /* ttyS33 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) }, /* ttyS34 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) }, /* ttyS35 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) }, /* ttyS36 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) }, /* ttyS37 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) }, /* ttyS38 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) }, /* ttyS39 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) }, /* ttyS40 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) }, /* ttyS41 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) }, /* ttyS42 */ \ + { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) }, /* ttyS43 */ +#else +#define HUB6_SERIAL_PORT_DFNS +#endif + +#define SERIAL_PORT_DFNS \ + STD_SERIAL_PORT_DEFNS \ + EXTRA_SERIAL_PORT_DEFNS \ + HUB6_SERIAL_PORT_DFNS diff -urN linuxppc_2_4_devel/include/asm-ppc/serial.h pmac/include/asm-ppc/serial.h --- linuxppc_2_4_devel/include/asm-ppc/serial.h Wed Nov 28 10:22:04 2001 +++ pmac/include/asm-ppc/serial.h Wed Nov 28 16:54:03 2001 @@ -9,149 +9,7 @@ #ifndef __ASM_SERIAL_H__ #define __ASM_SERIAL_H__ -#include <linux/config.h> +#include <asm/platform_serial.h> -#if defined(CONFIG_EV64260) -#include <asm/platforms/ev64260_serial.h> -#elif defined(CONFIG_GEMINI) -#include <asm/platforms/gemini_serial.h> -#elif defined(CONFIG_POWERPMC250) -#include <asm/platforms/powerpmc250_serial.h> -#elif defined(CONFIG_LOPEC) -#include <asm/platforms/lopec_serial.h> -#elif defined(CONFIG_MCPN765) -#include <asm/platforms/mcpn765_serial.h> -#elif defined(CONFIG_MVME5100) -#include <asm/platforms/mvme5100_serial.h> -#elif defined(CONFIG_PRPMC750) -#include <asm/platforms/prpmc750_serial.h> -#elif defined(CONFIG_PRPMC800) -#include <asm/platforms/prpmc800_serial.h> -#elif defined(CONFIG_SANDPOINT) -#include <asm/platforms/sandpoint_serial.h> -#elif defined(CONFIG_SPRUCE) -#include <asm/platforms/spruce_serial.h> -#elif defined(CONFIG_ZX4500) -#include <asm/platforms/zx4500_serial.h> -#elif defined(CONFIG_4xx) -#include <asm/platforms/ppc4xx_serial.h> -#else - -/* - * This assumes you have a 1.8432 MHz clock for your UART. - * - * It'd be nice if someone built a serial card with a 24.576 MHz - * clock, since the 16550A is capable of handling a top speed of 1.5 - * megabits/second; but this requires the faster clock. - */ -#define BASE_BAUD ( 1843200 / 16 ) - -#ifdef CONFIG_SERIAL_MANY_PORTS -#define RS_TABLE_SIZE 64 -#else -#define RS_TABLE_SIZE 4 -#endif - -/* Standard COM flags (except for COM4, because of the 8514 problem) */ -#ifdef CONFIG_SERIAL_DETECT_IRQ -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ) -#define STD_COM4_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_AUTO_IRQ) -#else -#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST) -#define STD_COM4_FLAGS ASYNC_BOOT_AUTOCONF -#endif - -#ifdef CONFIG_SERIAL_MANY_PORTS -#define FOURPORT_FLAGS ASYNC_FOURPORT -#define ACCENT_FLAGS 0 -#define BOCA_FLAGS 0 -#define HUB6_FLAGS 0 -#endif - -/* - * The following define the access methods for the HUB6 card. All - * access is through two ports for all 24 possible chips. The card is - * selected through the high 2 bits, the port on that card with the - * "middle" 3 bits, and the register on that port with the bottom - * 3 bits. - * - * While the access port and interrupt is configurable, the default - * port locations are 0x302 for the port control register, and 0x303 - * for the data read/write register. Normally, the interrupt is at irq3 - * but can be anything from 3 to 7 inclusive. Note that using 3 will - * require disabling com2. - */ - -#define C_P(card,port) (((card)<<6|(port)<<3) + 1) - -#define STD_SERIAL_PORT_DEFNS \ - /* UART CLK PORT IRQ FLAGS */ \ - { 0, BASE_BAUD, 0x3F8, 4, STD_COM_FLAGS }, /* ttyS0 */ \ - { 0, BASE_BAUD, 0x2F8, 3, STD_COM_FLAGS }, /* ttyS1 */ \ - { 0, BASE_BAUD, 0x3E8, 4, STD_COM_FLAGS }, /* ttyS2 */ \ - { 0, BASE_BAUD, 0x2E8, 3, STD_COM4_FLAGS }, /* ttyS3 */ - - -#ifdef CONFIG_SERIAL_MANY_PORTS -#define EXTRA_SERIAL_PORT_DEFNS \ - { 0, BASE_BAUD, 0x1A0, 9, FOURPORT_FLAGS }, /* ttyS4 */ \ - { 0, BASE_BAUD, 0x1A8, 9, FOURPORT_FLAGS }, /* ttyS5 */ \ - { 0, BASE_BAUD, 0x1B0, 9, FOURPORT_FLAGS }, /* ttyS6 */ \ - { 0, BASE_BAUD, 0x1B8, 9, FOURPORT_FLAGS }, /* ttyS7 */ \ - { 0, BASE_BAUD, 0x2A0, 5, FOURPORT_FLAGS }, /* ttyS8 */ \ - { 0, BASE_BAUD, 0x2A8, 5, FOURPORT_FLAGS }, /* ttyS9 */ \ - { 0, BASE_BAUD, 0x2B0, 5, FOURPORT_FLAGS }, /* ttyS10 */ \ - { 0, BASE_BAUD, 0x2B8, 5, FOURPORT_FLAGS }, /* ttyS11 */ \ - { 0, BASE_BAUD, 0x330, 4, ACCENT_FLAGS }, /* ttyS12 */ \ - { 0, BASE_BAUD, 0x338, 4, ACCENT_FLAGS }, /* ttyS13 */ \ - { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS14 (spare) */ \ - { 0, BASE_BAUD, 0x000, 0, 0 }, /* ttyS15 (spare) */ \ - { 0, BASE_BAUD, 0x100, 12, BOCA_FLAGS }, /* ttyS16 */ \ - { 0, BASE_BAUD, 0x108, 12, BOCA_FLAGS }, /* ttyS17 */ \ - { 0, BASE_BAUD, 0x110, 12, BOCA_FLAGS }, /* ttyS18 */ \ - { 0, BASE_BAUD, 0x118, 12, BOCA_FLAGS }, /* ttyS19 */ \ - { 0, BASE_BAUD, 0x120, 12, BOCA_FLAGS }, /* ttyS20 */ \ - { 0, BASE_BAUD, 0x128, 12, BOCA_FLAGS }, /* ttyS21 */ \ - { 0, BASE_BAUD, 0x130, 12, BOCA_FLAGS }, /* ttyS22 */ \ - { 0, BASE_BAUD, 0x138, 12, BOCA_FLAGS }, /* ttyS23 */ \ - { 0, BASE_BAUD, 0x140, 12, BOCA_FLAGS }, /* ttyS24 */ \ - { 0, BASE_BAUD, 0x148, 12, BOCA_FLAGS }, /* ttyS25 */ \ - { 0, BASE_BAUD, 0x150, 12, BOCA_FLAGS }, /* ttyS26 */ \ - { 0, BASE_BAUD, 0x158, 12, BOCA_FLAGS }, /* ttyS27 */ \ - { 0, BASE_BAUD, 0x160, 12, BOCA_FLAGS }, /* ttyS28 */ \ - { 0, BASE_BAUD, 0x168, 12, BOCA_FLAGS }, /* ttyS29 */ \ - { 0, BASE_BAUD, 0x170, 12, BOCA_FLAGS }, /* ttyS30 */ \ - { 0, BASE_BAUD, 0x178, 12, BOCA_FLAGS }, /* ttyS31 */ -#else -#define EXTRA_SERIAL_PORT_DEFNS -#endif - -/* You can have up to four HUB6's in the system, but I've only - * included two cards here for a total of twelve ports. - */ -#if (defined(CONFIG_HUB6) && defined(CONFIG_SERIAL_MANY_PORTS)) -#define HUB6_SERIAL_PORT_DFNS \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,0) }, /* ttyS32 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,1) }, /* ttyS33 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,2) }, /* ttyS34 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,3) }, /* ttyS35 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,4) }, /* ttyS36 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(0,5) }, /* ttyS37 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,0) }, /* ttyS38 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,1) }, /* ttyS39 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,2) }, /* ttyS40 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,3) }, /* ttyS41 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,4) }, /* ttyS42 */ \ - { 0, BASE_BAUD, 0x302, 3, HUB6_FLAGS, C_P(1,5) }, /* ttyS43 */ -#else -#define HUB6_SERIAL_PORT_DFNS -#endif - -#define SERIAL_PORT_DFNS \ - STD_SERIAL_PORT_DEFNS \ - EXTRA_SERIAL_PORT_DEFNS \ - HUB6_SERIAL_PORT_DFNS - -#endif /* !CONFIG_GEMINI and others */ #endif /* __ASM_SERIAL_H__ */ #endif /* __KERNEL__ */ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-28 6:23 ` Dan Malek 2001-11-29 11:48 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-28 23:51 ` include/asm-ppc/platforms/ Tom Rini 2 siblings, 1 reply; 34+ messages in thread From: Dan Malek @ 2001-11-28 6:23 UTC (permalink / raw) To: paulus; +Cc: linuxppc-dev Paul Mackerras wrote: > I have figured out a way to do this without too much pain. The idea > is that we will have platform.h and platform-serial.h be symlinks .... > Thoughts? Cool (although I really dislike looking at that serial.h file :-). Thanks. -- Dan ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 6:23 ` include/asm-ppc/platforms/ Dan Malek @ 2001-11-29 11:48 ` Paul Mackerras 2001-11-29 15:26 ` include/asm-ppc/platforms/ Tom Rini 0 siblings, 1 reply; 34+ messages in thread From: Paul Mackerras @ 2001-11-29 11:48 UTC (permalink / raw) To: linuxppc-dev; +Cc: kaos I have run the platform.h stuff past Keith Owens, the kbuild maintainer. He makes several points: * He much prefers generated files (including symlinks) to be created in arch/$(ARCH) rather than include. In particular he doesn't like mixing supplied and generated headers in the one directory. * He prefers a copy rather than a symlink, particularly for kbuild-2.5, so that we have real pathnames and timestamps in the dependency tree. * He wrote a new script that uses sed rather than awk, checks a few things (e.g. exactly one platform.h file is selected) and also creates empty files if e.g. no platform_serial.h file is selected. The only reason for having include/asm-ppc/platforms under include/asm-ppc is so that serial.h can include the right blah_serial.h file. We can get around that by using early_serial_setup except that that doesn't work if the serial driver is built as a module. The boot stuff also needs to get at the first serial port but we can manage that by requiring the platform.h file to define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it wants to use a serial port in the boot wrapper. The boot wrapper code then just does #include <platform.h>. Alternatively we can add a -Iarch/$(ARCH) flag for cc and put platform.h in arch/ppc and the platform headers in arch/ppc/platforms. This is Keith's preferred solution and it feels right to me too. Platform maintainers can continue to statically initialize rs_table for their serial ports if they wish. I think I will move all those crufty old fourport, accent, boca and hub6 declarations into include/asm-ppc/isa_serial.h so that they are still available but not getting in our faces all the time. Comments? Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 11:48 ` include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-29 15:26 ` Tom Rini 2001-11-29 22:19 ` include/asm-ppc/platforms/ Keith Owens 0 siblings, 1 reply; 34+ messages in thread From: Tom Rini @ 2001-11-29 15:26 UTC (permalink / raw) To: Paul Mackerras; +Cc: linuxppc-dev, kaos On Thu, Nov 29, 2001 at 10:48:46PM +1100, Paul Mackerras wrote: > The only reason for having include/asm-ppc/platforms under > include/asm-ppc is so that serial.h can include the right > blah_serial.h file. We can get around that by using > early_serial_setup except that that doesn't work if the serial driver > is built as a module. The boot stuff also needs to get at the first > serial port but we can manage that by requiring the platform.h file to > define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it > wants to use a serial port in the boot wrapper. The boot wrapper code > then just does #include <platform.h>. What would <asm/serial.h> contain here? Keep in mind that some ports 'just work' with the default <asm/serial.h>. > Alternatively we can add a -Iarch/$(ARCH) flag for cc and put > platform.h in arch/ppc and the platform headers in > arch/ppc/platforms. This is Keith's preferred solution and it feels > right to me too. This would probably be better. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 15:26 ` include/asm-ppc/platforms/ Tom Rini @ 2001-11-29 22:19 ` Keith Owens 2001-11-29 22:27 ` include/asm-ppc/platforms/ Tom Rini 0 siblings, 1 reply; 34+ messages in thread From: Keith Owens @ 2001-11-29 22:19 UTC (permalink / raw) To: Tom Rini; +Cc: Paul Mackerras, linuxppc-dev On Thu, 29 Nov 2001 08:26:25 -0700, Tom Rini <trini@kernel.crashing.org> wrote: >On Thu, Nov 29, 2001 at 10:48:46PM +1100, Paul Mackerras wrote: >> The only reason for having include/asm-ppc/platforms under >> include/asm-ppc is so that serial.h can include the right >> blah_serial.h file. We can get around that by using >> early_serial_setup except that that doesn't work if the serial driver >> is built as a module. The boot stuff also needs to get at the first >> serial port but we can manage that by requiring the platform.h file to >> define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it >> wants to use a serial port in the boot wrapper. The boot wrapper code >> then just does #include <platform.h>. > >What would <asm/serial.h> contain here? Keep in mind that some ports >'just work' with the default <asm/serial.h>. The make rules I sent to Paul automatically generate platform.h and platform_serial.h by copying the platform specific files to arch/ppc under standard names. If the platform has no *_serial.h file then platform_serial.h is a zero length file. So ppc code can always #include <platform.h> #include <platform_serial.h> without #ifdef in the main code. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 22:19 ` include/asm-ppc/platforms/ Keith Owens @ 2001-11-29 22:27 ` Tom Rini 2001-11-29 22:38 ` include/asm-ppc/platforms/ Keith Owens 0 siblings, 1 reply; 34+ messages in thread From: Tom Rini @ 2001-11-29 22:27 UTC (permalink / raw) To: Keith Owens; +Cc: Paul Mackerras, linuxppc-dev On Fri, Nov 30, 2001 at 09:19:20AM +1100, Keith Owens wrote: > On Thu, 29 Nov 2001 08:26:25 -0700, > Tom Rini <trini@kernel.crashing.org> wrote: > >On Thu, Nov 29, 2001 at 10:48:46PM +1100, Paul Mackerras wrote: > >> The only reason for having include/asm-ppc/platforms under > >> include/asm-ppc is so that serial.h can include the right > >> blah_serial.h file. We can get around that by using > >> early_serial_setup except that that doesn't work if the serial driver > >> is built as a module. The boot stuff also needs to get at the first > >> serial port but we can manage that by requiring the platform.h file to > >> define e.g. BOOT_SERIAL_ADDRESS, BOOT_SERIAL_REG_SHIFT, etc., if it > >> wants to use a serial port in the boot wrapper. The boot wrapper code > >> then just does #include <platform.h>. > > > >What would <asm/serial.h> contain here? Keep in mind that some ports > >'just work' with the default <asm/serial.h>. > > The make rules I sent to Paul automatically generate platform.h and > platform_serial.h by copying the platform specific files to arch/ppc > under standard names. If the platform has no *_serial.h file then > platform_serial.h is a zero length file. So ppc code can always > > #include <platform.h> > #include <platform_serial.h> So <asm/serial.h> just has the above two lines and all platforms need a platform/platform_serial.h file for serial to work with this scheme? -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 22:27 ` include/asm-ppc/platforms/ Tom Rini @ 2001-11-29 22:38 ` Keith Owens 2001-11-29 22:46 ` include/asm-ppc/platforms/ Tom Rini 0 siblings, 1 reply; 34+ messages in thread From: Keith Owens @ 2001-11-29 22:38 UTC (permalink / raw) To: Tom Rini; +Cc: Paul Mackerras, linuxppc-dev On Thu, 29 Nov 2001 15:27:41 -0700, Tom Rini <trini@kernel.crashing.org> wrote: >On Fri, Nov 30, 2001 at 09:19:20AM +1100, Keith Owens wrote: >> The make rules I sent to Paul automatically generate platform.h and >> platform_serial.h by copying the platform specific files to arch/ppc >> under standard names. If the platform has no *_serial.h file then >> platform_serial.h is a zero length file. So ppc code can always >> >> #include <platform.h> >> #include <platform_serial.h> > >So <asm/serial.h> just has the above two lines Yes. We don't need no steenking #ifdefs. >and all platforms need a >platform/platform_serial.h file for serial to work with this scheme? No, an empty one is automatically generated if necessary. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 22:38 ` include/asm-ppc/platforms/ Keith Owens @ 2001-11-29 22:46 ` Tom Rini 2001-11-29 23:12 ` include/asm-ppc/platforms/ Keith Owens 0 siblings, 1 reply; 34+ messages in thread From: Tom Rini @ 2001-11-29 22:46 UTC (permalink / raw) To: Keith Owens; +Cc: Paul Mackerras, linuxppc-dev On Fri, Nov 30, 2001 at 09:38:36AM +1100, Keith Owens wrote: > On Thu, 29 Nov 2001 15:27:41 -0700, > Tom Rini <trini@kernel.crashing.org> wrote: > >On Fri, Nov 30, 2001 at 09:19:20AM +1100, Keith Owens wrote: > >> The make rules I sent to Paul automatically generate platform.h and > >> platform_serial.h by copying the platform specific files to arch/ppc > >> under standard names. If the platform has no *_serial.h file then > >> platform_serial.h is a zero length file. So ppc code can always > >> > >> #include <platform.h> > >> #include <platform_serial.h> > > > >So <asm/serial.h> just has the above two lines > > Yes. We don't need no steenking #ifdefs. > > >and all platforms need a > >platform/platform_serial.h file for serial to work with this scheme? > > No, an empty one is automatically generated if necessary. So yes, for CONFIG_SERIAL to work, the file needs to exist. Which has the downside that at least a handful of platforms will need to cp all_ppc_serial.h. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 22:46 ` include/asm-ppc/platforms/ Tom Rini @ 2001-11-29 23:12 ` Keith Owens 2001-11-29 23:18 ` include/asm-ppc/platforms/ Tom Rini 0 siblings, 1 reply; 34+ messages in thread From: Keith Owens @ 2001-11-29 23:12 UTC (permalink / raw) To: Tom Rini; +Cc: Paul Mackerras, linuxppc-dev On Thu, 29 Nov 2001 15:46:10 -0700, Tom Rini <trini@kernel.crashing.org> wrote: >On Fri, Nov 30, 2001 at 09:38:36AM +1100, Keith Owens wrote: >> Tom Rini <trini@kernel.crashing.org> wrote: >> >and all platforms need a >> >platform/platform_serial.h file for serial to work with this scheme? >> >> No, an empty one is automatically generated if necessary. > >So yes, for CONFIG_SERIAL to work, the file needs to exist. Which has >the downside that at least a handful of platforms will need to cp >all_ppc_serial.h. Are the *_serial.h files intended as extensions for asm-ppc/serial.h or as complete replacements for it? If they are extensions then adding #include <platform_serial.h> to asm-ppc/serial.h is enough. If they are complete replacements then the code is a little harder, but not much. *.c files include only <asm/serial.h>. In platform *_serial.h files, #define REPLACES_PPC_SERIAL_H. In asm-ppc/serial.h, #include <platform_serial.h> #ifndef REPLACES_PPC_SERIAL_H ... default ppc serial definitions #endif Do that once and forget about it, instead of needing #ifdef CONFIG for each platform throughout the code. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-29 23:12 ` include/asm-ppc/platforms/ Keith Owens @ 2001-11-29 23:18 ` Tom Rini 0 siblings, 0 replies; 34+ messages in thread From: Tom Rini @ 2001-11-29 23:18 UTC (permalink / raw) To: Keith Owens; +Cc: Paul Mackerras, linuxppc-dev On Fri, Nov 30, 2001 at 10:12:33AM +1100, Keith Owens wrote: > On Thu, 29 Nov 2001 15:46:10 -0700, > Tom Rini <trini@kernel.crashing.org> wrote: > >On Fri, Nov 30, 2001 at 09:38:36AM +1100, Keith Owens wrote: > >> Tom Rini <trini@kernel.crashing.org> wrote: > >> >and all platforms need a > >> >platform/platform_serial.h file for serial to work with this scheme? > >> > >> No, an empty one is automatically generated if necessary. > > > >So yes, for CONFIG_SERIAL to work, the file needs to exist. Which has > >the downside that at least a handful of platforms will need to cp > >all_ppc_serial.h. > > Are the *_serial.h files intended as extensions for asm-ppc/serial.h or > as complete replacements for it? They could be <asm/serial.h> yes. > If they are extensions then adding > #include <platform_serial.h> to asm-ppc/serial.h is enough. If they are > complete replacements then the code is a little harder, but not much. > > *.c files include only <asm/serial.h>. In platform *_serial.h files, > #define REPLACES_PPC_SERIAL_H. In asm-ppc/serial.h, > > #include <platform_serial.h> > #ifndef REPLACES_PPC_SERIAL_H > ... default ppc serial definitions > #endif That would probably work best, yes. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 6:23 ` include/asm-ppc/platforms/ Dan Malek @ 2001-11-28 8:46 ` Adrian Cox 2001-11-28 21:34 ` include/asm-ppc/platforms/ Paul Mackerras ` (2 more replies) 2001-11-28 23:51 ` include/asm-ppc/platforms/ Tom Rini 2 siblings, 3 replies; 34+ messages in thread From: Adrian Cox @ 2001-11-28 8:46 UTC (permalink / raw) To: paulus; +Cc: linuxppc-dev Paul Mackerras wrote: > The patch below does all this. It does mean that we will need a > platform header for every platform, and a platform_serial header for > every platform where we want to use the standard serial driver. As an > example, I have made an all_ppc_serial.h that contains most of what > was in serial.h before. In fact, with a bit of care we could make > serial.h be the symlink. All my boards now use early_serial_setup() instead of a platform header file. This approach is simple to write, and requires no modifications outside the platform_setup.c file. I'd rather not go back to providing platform specific serial definitions in a header file. -- Adrian Cox http://www.humboldt.co.uk/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox @ 2001-11-28 21:34 ` Paul Mackerras 2001-11-28 21:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-28 23:50 ` include/asm-ppc/platforms/ Tom Rini 2001-11-29 10:57 ` include/asm-ppc/platforms/ Paul Mackerras 2 siblings, 1 reply; 34+ messages in thread From: Paul Mackerras @ 2001-11-28 21:34 UTC (permalink / raw) To: Adrian Cox; +Cc: linuxppc-dev Adrian Cox writes: > All my boards now use early_serial_setup() instead of a platform header > file. This approach is simple to write, and requires no modifications > outside the platform_setup.c file. I'd rather not go back to providing > platform specific serial definitions in a header file. Perfectly reasonable - I wish all the platforms used early_serial_setup. Would you mind posting your code that does the early_serial_setup calls? Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 21:34 ` include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-28 21:46 ` Adrian Cox 2001-11-29 17:57 ` include/asm-ppc/platforms/ Frank Rowand 0 siblings, 1 reply; 34+ messages in thread From: Adrian Cox @ 2001-11-28 21:46 UTC (permalink / raw) To: paulus; +Cc: linuxppc-dev Paul Mackerras wrote: > Perfectly reasonable - I wish all the platforms used early_serial_setup. > Would you mind posting your code that does the early_serial_setup calls? Mangled by Mozilla below. This is a 7400 board with a memory mapped uart. It is important to zero out the entries for serial ports that aren't present, otherwise the serial driver will attempt to use the traditional locations. static void __init tpe3_setup_arch(void) { struct serial_struct req; ... memset(&req, 0, sizeof (req)); req.line = 0; req.io_type = SERIAL_IO_MEM; req.iomem_base = (void *) (tpe3_uart_base + 0x10); req.baud_base = 6144000 / 16; req.irq = 3; req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; early_serial_setup(&req); memset(&req, 0, sizeof (req)); req.line = 1; early_serial_setup(&req); req.line = 2; early_serial_setup(&req); req.line = 3; early_serial_setup(&req); ... } -- Adrian Cox http://www.humboldt.co.uk/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 21:46 ` include/asm-ppc/platforms/ Adrian Cox @ 2001-11-29 17:57 ` Frank Rowand 0 siblings, 0 replies; 34+ messages in thread From: Frank Rowand @ 2001-11-29 17:57 UTC (permalink / raw) To: linuxppc-dev; +Cc: Adrian Cox, paulus [-- Attachment #1: Type: text/plain, Size: 1284 bytes --] Adrian Cox wrote: > > Paul Mackerras wrote: > > > Perfectly reasonable - I wish all the platforms used early_serial_setup. > > Would you mind posting your code that does the early_serial_setup calls? > > Mangled by Mozilla below. This is a 7400 board with a memory mapped > uart. It is important to zero out the entries for serial ports that > aren't present, otherwise the serial driver will attempt to use the > traditional locations. > > static void __init > tpe3_setup_arch(void) > { > struct serial_struct req; > > ... > > memset(&req, 0, sizeof (req)); > req.line = 0; > req.io_type = SERIAL_IO_MEM; > req.iomem_base = (void *) (tpe3_uart_base + 0x10); > req.baud_base = 6144000 / 16; > req.irq = 3; > req.flags = ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST; > early_serial_setup(&req); > memset(&req, 0, sizeof (req)); > req.line = 1; > early_serial_setup(&req); > req.line = 2; > early_serial_setup(&req); > req.line = 3; > early_serial_setup(&req); > > ... > } And a more generic approach (that can pull the port definitions from a header file) is attached... -Frank -- Frank Rowand <frank_rowand@mvista.com> MontaVista Software, Inc [-- Attachment #2: example --] [-- Type: text/plain, Size: 1908 bytes --] Date: Wed, 27 Jun 2001 17:55:06 -0700 From: Frank Rowand <frank_rowand@mvista.com> Reply-To: frowand@mvista.com Subject: Paulus, Trini: here's how to dynamically register serial port You guys were discussing how to get rid of all the #ifdef ... includes for the serial ports, and wondering how to dynamically register ports. The interface the serial driver provides for this is early_serial_setup(). Here's an example of using it (this example uses the SERIAL_PORT_DFNS from ppc4xx_serial.h just because it was already defined there): { #include <linux/serialP.h> int k; struct serial_struct req; struct serial_state tmp_rs_table[RS_TABLE_SIZE] = { SERIAL_PORT_DFNS /* Defined in ppc4xx_serial.h */ }; for (k = 0; k < RS_TABLE_SIZE; k++) { if (tmp_rs_table[k].iomem_base != 0) { req.baud_base = tmp_rs_table[k].baud_base; req.port = tmp_rs_table[k].port; req.port_high = 0; req.irq = tmp_rs_table[k].irq; req.flags = tmp_rs_table[k].flags; req.close_delay = tmp_rs_table[k].close_delay; req.io_type = tmp_rs_table[k].io_type; req.hub6 = tmp_rs_table[k].hub6; req.iomem_base = ioremap((int)tmp_rs_table[k].iomem_base, PAGE_SIZE); req.iomem_reg_shift = tmp_rs_table[k].iomem_reg_shift; req.type = tmp_rs_table[k].type; req.xmit_fifo_size = tmp_rs_table[k].xmit_fifo_size; req.custom_divisor = tmp_rs_table[k].custom_divisor; req.closing_wait = tmp_rs_table[k].closing_wait; early_serial_setup(&req); } } } -Frank -- Frank Rowand <frank_rowand@mvista.com> MontaVista Software, Inc ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-28 21:34 ` include/asm-ppc/platforms/ Paul Mackerras @ 2001-11-28 23:50 ` Tom Rini 2001-11-29 10:57 ` include/asm-ppc/platforms/ Paul Mackerras 2 siblings, 0 replies; 34+ messages in thread From: Tom Rini @ 2001-11-28 23:50 UTC (permalink / raw) To: Adrian Cox; +Cc: paulus, linuxppc-dev On Wed, Nov 28, 2001 at 08:46:59AM +0000, Adrian Cox wrote: > > Paul Mackerras wrote: > > >The patch below does all this. It does mean that we will need a > >platform header for every platform, and a platform_serial header for > >every platform where we want to use the standard serial driver. As an > >example, I have made an all_ppc_serial.h that contains most of what > >was in serial.h before. In fact, with a bit of care we could make > >serial.h be the symlink. > > All my boards now use early_serial_setup() instead of a platform header > file. This approach is simple to write, and requires no modifications > outside the platform_setup.c file. I'd rather not go back to providing > platform specific serial definitions in a header file. What do you use for a bootloader tho? I'm guessing PPCBoot. The in-kernel wrappers have a basic serial driver and need to know about these things. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-28 21:34 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 23:50 ` include/asm-ppc/platforms/ Tom Rini @ 2001-11-29 10:57 ` Paul Mackerras 2 siblings, 0 replies; 34+ messages in thread From: Paul Mackerras @ 2001-11-29 10:57 UTC (permalink / raw) To: Adrian Cox; +Cc: linuxppc-dev Adrian Cox writes: > All my boards now use early_serial_setup() instead of a platform header > file. This approach is simple to write, and requires no modifications > outside the platform_setup.c file. I'd rather not go back to providing > platform specific serial definitions in a header file. I have just realized again that this is not possible if the serial driver is built as a module, since you don't get the chance to call early_serial_init between when it is loaded and when rs_init (which is the module init function) is called. Paul. ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: include/asm-ppc/platforms/ 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 6:23 ` include/asm-ppc/platforms/ Dan Malek 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox @ 2001-11-28 23:51 ` Tom Rini 2 siblings, 0 replies; 34+ messages in thread From: Tom Rini @ 2001-11-28 23:51 UTC (permalink / raw) To: Paul Mackerras; +Cc: Dan Malek, linuxppc-dev On Wed, Nov 28, 2001 at 05:13:30PM +1100, Paul Mackerras wrote: > > Dan Malek writes: > > > That's a pretty good idea, and I have another one. Name the > > directory include/asm-ppc/ppc-platforms or something, then > > have a symbolic link > > include/asm/platform -> include/asm-ppc/ppc-platforms/<board-file> > > > > That way we can just #include <platform.h> instead of having lots > > of ifdefs in upper level files to determine which one is needed. If > > we are moving files around, let's have some effect on actually making > > it easier to use them, too. > > I have figured out a way to do this without too much pain. The idea > is that we will have platform.h and platform-serial.h be symlinks to > files in include/asm-ppc/platforms/. The way that I am suggesting > that we do this is to have special comments in those files (the ones > in include/asm-ppc/platforms) that say what should be symlinked, like > this, from include/asm-ppc/platforms/all_ppc_serial.h: The one thing I don't like about this is that there's a handfull of platforms which would use the 'all_ppc_serial.h' file. > The patch below does all this. It does mean that we will need a > platform header for every platform, and a platform_serial header for > every platform where we want to use the standard serial driver. As an > example, I have made an all_ppc_serial.h that contains most of what > was in serial.h before. In fact, with a bit of care we could make > serial.h be the symlink. Well, if I read that mess if #ifdefs, they already are a whole 'serial.h', so lets just do it in one go. :) Aside from that it looks good. -- Tom Rini (TR1265) http://gate.crashing.org/~trini/ ** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2001-12-27 15:18 UTC | newest] Thread overview: 34+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2001-11-30 13:30 include/asm-ppc/platforms/ Ralph Blach 2001-11-30 22:08 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-30 23:22 ` include/asm-ppc/platforms/ Frank Rowand 2001-12-01 3:31 ` include/asm-ppc/platforms/ Dan Malek 2001-12-01 18:19 ` include/asm-ppc/platforms/ Frank Rowand 2001-12-01 22:22 ` include/asm-ppc/platforms/ Dan Malek 2001-12-01 22:41 ` include/asm-ppc/platforms/ Tom Rini 2001-12-01 0:19 ` include/asm-ppc/platforms/ Armin Kuster -- strict thread matches above, loose matches on Subject: below -- 2001-11-27 11:32 include/asm-ppc/platforms/ Paul Mackerras 2001-11-27 15:22 ` include/asm-ppc/platforms/ Tom Rini 2001-11-27 20:06 ` include/asm-ppc/platforms/ Roman Zippel 2001-11-28 2:35 ` include/asm-ppc/platforms/ Keith Owens 2001-12-27 14:59 ` include/asm-ppc/platforms/ Dan Malek 2001-11-27 12:00 ` include/asm-ppc/platforms/ Matt Porter 2001-11-27 15:18 ` include/asm-ppc/platforms/ Geert Uytterhoeven 2001-12-27 15:18 ` include/asm-ppc/platforms/ Dan Malek 2001-11-27 23:44 ` include/asm-ppc/platforms/ Wolfgang Denk 2001-11-28 6:13 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 6:23 ` include/asm-ppc/platforms/ Dan Malek 2001-11-29 11:48 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-29 15:26 ` include/asm-ppc/platforms/ Tom Rini 2001-11-29 22:19 ` include/asm-ppc/platforms/ Keith Owens 2001-11-29 22:27 ` include/asm-ppc/platforms/ Tom Rini 2001-11-29 22:38 ` include/asm-ppc/platforms/ Keith Owens 2001-11-29 22:46 ` include/asm-ppc/platforms/ Tom Rini 2001-11-29 23:12 ` include/asm-ppc/platforms/ Keith Owens 2001-11-29 23:18 ` include/asm-ppc/platforms/ Tom Rini 2001-11-28 8:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-28 21:34 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 21:46 ` include/asm-ppc/platforms/ Adrian Cox 2001-11-29 17:57 ` include/asm-ppc/platforms/ Frank Rowand 2001-11-28 23:50 ` include/asm-ppc/platforms/ Tom Rini 2001-11-29 10:57 ` include/asm-ppc/platforms/ Paul Mackerras 2001-11-28 23:51 ` include/asm-ppc/platforms/ Tom Rini
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).