X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0637-driver-char-rpivid-also-support-legacy-name.patch;fp=target%2Flinux%2Fbrcm2708%2Fpatches-4.19%2F950-0637-driver-char-rpivid-also-support-legacy-name.patch;h=34dd24208cef4ff23bd40c058f867d2153cb47be;hb=c2308a7e4adbb2acc8ff149f91d1ca46801c135e;hp=0000000000000000000000000000000000000000;hpb=67dcc43f3a22dc3a7ac07a7065971b426feeb043;p=openwrt%2Fstaging%2Fchunkeey.git diff --git a/target/linux/brcm2708/patches-4.19/950-0637-driver-char-rpivid-also-support-legacy-name.patch b/target/linux/brcm2708/patches-4.19/950-0637-driver-char-rpivid-also-support-legacy-name.patch new file mode 100644 index 0000000000..34dd24208c --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0637-driver-char-rpivid-also-support-legacy-name.patch @@ -0,0 +1,71 @@ +From 80c20ff00542b050733780ae6088e50663ee8d78 Mon Sep 17 00:00:00 2001 +From: Phil Elwell +Date: Mon, 29 Jul 2019 12:03:21 +0100 +Subject: [PATCH] driver: char: rpivid - also support legacy name + +Provide transitional support for the previous names of +the character devices. + +Signed-off-by: Phil Elwell +--- + drivers/char/broadcom/rpivid-mem.c | 22 ++++++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +--- a/drivers/char/broadcom/rpivid-mem.c ++++ b/drivers/char/broadcom/rpivid-mem.c +@@ -66,7 +66,7 @@ static int rpivid_mem_open(struct inode + int dev = iminor(inode); + int ret = 0; + struct rpivid_mem_priv *priv; +- if (dev != DEVICE_MINOR) ++ if (dev != DEVICE_MINOR && dev != DEVICE_MINOR + 1) + ret = -ENXIO; + + priv = container_of(inode->i_cdev, struct rpivid_mem_priv, +@@ -82,7 +82,7 @@ static int rpivid_mem_release(struct ino + int dev = iminor(inode); + int ret = 0; + +- if (dev != DEVICE_MINOR) ++ if (dev != DEVICE_MINOR && dev != DEVICE_MINOR + 1) + ret = -ENXIO; + + return ret; +@@ -167,14 +167,14 @@ static int rpivid_mem_probe(struct platf + /* Create character device entries */ + + err = alloc_chrdev_region(&priv->devid, +- DEVICE_MINOR, 1, priv->name); ++ DEVICE_MINOR, 2, priv->name); + if (err != 0) { + dev_err(priv->dev, "unable to allocate device number"); + goto failed_alloc_chrdev; + } + cdev_init(&priv->rpivid_mem_cdev, &rpivid_mem_fops); + priv->rpivid_mem_cdev.owner = THIS_MODULE; +- err = cdev_add(&priv->rpivid_mem_cdev, priv->devid, 1); ++ err = cdev_add(&priv->rpivid_mem_cdev, priv->devid, 2); + if (err != 0) { + dev_err(priv->dev, "unable to register device"); + goto failed_cdev_add; +@@ -194,6 +194,20 @@ static int rpivid_mem_probe(struct platf + if (IS_ERR(ptr_err)) + goto failed_device_create; + ++ /* Legacy alias */ ++ { ++ char *oldname = kstrdup(priv->name, GFP_KERNEL); ++ ++ oldname[1] = 'a'; ++ oldname[2] = 'r'; ++ oldname[3] = 'g'; ++ oldname[4] = 'o'; ++ oldname[5] = 'n'; ++ (void)device_create(priv->class, NULL, priv->devid + 1, NULL, ++ oldname + 1); ++ kfree(oldname); ++ } ++ + dev_info(priv->dev, "%s initialised: Registers at 0x%08lx length 0x%08lx", + priv->name, priv->regs_phys, priv->mem_window_len); +