mirror of
https://github.com/apache/nuttx.git
synced 2026-05-20 12:33:27 +08:00
virtio: should use size matched operation to read virtio config space
1. Use virtio_read_config_bytes() to read the string types in rpmsg-virtio and virtio-net; 2. Use virtio_read_config_member() to read the elements in virtio-snd configuration space; Signed-off-by: Bowen Wang <wangbowen6@xiaomi.com>
This commit is contained in:
committed by
Alan C. Assis
parent
d1ae87a97a
commit
521fcd964d
@@ -642,21 +642,25 @@ int rpmsg_virtio_probe(FAR struct virtio_device *vdev)
|
||||
DEBUGASSERT(virtio_has_feature(vdev, VIRTIO_RPMSG_F_CPUNAME));
|
||||
if (vdev->role == VIRTIO_DEV_DRIVER)
|
||||
{
|
||||
virtio_read_config(vdev, offsetof(struct fw_rsc_config, host_cpuname),
|
||||
priv->rpmsg.local_cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config(vdev,
|
||||
offsetof(struct fw_rsc_config, remote_cpuname),
|
||||
priv->rpmsg.cpuname, VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config_bytes(vdev, offsetof(struct fw_rsc_config,
|
||||
host_cpuname),
|
||||
priv->rpmsg.local_cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config_bytes(vdev, offsetof(struct fw_rsc_config,
|
||||
remote_cpuname),
|
||||
priv->rpmsg.cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
}
|
||||
else
|
||||
{
|
||||
virtio_read_config(vdev, offsetof(struct fw_rsc_config, host_cpuname),
|
||||
priv->rpmsg.cpuname, VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config(vdev,
|
||||
offsetof(struct fw_rsc_config, remote_cpuname),
|
||||
priv->rpmsg.local_cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config_bytes(vdev, offsetof(struct fw_rsc_config,
|
||||
host_cpuname),
|
||||
priv->rpmsg.cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
virtio_read_config_bytes(vdev, offsetof(struct fw_rsc_config,
|
||||
remote_cpuname),
|
||||
priv->rpmsg.local_cpuname,
|
||||
VIRTIO_RPMSG_CPUNAME_SIZE);
|
||||
}
|
||||
|
||||
/* Register the rpmsg to rpmsg framework */
|
||||
|
||||
@@ -614,8 +614,9 @@ static void virtio_net_set_macaddr(FAR struct virtio_net_priv_s *priv)
|
||||
|
||||
if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC))
|
||||
{
|
||||
virtio_read_config(vdev, offsetof(struct virtio_net_config_s, mac),
|
||||
mac, IFHWADDRLEN);
|
||||
virtio_read_config_bytes(vdev,
|
||||
offsetof(struct virtio_net_config_s, mac),
|
||||
mac, IFHWADDRLEN);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -1107,8 +1107,12 @@ static int virtio_snd_init(FAR struct virtio_snd_s *priv)
|
||||
|
||||
virtio_set_status(priv->vdev, VIRTIO_CONFIG_STATUS_DRIVER_OK);
|
||||
|
||||
virtio_read_config(priv->vdev, 0, &priv->config,
|
||||
sizeof(struct virtio_snd_config));
|
||||
virtio_read_config_member(priv->vdev, struct virtio_snd_config, jacks,
|
||||
&priv->config.jacks);
|
||||
virtio_read_config_member(priv->vdev, struct virtio_snd_config, streams,
|
||||
&priv->config.streams);
|
||||
virtio_read_config_member(priv->vdev, struct virtio_snd_config, chmaps,
|
||||
&priv->config.chmaps);
|
||||
vrtinfo("jacks:%"PRIu32" streams:%"PRIu32" chmap:%"PRIu32"\n",
|
||||
priv->config.jacks, priv->config.streams, priv->config.chmaps);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user