From b7700518d9a2276137e51c7ed8de8373a43007f9 Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Mon, 23 Aug 2010 21:49:20 -0300 Subject: [PATCH] atspi-trim: utility to set the crystal trimming capacitors. - atrf/tools/Makefile: added atspi-trim - atrf/tools/atspi-trim/Makefile, atrf/tools/atspi-trim/atspi-trim.c: show and adjust the capacitors to trim the crystal oscillator - atrf/tools/atspi-rssi/atspi-rssi.c: removed left-over FROM_DEV and TO_DEV --- atrf/tools/Makefile | 2 +- atrf/tools/atspi-rssi/atspi-rssi.c | 4 -- atrf/tools/atspi-trim/Makefile | 21 ++++++++++ atrf/tools/atspi-trim/atspi-trim.c | 62 ++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 atrf/tools/atspi-trim/Makefile create mode 100644 atrf/tools/atspi-trim/atspi-trim.c diff --git a/atrf/tools/Makefile b/atrf/tools/Makefile index 6a0c95f..3c52c03 100644 --- a/atrf/tools/Makefile +++ b/atrf/tools/Makefile @@ -11,6 +11,6 @@ # -DIRS=atspi-id atspi-reset atspi-rssi +DIRS=atspi-id atspi-reset atspi-rssi atspi-trim include ../../Makefile.recurse diff --git a/atrf/tools/atspi-rssi/atspi-rssi.c b/atrf/tools/atspi-rssi/atspi-rssi.c index 610fb10..421f16e 100644 --- a/atrf/tools/atspi-rssi/atspi-rssi.c +++ b/atrf/tools/atspi-rssi/atspi-rssi.c @@ -21,10 +21,6 @@ #include "atspi.h" -#define FROM_DEV ATSPI_FROM_DEV(0) -#define TO_DEV ATSPI_TO_DEV(0) - - static struct timeval t0; diff --git a/atrf/tools/atspi-trim/Makefile b/atrf/tools/atspi-trim/Makefile new file mode 100644 index 0000000..63a32b6 --- /dev/null +++ b/atrf/tools/atspi-trim/Makefile @@ -0,0 +1,21 @@ +# +# atspi-trim/Makefile - Build the oscillator trim utility +# +# Written 2010 by Werner Almesberger +# Copyright 2010 Werner Almesberger +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# + + +F32XBASE = ../../../../f32xbase + +MAIN = atspi-trim + +include $(F32XBASE)/lib/Makefile.common + +CFLAGS += -I../../fw/include -I../include +LDLIBS += -L../lib -latspi diff --git a/atrf/tools/atspi-trim/atspi-trim.c b/atrf/tools/atspi-trim/atspi-trim.c new file mode 100644 index 0000000..6497926 --- /dev/null +++ b/atrf/tools/atspi-trim/atspi-trim.c @@ -0,0 +1,62 @@ +/* + * atspi-trim/atspi-trim.c - AF86RF230 oscillator trim utility + * + * Written 2010 by Werner Almesberger + * Copyright 2010 Werner Almesberger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + */ + + +#include +#include +#include +#include + +#include "at86rf230.h" +#include "atspi/ep0.h" +#include "atspi.h" + + +static void usage(const char *name) +{ + fprintf(stderr, "%s [trim_value]\n", name); + exit(1); +} + + +int main(int argc, const char **argv) +{ + usb_dev_handle *dev; + int trim = -1; + char *end; + + switch (argc) { + case 1: + break; + case 2: + trim = strtoul(argv[1], &end, 0); + if (*end || trim > 15) + usage(*argv); + break; + default: + usage(*argv); + } + + dev = atspi_open(); + if (!dev) + return 1; + + if (trim == -1) { + trim = atspi_reg_read(dev, REG_XOSC_CTRL) & XTAL_TRIM_MASK; + printf("%d (%d.%d pF)\n", trim, trim*3/10, trim*3 % 10); + } else { + atspi_reg_write(dev, REG_XOSC_CTRL, + (XTAL_MODE_INT << XTAL_MODE_SHIFT) | trim); + } + + return 0; +}