diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/soc/aspeed/aspeed-mctp.c | 18 |
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; |