1 // SPDX-License-Identifier: GPL-2.0+
10 struct misc_sandbox_priv {
16 int misc_sandbox_read(struct udevice *dev, int offset, void *buf, int size)
18 struct misc_sandbox_priv *priv = dev_get_priv(dev);
20 memcpy(buf, priv->mem + offset, size);
25 int misc_sandbox_write(struct udevice *dev, int offset, const void *buf,
28 struct misc_sandbox_priv *priv = dev_get_priv(dev);
30 memcpy(priv->mem + offset, buf, size);
35 int misc_sandbox_ioctl(struct udevice *dev, unsigned long request, void *buf)
37 struct misc_sandbox_priv *priv = dev_get_priv(dev);
39 priv->last_ioctl = request;
44 int misc_sandbox_call(struct udevice *dev, int msgid, void *tx_msg,
45 int tx_size, void *rx_msg, int rx_size)
47 struct misc_sandbox_priv *priv = dev_get_priv(dev);
50 int num = *(int *)tx_msg;
54 strncpy(rx_msg, "Zero", rx_size);
57 strncpy(rx_msg, "One", rx_size);
60 strncpy(rx_msg, "Two", rx_size);
68 int num = *(int *)tx_msg;
72 strncpy(rx_msg, "Forty", rx_size);
75 strncpy(rx_msg, "Forty-one", rx_size);
78 strncpy(rx_msg, "Forty-two", rx_size);
86 memcpy(rx_msg, &priv->last_ioctl, sizeof(priv->last_ioctl));
89 memcpy(rx_msg, &priv->enabled, sizeof(priv->enabled));
94 int misc_sandbox_set_enabled(struct udevice *dev, bool val)
96 struct misc_sandbox_priv *priv = dev_get_priv(dev);
98 priv->enabled = !priv->enabled;
103 static const struct misc_ops misc_sandbox_ops = {
104 .read = misc_sandbox_read,
105 .write = misc_sandbox_write,
106 .ioctl = misc_sandbox_ioctl,
107 .call = misc_sandbox_call,
108 .set_enabled = misc_sandbox_set_enabled,
111 int misc_sandbox_probe(struct udevice *dev)
113 struct misc_sandbox_priv *priv = dev_get_priv(dev);
115 const u8 mac[] = { 0x02, 0x00, 0x11, 0x22, 0x33, 0x46 };
117 priv->enabled = true;
118 memcpy(&priv->mem[16], mac, sizeof(mac));
123 static const struct udevice_id misc_sandbox_ids[] = {
124 { .compatible = "sandbox,misc_sandbox" },
128 U_BOOT_DRIVER(misc_sandbox) = {
129 .name = "misc_sandbox",
131 .ops = &misc_sandbox_ops,
132 .of_match = misc_sandbox_ids,
133 .probe = misc_sandbox_probe,
134 .priv_auto = sizeof(struct misc_sandbox_priv),