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

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to