Commit 76cf5527 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski

wrc_ptp.c: enable PPS output after successful mode setting in Master/Gm mode,…

wrc_ptp.c: enable PPS output after successful mode setting in Master/Gm mode, added wrc_ptp_get_mode()
parent 9c5bcfdf
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "timer.h" #include "timer.h"
#include "softpll_ng.h" #include "softpll_ng.h"
#include "wrc_ptp.h" #include "wrc_ptp.h"
#include "pps_gen.h"
static RunTimeOpts rtOpts = { static RunTimeOpts rtOpts = {
.ifaceName = { "wr1" }, .ifaceName = { "wr1" },
...@@ -47,7 +48,7 @@ static RunTimeOpts rtOpts = { ...@@ -47,7 +48,7 @@ static RunTimeOpts rtOpts = {
static PtpPortDS *ptpPortDS; static PtpPortDS *ptpPortDS;
static PtpClockDS ptpClockDS; static PtpClockDS ptpClockDS;
static int ptp_enabled = 0; static int ptp_enabled = 0, ptp_mode = WRC_MODE_UNKNOWN;
int wrc_ptp_init() int wrc_ptp_init()
{ {
...@@ -79,6 +80,8 @@ int wrc_ptp_set_mode(int mode) ...@@ -79,6 +80,8 @@ int wrc_ptp_set_mode(int mode)
{ {
uint32_t start_tics, lock_timeout = 0; uint32_t start_tics, lock_timeout = 0;
ptp_mode = 0;
ptp_enabled = 0; ptp_enabled = 0;
switch(mode) switch(mode)
...@@ -112,6 +115,9 @@ int wrc_ptp_set_mode(int mode) ...@@ -112,6 +115,9 @@ int wrc_ptp_set_mode(int mode)
start_tics = timer_get_tics(); start_tics = timer_get_tics();
mprintf("Locking PLL"); mprintf("Locking PLL");
pps_gen_enable_output(0);
while(!spll_check_lock(0) && lock_timeout) while(!spll_check_lock(0) && lock_timeout)
{ {
timer_delay(TICS_PER_SECOND); timer_delay(TICS_PER_SECOND);
...@@ -126,10 +132,20 @@ int wrc_ptp_set_mode(int mode) ...@@ -126,10 +132,20 @@ int wrc_ptp_set_mode(int mode)
return -EINTR; return -EINTR;
} }
} }
if(mode == WRC_MODE_MASTER || mode == WRC_MODE_GM)
pps_gen_enable_output(1);
mprintf("\n"); mprintf("\n");
ptp_mode = mode;
return 0; return 0;
} }
int wrc_ptp_get_mode()
{
return ptp_mode;
}
int wrc_ptp_start() int wrc_ptp_start()
{ {
ptpPortDS->linkUP = FALSE; ptpPortDS->linkUP = FALSE;
......
#ifndef __WRC_PTP_H #ifndef __WRC_PTP_H
#define __WRC_PTP_H #define __WRC_PTP_H
#define WRC_MODE_GM 0 #define WRC_MODE_UNKNOWN 0
#define WRC_MODE_MASTER 1 #define WRC_MODE_GM 1
#define WRC_MODE_SLAVE 2 #define WRC_MODE_MASTER 2
#define WRC_MODE_SLAVE 3
int wrc_ptp_init(); int wrc_ptp_init();
int wrc_ptp_set_mode(int mode); int wrc_ptp_set_mode(int mode);
int wrc_ptp_get_mode();
int wrc_ptp_start(); int wrc_ptp_start();
int wrc_ptp_stop(); int wrc_ptp_stop();
int wrc_ptp_update(); int wrc_ptp_update();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment