I wrote a driver that scans on startup dynamically for available EEPROM's on a certain I²C bus. For each EEPROM a new character device is created in /dev like:

/dev/bus0eepromA2 ...

But my aim is to put theese cdevs in a new folder like:

/dev/mydriver/bus0eepromA2 ...

In my probe function I have a loop that runs through all existing minor numbers. It looks like that:

for (minor = client->addr; minor < (num_addresses + client->addr); minor++) {
	dev = device_create(mydriver_class, &client->dev,
						MKDEV(mydriver_major, (minor<<1)), NULL,
						"mydriver!bus%deeprom%02X", gfeeprom->bus_id, (minor<<1));
	if (IS_ERR(dev))
		dev_err(&client->dev, "Could not create device file node.\n");
The line "mydriver!bus%deeprom%02X" effected that every cedv was put in the /dev/mydriver/ folder in kernel version 2.6.33. But in the version I am using now ( it doesn't work anymore. The excalamation mark (!) is simply witten in the cdevs name that I am getting

/dev/mydriver!bus0eepromA2 ...

I examined many functions called by device_create but I could not find any differences between the kernel versions. Anyone an idea what could have been changed or how I can fix it with a work around? A link where to find some information about structing devices would be nice as well.

Thank you for your help!