tc_bus
int __init tc_bus_get_info(struct tc_bus *tbus)
if (tc_bus_get_info(&tc_bus))
INIT_LIST_HEAD(&tc_bus.devices);
dev_set_name(&tc_bus.dev, "tc");
if (device_register(&tc_bus.dev))
if (tc_bus.info.slot_size) {
unsigned int tc_clock = tc_get_speed(&tc_bus) / 100000;
"(with%s parity)\n", tc_bus.info.revision,
tc_bus.info.parity ? "" : "out");
tc_bus.resource[0].start = tc_bus.slot_base;
tc_bus.resource[0].end = tc_bus.slot_base +
(tc_bus.info.slot_size << 20) *
tc_bus.num_tcslots - 1;
tc_bus.resource[0].name = tc_bus.name;
tc_bus.resource[0].flags = IORESOURCE_MEM;
&tc_bus.resource[0]) < 0) {
if (tc_bus.ext_slot_size) {
tc_bus.resource[1].start = tc_bus.ext_slot_base;
tc_bus.resource[1].end = tc_bus.ext_slot_base +
tc_bus.ext_slot_size *
tc_bus.num_tcslots - 1;
tc_bus.resource[1].name = tc_bus.name;
tc_bus.resource[1].flags = IORESOURCE_MEM;
&tc_bus.resource[1]) < 0) {
tc_bus_add_devices(&tc_bus);
release_resource(&tc_bus.resource[0]);
put_device(&tc_bus.dev);
static struct tc_bus tc_bus = {
static void __init tc_bus_add_devices(struct tc_bus *tbus)
struct tc_bus *tbus = to_tc_dev(info->device)->bus;
static inline unsigned long tc_get_speed(struct tc_bus *tbus)
extern int tc_bus_get_info(struct tc_bus *tbus);
struct tc_bus *bus; /* Bus this device is on. */