Kumar Gala wrote:

> is 19 the actual value you'd end up using from the HW? or is it related 
> to some random enum value?

Random enum value.  Here's the code in ucc_geth:

        prop = of_get_property(np, "rx-clock", NULL);
        ug_info->uf_info.rx_clock = *prop;


Here's the data type:

struct ucc_fast_info {
        int ucc_num;
        enum qe_clock rx_clock;
        enum qe_clock tx_clock;
        ...

As you can see, it doesn't even validate the property.

My uart driver has this:

        rx-clock-source = "BRG5";
        tx-clock-source = "BRG6";


        sprop = of_get_property(np, "rx-clock-source", NULL);
        if (!sprop) {
                printk(KERN_ERR
                       "ucc-uart: missing rx-clock-source in device tree\n");
                kfree(qe_port);
                return -ENODEV;
        }

        qe_port->us_info.rx_clock = of_clock_source(sprop);
        if ((qe_port->us_info.rx_clock < QE_BRG1) ||
            (qe_port->us_info.rx_clock > QE_BRG16)) {
                printk(KERN_ERR
                       "ucc-uart: rx-clock-source must be a BRG for UART\n");
                kfree(qe_port);
                return -ENODEV;
        }

I will be submitting patches to ucc_geth to fix this problem.


-- 
Timur Tabi
Linux Kernel Developer @ Freescale
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to