Esempio n. 1
0
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;
}
Esempio n. 2
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;
}