Second Attempt: Driver model usage on embedded processors
From: Kumar Gala
Date: Tue Dec 07 2004 - 00:04:53 EST
I'm looking at moving support for PowerPC System on a Chip devices to
using the 2.6 driver model. I think may issues may apply to any system
on a chip device. I have a few issues, however one is holding up
progress. I think the best way to ask my question is with an example:
On a given chip we have an ethernet controller that is directly
available to the CPU. The ideas is that this device would be a
platform device. The issue is that this controller may have several
minor variations on the same chip or between chip models. We have
written a single driver to handle these variants. Variants may
include, support for Gigabit, support for RMON, support for interrupt
coalescing. Additionally, the driver needs to be based some
information that is board specific. Such as which PHY, at what PHY id,
does the PHY have an interrupt, etc.
The intent was that I would use the platform_data pointer to pass board
specific information to the driver. We would have board specific code
which would fill in the information. The question I have is how to
handle the device variant information which is really static?
Possible solutions I've come up with:
1. use a struct resource for the flags that describe ethernet variants
- Add a new resource type
- steal a bus specific resource type
2. create a super structure that platform_data points to which contains
the flags and a board_data pointer
The issue I've got with #2 is that some of these devices (and therefor
drivers) will end up existing on various parts from Freescale that
might have an ARM core or PPC core. I'd prefer a solution that did not
impose restrictions on how an arch does things.
I a few other questions about headers and were to put things, but
that's secondary.
- kumar
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/