linux/drivers/net/dsa/ocelot/seville_vsc9953.c

// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/* Distributed Switch Architecture VSC9953 driver
 * Copyright (C) 2020, Maxim Kochetkov <[email protected]>
 */
#include <linux/platform_device.h>
#include <linux/types.h>
#include <soc/mscc/ocelot_vcap.h>
#include <soc/mscc/ocelot_sys.h>
#include <soc/mscc/ocelot.h>
#include <linux/mdio/mdio-mscc-miim.h>
#include <linux/mod_devicetable.h>
#include <linux/of_mdio.h>
#include <linux/pcs-lynx.h>
#include <linux/dsa/ocelot.h>
#include <linux/iopoll.h>
#include "felix.h"

#define VSC9953_NUM_PORTS

#define VSC9953_VCAP_POLICER_BASE
#define VSC9953_VCAP_POLICER_MAX
#define VSC9953_VCAP_POLICER_BASE2
#define VSC9953_VCAP_POLICER_MAX2

#define VSC9953_PORT_MODE_SERDES

static const u32 vsc9953_port_modes[VSC9953_NUM_PORTS] =;

static const u32 vsc9953_ana_regmap[] =;

static const u32 vsc9953_qs_regmap[] =;

static const u32 vsc9953_vcap_regmap[] =;

static const u32 vsc9953_qsys_regmap[] =;

static const u32 vsc9953_rew_regmap[] =;

static const u32 vsc9953_sys_regmap[] =;

static const u32 vsc9953_gcb_regmap[] =;

static const u32 vsc9953_dev_gmii_regmap[] =;

static const u32 *vsc9953_regmap[TARGET_MAX] =;

/* Addresses are relative to the device's base address */
static const struct resource vsc9953_resources[] =;

static const char * const vsc9953_resource_names[TARGET_MAX] =;

static const struct reg_field vsc9953_regfields[REGFIELD_MAX] =;

static const struct vcap_field vsc9953_vcap_es0_keys[] =;

static const struct vcap_field vsc9953_vcap_es0_actions[] =;

static const struct vcap_field vsc9953_vcap_is1_keys[] =;

static const struct vcap_field vsc9953_vcap_is1_actions[] =;

static struct vcap_field vsc9953_vcap_is2_keys[] =;

static struct vcap_field vsc9953_vcap_is2_actions[] =;

static struct vcap_props vsc9953_vcap_props[] =;

#define VSC9953_INIT_TIMEOUT
#define VSC9953_GCB_RST_SLEEP
#define VSC9953_SYS_RAMINIT_SLEEP

static int vsc9953_gcb_soft_rst_status(struct ocelot *ocelot)
{}

static int vsc9953_sys_ram_init_status(struct ocelot *ocelot)
{}


/* CORE_ENA is in SYS:SYSTEM:RESET_CFG
 * MEM_INIT is in SYS:SYSTEM:RESET_CFG
 * MEM_ENA is in SYS:SYSTEM:RESET_CFG
 */
static int vsc9953_reset(struct ocelot *ocelot)
{}

/* Watermark encode
 * Bit 9:   Unit; 0:1, 1:16
 * Bit 8-0: Value to be multiplied with unit
 */
static u16 vsc9953_wm_enc(u16 value)
{}

static u16 vsc9953_wm_dec(u16 wm)
{}

static void vsc9953_wm_stat(u32 val, u32 *inuse, u32 *maxuse)
{}

static const struct ocelot_ops vsc9953_ops =;

static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)
{}

static void vsc9953_mdio_bus_free(struct ocelot *ocelot)
{}

static const struct felix_info seville_info_vsc9953 =;

static int seville_probe(struct platform_device *pdev)
{}

static void seville_remove(struct platform_device *pdev)
{}

static void seville_shutdown(struct platform_device *pdev)
{}

static const struct of_device_id seville_of_match[] =;
MODULE_DEVICE_TABLE(of, seville_of_match);

static struct platform_driver seville_vsc9953_driver =;
module_platform_driver();

MODULE_DESCRIPTION();
MODULE_LICENSE();