summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/soc/aspeed/aspeed-mctp.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/soc/aspeed/aspeed-mctp.c b/drivers/soc/aspeed/aspeed-mctp.c
index 5073f0e14dc3..befee29501b3 100644
--- a/drivers/soc/aspeed/aspeed-mctp.c
+++ b/drivers/soc/aspeed/aspeed-mctp.c
@@ -1297,6 +1297,20 @@ out:
return ret;
}
+static int aspeed_mctp_set_own_eid(struct aspeed_mctp *priv, void __user *userbuf)
+{
+ struct aspeed_mctp_set_own_eid data;
+
+ if (copy_from_user(&data, userbuf, sizeof(data))) {
+ dev_err(priv->dev, "copy from user failed\n");
+ return -EFAULT;
+ }
+
+ priv->eid = data.eid;
+
+ return 0;
+}
+
static long
aspeed_mctp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
@@ -1350,6 +1364,10 @@ aspeed_mctp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
ret = aspeed_mctp_set_eid_info(priv, userbuf, ASPEED_MCTP_EXTENDED_ADDR_FORMAT);
break;
+ case ASPEED_MCTP_IOCTL_SET_OWN_EID:
+ ret = aspeed_mctp_set_own_eid(priv, userbuf);
+ break;
+
default:
dev_err(priv->dev, "Command not found\n");
ret = -ENOTTY;