1*0fdebc5eSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-only 219cfd5c0SLennert Buytenhek /* 319cfd5c0SLennert Buytenhek * arch/arm/mach-orion5x/mpp.c 419cfd5c0SLennert Buytenhek * 519cfd5c0SLennert Buytenhek * MPP functions for Marvell Orion 5x SoCs 619cfd5c0SLennert Buytenhek */ 719cfd5c0SLennert Buytenhek 819cfd5c0SLennert Buytenhek #include <linux/kernel.h> 919cfd5c0SLennert Buytenhek #include <linux/init.h> 10fced80c7SRussell King #include <linux/io.h> 11554cdaefSAndrew Lunn #include <plat/mpp.h> 12c22c2c60SArnd Bergmann #include "orion5x.h" 1319cfd5c0SLennert Buytenhek #include "mpp.h" 14554cdaefSAndrew Lunn #include "common.h" 1519cfd5c0SLennert Buytenhek orion5x_variant(void)16554cdaefSAndrew Lunnstatic unsigned int __init orion5x_variant(void) 1719cfd5c0SLennert Buytenhek { 1819cfd5c0SLennert Buytenhek u32 dev; 1919cfd5c0SLennert Buytenhek u32 rev; 2019cfd5c0SLennert Buytenhek 2119cfd5c0SLennert Buytenhek orion5x_pcie_id(&dev, &rev); 2219cfd5c0SLennert Buytenhek 23e8885cb6SImre Kaloz if (dev == MV88F5181_DEV_ID) 24554cdaefSAndrew Lunn return MPP_F5181_MASK; 2519cfd5c0SLennert Buytenhek 26554cdaefSAndrew Lunn if (dev == MV88F5182_DEV_ID) 27554cdaefSAndrew Lunn return MPP_F5182_MASK; 2819cfd5c0SLennert Buytenhek 29554cdaefSAndrew Lunn if (dev == MV88F5281_DEV_ID) 30554cdaefSAndrew Lunn return MPP_F5281_MASK; 3119cfd5c0SLennert Buytenhek 32554cdaefSAndrew Lunn printk(KERN_ERR "MPP setup: unknown orion5x variant " 33554cdaefSAndrew Lunn "(dev %#x rev %#x)\n", dev, rev); 3419cfd5c0SLennert Buytenhek return 0; 3519cfd5c0SLennert Buytenhek } 3619cfd5c0SLennert Buytenhek orion5x_mpp_conf(unsigned int * mpp_list)37554cdaefSAndrew Lunnvoid __init orion5x_mpp_conf(unsigned int *mpp_list) 3819cfd5c0SLennert Buytenhek { 39554cdaefSAndrew Lunn orion_mpp_conf(mpp_list, orion5x_variant(), 40554cdaefSAndrew Lunn MPP_MAX, ORION5X_DEV_BUS_VIRT_BASE); 4119cfd5c0SLennert Buytenhek } 42