
Simon,
I am totally being confused.
As far as I looked at the dm code, the private data is calloc'ed in device_probe() function
if (drv->priv_auto_alloc_size) { dev->priv = calloc(1, drv->priv_auto_alloc_size); if (!dev->priv) { ret = -ENOMEM; goto fail; } }
So, dev->priv is storing the address of the allocated memory.
Am I understanding correctly?
If so, I can't understand the following code:
static int ns16550_serial_getc(struct udevice *dev) { struct NS16550 *const com_port = dev_get_priv(dev);
if (!serial_in(&com_port->lsr) & UART_LSR_DR) return -EAGAIN;
"com_port" is dev->priv, so it is pointing to the allocated area on RAM, I guess.
It looks like serial_in(&com_port->lsr) is trying to read from the hardware register ?
Or reading from malloc area RAM ??
Best Regards Masahiro Yamada