Use minor number for device node

Allocate a range of minor numbers and use the minor number as index
when creating the /dev/ethosu<nr> device node.

Change-Id: I76c2a3995ff5087e42a4e95945eb884a4bfb58f6
diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c
index 40b214c..13c30f6 100644
--- a/kernel/ethosu_device.c
+++ b/kernel/ethosu_device.c
@@ -44,8 +44,6 @@
  * Defines
  ****************************************************************************/
 
-#define MINOR_VERSION  0 /* Minor version starts at 0 */
-#define MINOR_COUNT    1 /* Allocate 1 minor version */
 #define DMA_ADDR_BITS 32 /* Number of address bits */
 
 #define CAPABILITIES_RESP_TIMEOUT_MS 100
@@ -397,6 +395,7 @@
 int ethosu_dev_init(struct ethosu_device *edev,
 		    struct device *dev,
 		    struct class *class,
+		    dev_t devt,
 		    struct resource *in_queue,
 		    struct resource *out_queue)
 {
@@ -413,6 +412,7 @@
 
 	edev->dev = dev;
 	edev->class = class;
+	edev->devt = devt;
 	mutex_init(&edev->mutex);
 	INIT_LIST_HEAD(&edev->capabilities_list);
 	INIT_LIST_HEAD(&edev->inference_list);
@@ -428,24 +428,17 @@
 	if (ret)
 		goto release_reserved_mem;
 
-	ret = alloc_chrdev_region(&edev->devt, MINOR_VERSION, MINOR_COUNT,
-				  "ethosu");
-	if (ret) {
-		dev_err(edev->dev, "Failed to allocate chrdev region.\n");
-		goto deinit_mailbox;
-	}
-
 	cdev_init(&edev->cdev, &fops);
 	edev->cdev.owner = THIS_MODULE;
 
-	ret = cdev_add(&edev->cdev, edev->devt, MINOR_COUNT);
+	ret = cdev_add(&edev->cdev, edev->devt, 1);
 	if (ret) {
 		dev_err(edev->dev, "Failed to add character device.\n");
-		goto region_unregister;
+		goto deinit_mailbox;
 	}
 
 	sysdev = device_create(edev->class, NULL, edev->devt, edev,
-			       "ethosu%d", MAJOR(edev->devt));
+			       "ethosu%d", MINOR(edev->devt));
 	if (IS_ERR(sysdev)) {
 		dev_err(edev->dev, "Failed to create device.\n");
 		ret = PTR_ERR(sysdev);
@@ -461,9 +454,6 @@
 del_cdev:
 	cdev_del(&edev->cdev);
 
-region_unregister:
-	unregister_chrdev_region(edev->devt, 1);
-
 deinit_mailbox:
 	ethosu_mailbox_deinit(&edev->mailbox);
 
@@ -478,7 +468,6 @@
 	ethosu_mailbox_deinit(&edev->mailbox);
 	device_destroy(edev->class, edev->cdev.dev);
 	cdev_del(&edev->cdev);
-	unregister_chrdev_region(edev->devt, MINOR_COUNT);
 	of_reserved_mem_device_release(edev->dev);
 
 	dev_info(edev->dev, "%s\n", __FUNCTION__);