cregit-Linux how code gets into the kernel

Release 4.16 drivers/net/dsa/microchip/ksz_priv.h

/*
 * Microchip KSZ series switch common definitions
 *
 * Copyright (C) 2017
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef __KSZ_PRIV_H

#define __KSZ_PRIV_H

#include <linux/kernel.h>
#include <linux/mutex.h>
#include <linux/phy.h>
#include <linux/etherdevice.h>
#include <net/dsa.h>

#include "ksz_9477_reg.h"

struct ksz_io_ops;


struct vlan_table {
	
u32 table[3];
};


struct ksz_device {
	
struct dsa_switch *ds;
	
struct ksz_platform_data *pdata;
	
const char *name;

	
struct mutex reg_mutex;		/* register access */
	
struct mutex stats_mutex;	/* status access */
	
struct mutex alu_mutex;		/* ALU access */
	
struct mutex vlan_mutex;	/* vlan access */
	
const struct ksz_io_ops *ops;

	
struct device *dev;

	
void *priv;

	/* chip specific data */
	
u32 chip_id;
	
int num_vlans;
	
int num_alus;
	
int num_statics;
	
int cpu_port;			/* port connected to CPU */
	
int cpu_ports;			/* port bitmap can be cpu port */
	
int port_cnt;

	
struct vlan_table *vlan_cache;

	
u64 mib_value[TOTAL_SWITCH_COUNTER_NUM];
};


struct ksz_io_ops {
	
int (*read8)(struct ksz_device *dev, u32 reg, u8 *value);
	
int (*read16)(struct ksz_device *dev, u32 reg, u16 *value);
	
int (*read24)(struct ksz_device *dev, u32 reg, u32 *value);
	
int (*read32)(struct ksz_device *dev, u32 reg, u32 *value);
	
int (*write8)(struct ksz_device *dev, u32 reg, u8 value);
	
int (*write16)(struct ksz_device *dev, u32 reg, u16 value);
	
int (*write24)(struct ksz_device *dev, u32 reg, u32 value);
	
int (*write32)(struct ksz_device *dev, u32 reg, u32 value);
	
int (*phy_read16)(struct ksz_device *dev, int addr, int reg,
			  u16 *value);
	
int (*phy_write16)(struct ksz_device *dev, int addr, int reg,
			   u16 value);
};

struct ksz_device *ksz_switch_alloc(struct device *base,
				    const struct ksz_io_ops *ops, void *priv);
int ksz_switch_detect(struct ksz_device *dev);
int ksz_switch_register(struct ksz_device *dev);
void ksz_switch_remove(struct ksz_device *dev);


static inline int ksz_read8(struct ksz_device *dev, u32 reg, u8 *val) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->read8(dev, reg, val); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh56100.00%1100.00%
Total56100.00%1100.00%


static inline int ksz_read16(struct ksz_device *dev, u32 reg, u16 *val) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->read16(dev, reg, val); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh56100.00%1100.00%
Total56100.00%1100.00%


static inline int ksz_read24(struct ksz_device *dev, u32 reg, u32 *val) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->read24(dev, reg, val); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh56100.00%1100.00%
Total56100.00%1100.00%


static inline int ksz_read32(struct ksz_device *dev, u32 reg, u32 *val) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->read32(dev, reg, val); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh56100.00%1100.00%
Total56100.00%1100.00%


static inline int ksz_write8(struct ksz_device *dev, u32 reg, u8 value) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->write8(dev, reg, value); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh55100.00%1100.00%
Total55100.00%1100.00%


static inline int ksz_write16(struct ksz_device *dev, u32 reg, u16 value) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->write16(dev, reg, value); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh55100.00%1100.00%
Total55100.00%1100.00%


static inline int ksz_write24(struct ksz_device *dev, u32 reg, u32 value) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->write24(dev, reg, value); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh55100.00%1100.00%
Total55100.00%1100.00%


static inline int ksz_write32(struct ksz_device *dev, u32 reg, u32 value) { int ret; mutex_lock(&dev->reg_mutex); ret = dev->ops->write32(dev, reg, value); mutex_unlock(&dev->reg_mutex); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh55100.00%1100.00%
Total55100.00%1100.00%


static inline void ksz_pread8(struct ksz_device *dev, int port, int offset, u8 *data) { ksz_read8(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh36100.00%1100.00%
Total36100.00%1100.00%


static inline void ksz_pread16(struct ksz_device *dev, int port, int offset, u16 *data) { ksz_read16(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh36100.00%1100.00%
Total36100.00%1100.00%


static inline void ksz_pread32(struct ksz_device *dev, int port, int offset, u32 *data) { ksz_read32(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh36100.00%1100.00%
Total36100.00%1100.00%


static inline void ksz_pwrite8(struct ksz_device *dev, int port, int offset, u8 data) { ksz_write8(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh35100.00%1100.00%
Total35100.00%1100.00%


static inline void ksz_pwrite16(struct ksz_device *dev, int port, int offset, u16 data) { ksz_write16(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh35100.00%1100.00%
Total35100.00%1100.00%


static inline void ksz_pwrite32(struct ksz_device *dev, int port, int offset, u32 data) { ksz_write32(dev, PORT_CTRL_ADDR(port, offset), data); }

Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh35100.00%1100.00%
Total35100.00%1100.00%

#endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Woojung Huh1032100.00%1100.00%
Total1032100.00%1100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.