驱动中怎样自动分配一个主设备两个子设备号?
使用busybox提供的mdev管理设备节点,现在有个问题,一个字符设备,控制两路硬件,即两个子设备,这是设备号应该怎么自动分配?比如一个CAN驱动程序,下面有两路CAN接口,CAN1和CAN2,
struct mcp251x { struct cdev cdev; struct device sdev; struct class *cclass; int dev; /* device number */}static struct mcp251x *mcp251x_dev;static int mcp251x_count=2;static int __init mcp251x_init(void){ mcp251x_dev = kmalloc(sizeof(struct mcp251x)*mcp251x_count,GFP_KERNEL); for (i=0; i<mcp251x_count; i++) { chip = &mcp251x_dev[i]; alloc_chrdev_region(&chip->dev,/*base minor*/ 0, 1, DRIVER_NAME);//这里是不是重复申请了设备号,应该就一个主设备号啊 chip->cclass = class_create(THIS_MODULE, DRIVER_NAME); cdev_init(&chip->cdev, &mcp251x_fops); chip->cdev.owner = THIS_MODULE; chip->cdev.ops = &mcp251x_fops; ret = cdev_add (&chip->cdev, chip->dev, 1); /* Fail gracefully if need be */ if (ret) printk (KERN_NOTICE "Error %d adding can_lpc2xxx\n", ret); if (device_create(chip->cclass, NULL, MKDEV(MAJOR(chip->dev), i), chip, DRIVER_NAME) == NULL) { printk("err----%s %d \n",__FILE__,__LINE__); } }}