u-boot/drivers/misc/gdsys_rxaui_ctrl.c
Tom Rini d678a59d2d Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""
When bringing in the series 'arm: dts: am62-beagleplay: Fix Beagleplay
Ethernet"' I failed to notice that b4 noticed it was based on next and
so took that as the base commit and merged that part of next to master.

This reverts commit c8ffd1356d, reversing
changes made to 2ee6f3a5f7.

Reported-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Tom Rini <trini@konsulko.com>
2024-05-19 08:16:36 -06:00

82 lines
1.7 KiB
C

// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2015
* Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de
*
* (C) Copyright 2017
* Mario Six, Guntermann & Drunck GmbH, mario.six@gdsys.cc
*/
#include <common.h>
#include <dm.h>
#include <regmap.h>
#include <misc.h>
struct gdsys_rxaui_ctrl_regs {
u16 gen_cnt;
u16 err_cnt;
u16 succ_cnt;
u16 status;
u16 ctrl_0;
u16 ctrl_1;
};
#define rxaui_ctrl_set(map, member, val) \
regmap_set(map, struct gdsys_rxaui_ctrl_regs, member, val)
#define rxaui_ctrl_get(map, member, valp) \
regmap_get(map, struct gdsys_rxaui_ctrl_regs, member, valp)
struct gdsys_rxaui_ctrl_priv {
struct regmap *map;
bool state;
};
int gdsys_rxaui_set_polarity_inversion(struct udevice *dev, bool val)
{
struct gdsys_rxaui_ctrl_priv *priv = dev_get_priv(dev);
u16 state;
priv->state = !priv->state;
rxaui_ctrl_get(priv->map, ctrl_1, &state);
if (val)
state |= ~0x7800;
else
state &= ~0x7800;
rxaui_ctrl_set(priv->map, ctrl_1, state);
return !priv->state;
}
static const struct misc_ops gdsys_rxaui_ctrl_ops = {
.set_enabled = gdsys_rxaui_set_polarity_inversion,
};
int gdsys_rxaui_ctrl_probe(struct udevice *dev)
{
struct gdsys_rxaui_ctrl_priv *priv = dev_get_priv(dev);
regmap_init_mem(dev_ofnode(dev), &priv->map);
priv->state = false;
return 0;
}
static const struct udevice_id gdsys_rxaui_ctrl_ids[] = {
{ .compatible = "gdsys,rxaui_ctrl" },
{ }
};
U_BOOT_DRIVER(gdsys_rxaui_ctrl) = {
.name = "gdsys_rxaui_ctrl",
.id = UCLASS_MISC,
.ops = &gdsys_rxaui_ctrl_ops,
.of_match = gdsys_rxaui_ctrl_ids,
.probe = gdsys_rxaui_ctrl_probe,
.priv_auto = sizeof(struct gdsys_rxaui_ctrl_priv),
};