enum armada_xp_variant { V_MV78230 = BIT(0), V_MV78260 = BIT(1), V_MV78460 = BIT(2), V_MV78230_PLUS = (V_MV78230 | V_MV78260 | V_MV78460), V_MV78260_PLUS = (V_MV78260 | V_MV78460), V_98DX3236 = BIT(3), V_98DX3336 = BIT(4), V_98DX4251 = BIT(5), V_98DX3236_PLUS = (V_98DX3236 | V_98DX3336 | V_98DX4251), }; static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { MPP_MODE(0, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txclkout", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d0", V_MV78230_PLUS)), MPP_MODE(1, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd0", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d1", V_MV78230_PLUS)), MPP_MODE(2, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd1", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d2", V_MV78230_PLUS)), MPP_MODE(3, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd2", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d3", V_MV78230_PLUS)), MPP_MODE(4, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS),
static void __iomem *mpp_base; static int armada_375_mpp_ctrl_get(unsigned pid, unsigned long *config) { return default_mpp_ctrl_get(mpp_base, pid, config); } static int armada_375_mpp_ctrl_set(unsigned pid, unsigned long config) { return default_mpp_ctrl_set(mpp_base, pid, config); } static struct mvebu_mpp_mode mv88f6720_mpp_modes[] = { MPP_MODE(0, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "dev", "ad2"), MPP_FUNCTION(0x2, "spi0", "cs1"), MPP_FUNCTION(0x3, "spi1", "cs1"), MPP_FUNCTION(0x5, "nand", "io2")), MPP_MODE(1, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "dev", "ad3"), MPP_FUNCTION(0x2, "spi0", "mosi"), MPP_FUNCTION(0x3, "spi1", "mosi"), MPP_FUNCTION(0x5, "nand", "io3")), MPP_MODE(2, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "dev", "ad4"), MPP_FUNCTION(0x2, "ptp", "evreq"), MPP_FUNCTION(0x3, "led", "c0"), MPP_FUNCTION(0x4, "audio", "sdi"), MPP_FUNCTION(0x5, "nand", "io4"),
static int armada_xp_mpp_ctrl_set(unsigned pid, unsigned long config) { return default_mpp_ctrl_set(mpp_base, pid, config); } enum armada_xp_variant { V_MV78230 = BIT(0), V_MV78260 = BIT(1), V_MV78460 = BIT(2), V_MV78230_PLUS = (V_MV78230 | V_MV78260 | V_MV78460), V_MV78260_PLUS = (V_MV78260 | V_MV78460), }; static struct mvebu_mpp_mode armada_xp_mpp_modes[] = { MPP_MODE(0, "mpp0", armada_xp_mpp_ctrl, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txclko", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d0", V_MV78230_PLUS)), MPP_MODE(1, "mpp1", armada_xp_mpp_ctrl, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd0", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d1", V_MV78230_PLUS)), MPP_MODE(2, "mpp2", armada_xp_mpp_ctrl, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd1", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d2", V_MV78230_PLUS)), MPP_MODE(3, "mpp3", armada_xp_mpp_ctrl, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS), MPP_VAR_FUNCTION(0x1, "ge0", "txd2", V_MV78230_PLUS), MPP_VAR_FUNCTION(0x4, "lcd", "d3", V_MV78230_PLUS)), MPP_MODE(4, "mpp4", armada_xp_mpp_ctrl, MPP_VAR_FUNCTION(0x0, "gpio", NULL, V_MV78230_PLUS),
static void __iomem *mpp_base; static int armada_370_mpp_ctrl_get(unsigned pid, unsigned long *config) { return default_mpp_ctrl_get(mpp_base, pid, config); } static int armada_370_mpp_ctrl_set(unsigned pid, unsigned long config) { return default_mpp_ctrl_set(mpp_base, pid, config); } static struct mvebu_mpp_mode mv88f6710_mpp_modes[] = { MPP_MODE(0, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "uart0", "rxd")), MPP_MODE(1, MPP_FUNCTION(0x0, "gpo", NULL), MPP_FUNCTION(0x1, "uart0", "txd")), MPP_MODE(2, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "i2c0", "sck"), MPP_FUNCTION(0x2, "uart0", "txd")), MPP_MODE(3, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "i2c0", "sda"), MPP_FUNCTION(0x2, "uart0", "rxd")), MPP_MODE(4, MPP_FUNCTION(0x0, "gpio", NULL), MPP_FUNCTION(0x1, "cpu_pd", "vdd")),
#include <linux/of_device.h> #include <linux/pinctrl/pinctrl.h> #include "pinctrl-mvebu.h" enum { V_88F6920 = BIT(0), V_88F6925 = BIT(1), V_88F6928 = BIT(2), V_88F6920_PLUS = (V_88F6920 | V_88F6925 | V_88F6928), V_88F6925_PLUS = (V_88F6925 | V_88F6928), }; static struct mvebu_mpp_mode armada_39x_mpp_modes[] = { MPP_MODE(0, MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), MPP_VAR_FUNCTION(1, "ua0", "rxd", V_88F6920_PLUS)), MPP_MODE(1, MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), MPP_VAR_FUNCTION(1, "ua0", "txd", V_88F6920_PLUS)), MPP_MODE(2, MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), MPP_VAR_FUNCTION(1, "i2c0", "sck", V_88F6920_PLUS)), MPP_MODE(3, MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), MPP_VAR_FUNCTION(1, "i2c0", "sda", V_88F6920_PLUS)), MPP_MODE(4, MPP_VAR_FUNCTION(0, "gpio", NULL, V_88F6920_PLUS), MPP_VAR_FUNCTION(2, "ua1", "txd", V_88F6920_PLUS), MPP_VAR_FUNCTION(3, "ua0", "rts", V_88F6920_PLUS), MPP_VAR_FUNCTION(7, "smi", "mdc", V_88F6920_PLUS)),