linux/drivers/phy/renesas/r8a779f0-ether-serdes.c

// SPDX-License-Identifier: GPL-2.0
/* Renesas Ethernet SERDES device driver
 *
 * Copyright (C) 2022 Renesas Electronics Corporation
 */

#include <linux/delay.h>
#include <linux/err.h>
#include <linux/iopoll.h>
#include <linux/kernel.h>
#include <linux/of.h>
#include <linux/phy.h>
#include <linux/phy/phy.h>
#include <linux/platform_device.h>
#include <linux/reset.h>

#define R8A779F0_ETH_SERDES_NUM
#define R8A779F0_ETH_SERDES_OFFSET
#define R8A779F0_ETH_SERDES_BANK_SELECT
#define R8A779F0_ETH_SERDES_TIMEOUT_US
#define R8A779F0_ETH_SERDES_NUM_RETRY_LINKUP

struct r8a779f0_eth_serdes_drv_data;
struct r8a779f0_eth_serdes_channel {};

struct r8a779f0_eth_serdes_drv_data {};

/*
 * The datasheet describes initialization procedure without any information
 * about registers' name/bits. So, this is all black magic to initialize
 * the hardware.
 */
static void r8a779f0_eth_serdes_write32(void __iomem *addr, u32 offs, u32 bank, u32 data)
{}

static int
r8a779f0_eth_serdes_reg_wait(struct r8a779f0_eth_serdes_channel *channel,
			     u32 offs, u32 bank, u32 mask, u32 expected)
{}

static int
r8a779f0_eth_serdes_common_init_ram(struct r8a779f0_eth_serdes_drv_data *dd)
{}

static int
r8a779f0_eth_serdes_common_setting(struct r8a779f0_eth_serdes_channel *channel)
{}

static int
r8a779f0_eth_serdes_chan_setting(struct r8a779f0_eth_serdes_channel *channel)
{}

static int
r8a779f0_eth_serdes_chan_speed(struct r8a779f0_eth_serdes_channel *channel)
{}


static int r8a779f0_eth_serdes_monitor_linkup(struct r8a779f0_eth_serdes_channel *channel)
{}

static int r8a779f0_eth_serdes_hw_init(struct r8a779f0_eth_serdes_channel *channel)
{}

static int r8a779f0_eth_serdes_init(struct phy *p)
{}

static int r8a779f0_eth_serdes_exit(struct phy *p)
{}

static int r8a779f0_eth_serdes_hw_init_late(struct r8a779f0_eth_serdes_channel
*channel)
{}

static int r8a779f0_eth_serdes_power_on(struct phy *p)
{}

static int r8a779f0_eth_serdes_set_mode(struct phy *p, enum phy_mode mode,
					int submode)
{}

static int r8a779f0_eth_serdes_set_speed(struct phy *p, int speed)
{}

static const struct phy_ops r8a779f0_eth_serdes_ops =;

static struct phy *r8a779f0_eth_serdes_xlate(struct device *dev,
					     const struct of_phandle_args *args)
{}

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

static int r8a779f0_eth_serdes_probe(struct platform_device *pdev)
{}

static void r8a779f0_eth_serdes_remove(struct platform_device *pdev)
{}

static struct platform_driver r8a779f0_eth_serdes_driver_platform =;
module_platform_driver();
MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();