@Override
	public DTNode toDTNode(BoardInfo bi,Connection conn)
	{
		DTNode n = super.toDTNode(bi, conn);

		DTProperty prop = n.getPropertyByName("compatible");
		Vector<DTPropVal> vals = prop.getValues();
		vals.add(0, new DTPropStringVal("snps,dw-apb-gpio"));
		n.addProperty(new DTProperty("#address-cells", new DTPropNumVal(1)));
		n.addProperty(new DTProperty("#size-cells", new DTPropNumVal(0)));
		String[] ports = {"A","B", "C", "D"};
		int i = 0;
		for (String port : ports) {
			Parameter p = getParamByName(EMBSW_DTS+".instance.GPIO_PWIDTH_"+port);
			int width = 0;
			if (p == null) {
				if (i == 0) {
				  width = 27;	
				} 
			} else {
				width = Integer.parseInt(p.getValue());
			}
			if (width <= 0){
				continue;
			}

			DTNode subNode = new DTNode("gpio-controller@"+i, getInstanceName()+"_port"+port.toLowerCase());
			subNode.addProperty(new DTProperty("compatible",new DTPropStringVal("snps,dw-apb-gpio-port")));
			subNode.addProperty(new DTProperty("gpio-controller"));
			subNode.addProperty(new DTProperty("#gpio-cells", new DTPropNumVal(2)));
			subNode.addProperty(new DTProperty("snps,nr-gpios",new DTPropNumVal(width)));
			subNode.addProperty(new DTProperty("reg", new DTPropNumVal(i)));
			if (i == 0) {
				Parameter pint = getParamByName(EMBSW_DTS+".instance.GPIO_PORTA_INTR");
				if ((null == pint) || (pint.getValueAsBoolean())) {
					subNode.addProperty(new DTProperty("interrupt-controller"));
					subNode.addProperty(new DTProperty("#interrupt-cells", new DTPropNumVal(2)));
					subNode.addProperty(n.getPropertyByName("interrupts"));
					subNode.addProperty(n.getPropertyByName("interrupt-parent"));
				}
			}
			n.addChild(subNode);
			i++;
		}
		return n;
	}