|
@@ -259,6 +259,9 @@ static void nmk_prcm_altcx_set_mode(struct nmk_pinctrl *npct,
|
|
|
const struct prcm_gpiocr_altcx_pin_desc *pin_desc;
|
|
|
const u16 *gpiocr_regs;
|
|
|
|
|
|
+ if (!npct->prcm_base)
|
|
|
+ return;
|
|
|
+
|
|
|
if (alt_num > PRCM_IDX_GPIOCR_ALTC_MAX) {
|
|
|
dev_err(npct->dev, "PRCM GPIOCR: alternate-C%i is invalid\n",
|
|
|
alt_num);
|
|
@@ -682,6 +685,9 @@ static int nmk_prcm_gpiocr_get_mode(struct pinctrl_dev *pctldev, int gpio)
|
|
|
const struct prcm_gpiocr_altcx_pin_desc *pin_desc;
|
|
|
const u16 *gpiocr_regs;
|
|
|
|
|
|
+ if (!npct->prcm_base)
|
|
|
+ return NMK_GPIO_ALT_C;
|
|
|
+
|
|
|
for (i = 0; i < npct->soc->npins_altcx; i++) {
|
|
|
if (npct->soc->altcx_pins[i].pin == gpio)
|
|
|
break;
|
|
@@ -1887,9 +1893,12 @@ static int __devinit nmk_pinctrl_probe(struct platform_device *pdev)
|
|
|
"failed to ioremap PRCM registers\n");
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
- } else {
|
|
|
+ } else if (version == PINCTRL_NMK_STN8815) {
|
|
|
dev_info(&pdev->dev,
|
|
|
"No PRCM base, assume no ALT-Cx control is available\n");
|
|
|
+ } else {
|
|
|
+ dev_err(&pdev->dev, "missing PRCM base address\n");
|
|
|
+ return -EINVAL;
|
|
|
}
|
|
|
|
|
|
/*
|