Skip to content

Commit

Permalink
net: dsa: microchip: ptp: lan937x: Enable periodic output in LED pins
Browse files Browse the repository at this point in the history
There is difference in implementation of per_out pins between KSZ9563
and LAN937x. In KSZ9563, Timestamping control register (0x052C) bit 6,
if 1 - timestamp input and 0 - trigger output. But it is opposite for
LAN937x 1 - trigger output and 0 - timestamp input.
As per per_out gpio pins, KSZ9563 has four Led pins and two dedicated
gpio pins. But in LAN937x dedicated gpio pins are removed instead there
are up to 10 LED pins out of which LED_0 and LED_1 can be mapped to PTP
tou 0, 1 or 2. This patch sets the bit 6 in 0x052C register and
configure the LED override and source register for LAN937x series of
switches alone.

Signed-off-by: Arun Ramadoss <arun.ramadoss@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Arun Ramadoss authored and David S. Miller committed Jan 13, 2023
1 parent d6261f0 commit 168a594
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
26 changes: 26 additions & 0 deletions drivers/net/dsa/microchip/ksz_ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,28 @@

#define KSZ_PTP_INT_START 13

static int ksz_ptp_tou_gpio(struct ksz_device *dev)
{
int ret;

if (!is_lan937x(dev))
return 0;

ret = ksz_rmw32(dev, REG_PTP_CTRL_STAT__4, GPIO_OUT,
GPIO_OUT);
if (ret)
return ret;

ret = ksz_rmw32(dev, REG_SW_GLOBAL_LED_OVR__4, LED_OVR_1 | LED_OVR_2,
LED_OVR_1 | LED_OVR_2);
if (ret)
return ret;

return ksz_rmw32(dev, REG_SW_GLOBAL_LED_SRC__4,
LED_SRC_PTP_GPIO_1 | LED_SRC_PTP_GPIO_2,
LED_SRC_PTP_GPIO_1 | LED_SRC_PTP_GPIO_2);
}

static int ksz_ptp_tou_reset(struct ksz_device *dev, u8 unit)
{
u32 data;
Expand Down Expand Up @@ -224,6 +246,10 @@ static int ksz_ptp_enable_perout(struct ksz_device *dev,
if (ret)
return ret;

ret = ksz_ptp_tou_gpio(dev);
if (ret)
return ret;

ret = ksz_ptp_tou_start(dev, request->index);
if (ret)
return ret;
Expand Down
8 changes: 8 additions & 0 deletions drivers/net/dsa/microchip/ksz_ptp_reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@
#ifndef __KSZ_PTP_REGS_H
#define __KSZ_PTP_REGS_H

#define REG_SW_GLOBAL_LED_OVR__4 0x0120
#define LED_OVR_2 BIT(1)
#define LED_OVR_1 BIT(0)

#define REG_SW_GLOBAL_LED_SRC__4 0x0128
#define LED_SRC_PTP_GPIO_1 BIT(3)
#define LED_SRC_PTP_GPIO_2 BIT(2)

/* 5 - PTP Clock */
#define REG_PTP_CLK_CTRL 0x0500

Expand Down

0 comments on commit 168a594

Please sign in to comment.