Features Download
From: Antti Palosaari <crope <at> iki.fi>
Subject: [PATCH 00/16 STAGING] Mirics MSi3101 SDR Dongle driver
Newsgroups: gmane.linux.drivers.video-input-infrastructure
Date: Wednesday 7th August 2013 18:51:31 UTC (over 4 years ago)
It is driver for MSi3101 USB SDR designed by Mirics. I will pull-request
that soon for the Kernel 3.12 staging. It is not ready for mainline as
there is multiple issues. Biggest issues are; missing API controls and
stream format conversions should be implemented by libv4l2.

That driver is MSi3101 design, which consists of two chips: 1) USB ADC
called MSi2500 and RF-tuner called MSi001. So I will split that to the
two parts later...

USB ADC is a state of the art in the reverse-engineering as I was not
able to get documentation or other needed info, gah :-( Anyhow, it was
quite interesting as a point of learn the first USB ADC I have seen.
Biggest challenge was to discover how to calculate ADC sampling rate.
It was a typical Fractional-N PLL as all these are nowadays. First I
calculated sampling rates by the driver, after that brute forced PLL
registers with a different values and look what kind of data rate it is
outputting :) Nice trick - but took a lot of time.
Re-engineering such USB ADC is still a little bit easier than typical
DTV demodulator in my experience.

Another, not so hard, issue to mention was understand different stream
formats. Chip seems to offer multiple formats, best one I found seems to
offer even 14-bit resolution.

Special thanks to University Oulu HAM club, Oulun Teekkarien Radiokerho,
OH8TA, for the support I received. You rule!

Antti Palosaari (16):
  Mirics MSi3101 SDR Dongle driver
  msi3101: sample is correct term for sample
  msi3101: fix sampling rate calculation
  msi3101: add sampling mode control
  msi3101: enhance sampling results
  msi3101: fix stream re-start halt
  msi3101: add 2040:d300 Hauppauge WinTV 133559 LF
  msi3101: add debug dump for unknown stream data
  msi3101: correct ADC sampling rate calc a little
  msi3101: improve tuner synth calc step size
  msi3101: add support for stream format "252" I+Q per frame
  msi3101: init bits 23:20 on PLL register
  msi3101: fix overflow in freq setting
  msi3101: add stream format 336 I+Q pairs per frame
  msi3101: changes for tuner PLL freq limits
  msi3101: a lot of small cleanups

 drivers/staging/media/Kconfig               |    2 +
 drivers/staging/media/Makefile              |    1 +
 drivers/staging/media/msi3101/Kconfig       |    3 +
 drivers/staging/media/msi3101/Makefile      |    1 +
 drivers/staging/media/msi3101/sdr-msi3101.c | 1822
 5 files changed, 1829 insertions(+)
 create mode 100644 drivers/staging/media/msi3101/Kconfig
 create mode 100644 drivers/staging/media/msi3101/Makefile
 create mode 100644 drivers/staging/media/msi3101/sdr-msi3101.c

CD: 17ms