static int owl_mac_parse_fdtdec(struct owl_mac_info *info) { int node,ret; //const char *mac_compat = OWL_MAC_COMPAT; node = fdt_node_offset_by_compatible(gd->fdt_blob,0,OWL_MAC_COMPAT); if(node <= 0){ debug("Can't get owl-ethernet node\n"); return -1; } ret = fdtdec_get_is_enabled(gd->fdt_blob,node); if(!ret){ debug("Disable by dts\n"); return -1; } info->phy_addr = fdtdec_get_int(gd->fdt_blob, node, "phy_addr", -1); printf("owl_mac_parse_fdtdec,phy_addr %d\n",info->phy_addr); owl_fdtdec_decode_gpio(gd->fdt_blob, node, "phy-power-gpios",&info->phy_power_gpio); owl_fdtdec_decode_gpio(gd->fdt_blob, node, "phy-reset-gpios",&info->phy_reset_gpio); printf("owl_mac_parse_fdtdec,power-gpio %d\n",info->phy_power_gpio.gpio,info->phy_power_gpio.flags); printf("owl_mac_parse_fdtdec,reset-gpio %d\n",info->phy_reset_gpio.gpio,info->phy_reset_gpio.flags); return 0; }
int fdtdec_get_dsi_par(struct owl_dsi *par) { int dev_node; int mode_node; int len; const char *data_fmt_name; struct fb_videomode *mode; debug("fdtdec_get_dsi_par0\n"); dev_node = fdtdec_next_compatible( gd->fdt_blob, 0, COMPAT_ACTIONS_OWL_DSI); if (dev_node <= 0) { debug("Can't get owl-dsi device node\n"); return -1; } par->dev_node = dev_node; mode_node = fdtdec_lookup_phandle( gd->fdt_blob, dev_node, "videomode-0"); if (mode_node <= 0) { debug("Can't get dsi mode node\n"); return -1; } mode = malloc(sizeof(struct fb_videomode)); mode->refresh = fdtdec_get_int( gd->fdt_blob, mode_node, "refresh", -1); mode->xres = fdtdec_get_int( gd->fdt_blob, mode_node, "xres", -1); mode->yres = fdtdec_get_int( gd->fdt_blob, mode_node, "yres", -1); mode->pixclock = fdtdec_get_int( gd->fdt_blob, mode_node, "pixclock", -1); mode->left_margin = fdtdec_get_int( gd->fdt_blob, mode_node, "left_margin", -1); mode->right_margin = fdtdec_get_int( gd->fdt_blob, mode_node, "right_margin", -1); mode->upper_margin = fdtdec_get_int( gd->fdt_blob, mode_node, "upper_margin", -1); mode->lower_margin = fdtdec_get_int( gd->fdt_blob, mode_node, "lower_margin", -1); mode->hsync_len = fdtdec_get_int( gd->fdt_blob, mode_node, "hsync_len", -1); mode->vsync_len = fdtdec_get_int( gd->fdt_blob, mode_node, "vsync_len", -1); mode->vmode = fdtdec_get_int( gd->fdt_blob, mode_node, "vmode", -1); mode->sync = 0; mode->flag = 0; par->mode = mode; par->data_width = fdtdec_get_int( gd->fdt_blob, dev_node, "data_width", -1); owl_fdtdec_decode_gpio( gd->fdt_blob, dev_node, "dsi_power_gpios", &par->dsipower_gpio); debug("fdtdec_get_dsi_par 4\n"); owl_fdtdec_decode_gpio( gd->fdt_blob, dev_node, "dsi_power2_gpios", &par->dsipower2_gpio); debug("fdtdec_get_dsi_par 5\n"); owl_fdtdec_decode_gpio( gd->fdt_blob, dev_node, "dsi_reset_gpios", &par->dsireset_gpio); debug("fdtdec_get_dsi_par 6\n"); mode_node = fdtdec_lookup_phandle( gd->fdt_blob, dev_node, "hw-set"); if (mode_node <= 0) { debug("Can't get dsi mode node\n"); return -1; } par->reg_val.dsi_ctrl = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_ctrl", -1); debug("fdtdec_get_dsi_par dsi_ctrl %x\n", par->reg_val.dsi_ctrl); par->reg_val.dsi_size = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_size", -1); debug("fdtdec_get_dsi_par dsi_size %x\n", par->reg_val.dsi_size); par->reg_val.dsi_color = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_color", -1); debug("fdtdec_get_dsi_par dsi_color %x\n", par->reg_val.dsi_color); par->reg_val.dsi_rgbht0 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_rgbht0", -1); debug("fdtdec_get_dsi_par dsi_rgbht0 %x\n", par->reg_val.dsi_rgbht0); par->reg_val.dsi_rgbht1 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_rgbht1", -1); debug("fdtdec_get_dsi_par dsi_rgbht1 %x\n", par->reg_val.dsi_rgbht1); par->reg_val.dsi_rgbvt0 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_rgbvt0", -1); debug("fdtdec_get_dsi_par dsi_rgbvt0 %x\n", par->reg_val.dsi_rgbvt0); par->reg_val.dsi_rgbvt1 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_rgbvt1", -1); debug("fdtdec_get_dsi_par dsi_rgbvt1 %x\n", par->reg_val.dsi_rgbvt1); par->reg_val.dsi_pack_cfg = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_pack_cfg", -1); debug("fdtdec_get_dsi_par dsi_pack_cfg %x\n", par->reg_val.dsi_pack_cfg); par->reg_val.dsi_pack_header = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_pack_header", -1); debug("fdtdec_get_dsi_par dsi_pack_header %x\n", par->reg_val.dsi_pack_header); par->reg_val.dsi_vedio_cfg = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_vedio_cfg", -1); debug("fdtdec_get_dsi_par dsi_vedio_cfg %x\n", par->reg_val.dsi_vedio_cfg); par->reg_val.dsi_phy_t0 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_phy_t0", -1); debug("fdtdec_get_dsi_par dsi_phy_t0 %x\n", par->reg_val.dsi_phy_t0); par->reg_val.dsi_phy_t1 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_phy_t1", -1); debug("fdtdec_get_dsi_par dsi_phy_t1 %x\n", par->reg_val.dsi_phy_t1); par->reg_val.dsi_phy_t2 = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_phy_t2", -1); debug("fdtdec_get_dsi_par dsi_phy_t2 %x\n", par->reg_val.dsi_phy_t2); par->reg_val.dsi_phy_ctrl = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_phy_ctrl", -1); debug("fdtdec_get_dsi_par dsi_phy_ctrl %x\n", par->reg_val.dsi_phy_ctrl); par->reg_val.dsi_pin_map = fdtdec_get_int( gd->fdt_blob, mode_node, "dsi_pin_map", -1); debug("fdtdec_get_dsi_par dsi_pin_map %x\n", par->reg_val.dsi_pin_map); par->reg_val.cmu_dsipll_clk = fdtdec_get_int( gd->fdt_blob, mode_node, "cmu_dsipll_clk", -1); debug("fdtdec_get_dsi_par cmu_dsipll_clk %x\n", par->reg_val.cmu_dsipll_clk); printf("fdtdec_get_dsi_par ok\n"); return 0; }