cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mdio-bitbang.h (1338B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __LINUX_MDIO_BITBANG_H
      3#define __LINUX_MDIO_BITBANG_H
      4
      5#include <linux/phy.h>
      6
      7struct module;
      8
      9struct mdiobb_ctrl;
     10
     11struct mdiobb_ops {
     12	struct module *owner;
     13
     14	/* Set the Management Data Clock high if level is one,
     15	 * low if level is zero.
     16	 */
     17	void (*set_mdc)(struct mdiobb_ctrl *ctrl, int level);
     18
     19	/* Configure the Management Data I/O pin as an input if
     20	 * "output" is zero, or an output if "output" is one.
     21	 */
     22	void (*set_mdio_dir)(struct mdiobb_ctrl *ctrl, int output);
     23
     24	/* Set the Management Data I/O pin high if value is one,
     25	 * low if "value" is zero.  This may only be called
     26	 * when the MDIO pin is configured as an output.
     27	 */
     28	void (*set_mdio_data)(struct mdiobb_ctrl *ctrl, int value);
     29
     30	/* Retrieve the state Management Data I/O pin. */
     31	int (*get_mdio_data)(struct mdiobb_ctrl *ctrl);
     32};
     33
     34struct mdiobb_ctrl {
     35	const struct mdiobb_ops *ops;
     36	unsigned int override_op_c22;
     37	u8 op_c22_read;
     38	u8 op_c22_write;
     39};
     40
     41int mdiobb_read(struct mii_bus *bus, int phy, int reg);
     42int mdiobb_write(struct mii_bus *bus, int phy, int reg, u16 val);
     43
     44/* The returned bus is not yet registered with the phy layer. */
     45struct mii_bus *alloc_mdio_bitbang(struct mdiobb_ctrl *ctrl);
     46
     47/* The bus must already have been unregistered. */
     48void free_mdio_bitbang(struct mii_bus *bus);
     49
     50#endif