.rxsize         = GRCAN_DEFAULT_BUFFER_SIZE,    \
                }
 
-#define GRCAN_TXBUG_SAFE_GRLIB_VERSION 0x4100
+#define GRCAN_TXBUG_SAFE_GRLIB_VERSION 4100
 #define GRLIB_VERSION_MASK             0xffff
 
 /* GRCAN private data structure */
 static int grcan_probe(struct platform_device *ofdev)
 {
        struct device_node *np = ofdev->dev.of_node;
+       struct device_node *sysid_parent;
        u32 sysid, ambafreq;
        int irq, err;
        void __iomem *base;
        /* Compare GRLIB version number with the first that does not
         * have the tx bug (see start_xmit)
         */
-       err = of_property_read_u32(np, "systemid", &sysid);
-       if (!err && ((sysid & GRLIB_VERSION_MASK)
-                    >= GRCAN_TXBUG_SAFE_GRLIB_VERSION))
-               txbug = false;
+       sysid_parent = of_find_node_by_path("/ambapp0");
+       if (sysid_parent) {
+               of_node_get(sysid_parent);
+               err = of_property_read_u32(sysid_parent, "systemid", &sysid);
+               if (!err && ((sysid & GRLIB_VERSION_MASK) >=
+                            GRCAN_TXBUG_SAFE_GRLIB_VERSION))
+                       txbug = false;
+               of_node_put(sysid_parent);
+       }
 
        err = of_property_read_u32(np, "freq", &ambafreq);
        if (err) {