jtag {
compatible = "amlogic, jtag";
status = "okay";
- select = "disable"; /* disable/apao */
- pinctrl-names="jtag_apao_pins";
+ select = "disable"; /* disable/apao/swd_apao */
+ pinctrl-names="jtag_apao_pins", "jtag_swd_apao_pins";
pinctrl-0=<&jtag_apao_pins>;
+ pinctrl-1=<&jtag_swd_apao_pins>;
};
saradc:saradc {
function = "jtag_a";
};
};
+
+ jtag_swd_apao_pins:swd_apao_pin {
+ mux {
+ groups = "swclk",
+ "swdio";
+ function = "sw";
+ };
+ };
};
&pinctrl_periphs {
jtag {
compatible = "amlogic, jtag";
status = "okay";
- select = "disable"; /* disable/apao */
- pinctrl-names="jtag_apao_pins";
+ select = "disable"; /* disable/apao/swd_apao */
+ pinctrl-names="jtag_apao_pins", "jtag_swd_apao_pins";
pinctrl-0=<&jtag_apao_pins>;
+ pinctrl-1=<&jtag_swd_apao_pins>;
};
saradc:saradc {
function = "jtag_a";
};
};
+
+ jtag_swd_apao_pins:swd_apao_pin {
+ mux {
+ groups = "swclk",
+ "swdio";
+ function = "sw";
+ };
+ };
};
&pinctrl_periphs {
return "apao";
case AMLOGIC_JTAG_APEE:
return "apee";
+ case AMLOGIC_SWD_APAO:
+ return "swd_apao";
default:
return "disable";
}
select = AMLOGIC_JTAG_APAO;
else if (!strncmp(s, "apee", 4))
select = AMLOGIC_JTAG_APEE;
+ else if (!strncmp(s, "swd_apao", 8))
+ select = AMLOGIC_SWD_APAO;
else {
pr_err("unknown select: %s\n", s);
select = AMLOGIC_JTAG_DISABLE;
}
/*
- * jtag=[apao|apee]
+ * jtag=[apao|apee|swd_apao]
* jtag=[apao|apee]{,[0|1]}
*
* [apao|apee]: jtag domain
return -EINVAL;
}
break;
+ case AMLOGIC_SWD_APAO:
+ s = pinctrl_lookup_state(jdev->jtag_pinctrl,
+ "jtag_swd_apao_pins");
+ if (IS_ERR_OR_NULL(s)) {
+ dev_err(&jdev->pdev->dev,
+ "could not get swd_apao_pins state\n");
+ return -EINVAL;
+ }
+ ret = pinctrl_select_state(jdev->jtag_pinctrl, s);
+ if (ret) {
+ dev_err(&jdev->pdev->dev, "failed to set pinctrl\n");
+ return -EINVAL;
+ }
+ break;
default:
if (old_select != AMLOGIC_JTAG_DISABLE) {
devm_pinctrl_put(jdev->jtag_pinctrl);
len += sprintf(buf + len, "current select: %s\n\n",
select_to_name(global_select));
len += sprintf(buf + len, "usage:\n");
- len += sprintf(buf + len, " echo [apao|apee] > select\n");
+ len += sprintf(buf + len, " echo [apao|apee|swd_apao] > select\n");
len += sprintf(buf + len, " echo [apao|apee]{,[0|1]} > select\n");
return len;