On Thu, Nov 08, 2001 at 11:30:06AM -0800, ppc@bitkeeper.com wrote:
ChangeSet@1.612, 2001-11-08 12:29:36-07:00, trini@opus.bloom.county
Make serial_init (in wrapper) take two args.
I was thinking about this a bit. The problem is that we have multiple
types of serial controllers we need to 'init' some how. We have the
ns1655x style ones in most 6xx/7xx/74xx and 4xx boards, and the
integrated controllers in 8xx and 8260 CPUs which have their own way of
being init'ed. We can either a) have a 'serial_init' function which
will do the right thing, even in the case of one file which can work on
both. b) We kill the idea of one serial_init which always does the
right thing. That lead to something like:
#ifdef CONFIG_4xx
ns1655x_init(0); /* Use channel 0 from the table */
#else
mpc_serial_init(bp); /* Use the bd_t struct to init this */
#endif
Comments? Does the current (first) way rub anyone horribly wrong? Is
there an even better idea out there?
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
From: Dan Malek <hidden> Date: 2001-11-08 21:40:30
Tom Rini wrote:
I was thinking about this a bit. The problem is that we have multiple
types of serial controllers we need to 'init' some how.
This is because I tried to use the same functions across a wide variety
of boards. All we need to do is define a macro in a board specific
file someplace that calls the proper init function.
-- Dan
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
On Thu, Nov 08, 2001 at 04:40:30PM -0500, Dan Malek wrote:
Tom Rini wrote:
quoted
I was thinking about this a bit. The problem is that we have multiple
types of serial controllers we need to 'init' some how.
This is because I tried to use the same functions across a wide variety
of boards. All we need to do is define a macro in a board specific
file someplace that calls the proper init function.
Yes, but then you end up with lots and lots of files with just a few
lines, or:
#if defined(A) || defined(B) || defined(C) || ... || defined(W)
#define serial_init(a) foo_init(a)
#endif
#if defined(X) || defined(Y) || ... || defined(Z)
#define serial_init(a) bar_init(a)
#endif
--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
From: Dan Malek <hidden> Date: 2001-11-08 23:06:06
Tom Rini wrote:
Yes, but then you end up....
Not what I had in mind :-).
For example, in include/asm-ppc/mpc8xx.h:
#define piggy_serial_init() mpc_serial_init(bp)
...and in include/asm-ppc/ibm4xx.h
#define piggy_serial_init() serial_init(0)
...and in misc-embedded.c change you list of #ifdefs to be:
piggy_serial_init();
If the individual boards need some different initialization, just
move the macro to a lower level include file.
-- Dan
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/