Genuine Funds

2021-02-07 Thread info
My name is Mr.Paolo Galimberti I'm the Executive Director at UBS Investment 
Bank in London Branch , UK. I have a legitimate business proposal worth the sum 
of £90,400,000.00 Great British Pounds to discuss with you, I need your 
sincerity and trust in this business deal. If you are interested, for more 
details kindly contact me via email: (paologalimbe...@ubs-onlinebnk.com)


RE: ***UNCHECKED*** Re: [PATCH] Staging: silabs si4455 serial driver

2020-12-09 Thread Info
> On Wed, Dec 09, 2020 at 12:09:58PM +0100, Info wrote:
> > This is a serial port driver for
> > Silicon Labs Si4455 Sub-GHz transciver.
> > 
> > Signed-off-by: József Horváth 
>
> Note, your From: line does not match this line, so I can't take this.
>
> But:
>
> > ---
> >  .../bindings/staging/serial/silabs,si4455.txt |   39 +

I'll fix this, sorry.

>
> staging drivers need to be self-contained, so this should be here.  It needs 
> to be reviewed by the DT maintainers when moving out of staging.
>
> > index ..aee5c7613b31
> > --- /dev/null
> > +++ b/drivers/staging/si4455/TODO
> > @@ -0,0 +1,3 @@
> > +TODO:
> > +- add variable packet length support
> > +- add firmware patching support in case of Si4455-C2A
>
> Why are these a requirement to get it out of staging?  Why go into staging at 
> all?  Why not go into the 'real' part of the kernel directly?
> What is keeping that from happening today?
>
> These look like new features that you can add later, and shouldn't be a 
> requirement for acceptance into the normal part of the kernel for this 
> driver.  Why have you not tried doing that first?

Yes, you are right. The TODO list is for me, and the driver can get out of 
staging without these.
The curent state of the driver is completly covers my requirements, but I would 
complete these functions int he future.
The main reason for not implementing the firmware patching feature is, 
currently I have no Si4455-C2A in my development system.
My product is based on Si4455-B1A, but I'm waiting for the Si4455-C2A module.

> thanks,
>
> greg k-h


Üdvözlettel / Best regards:
József Horváth



[PATCH] Staging: silabs si4455 serial driver

2020-12-09 Thread Info
This is a serial port driver for
Silicon Labs Si4455 Sub-GHz transciver.

Signed-off-by: József Horváth 
---
 .../bindings/staging/serial/silabs,si4455.txt |   39 +
 drivers/staging/Kconfig   |2 +
 drivers/staging/Makefile  |1 +
 drivers/staging/si4455/Kconfig|8 +
 drivers/staging/si4455/Makefile   |2 +
 drivers/staging/si4455/TODO   |3 +
 drivers/staging/si4455/si4455.c   | 1465 +
 drivers/staging/si4455/si4455_api.h   |   56 +
 8 files changed, 1576 insertions(+)
 create mode 100644
Documentation/devicetree/bindings/staging/serial/silabs,si4455.txt
 create mode 100644 drivers/staging/si4455/Kconfig
 create mode 100644 drivers/staging/si4455/Makefile
 create mode 100644 drivers/staging/si4455/TODO
 create mode 100644 drivers/staging/si4455/si4455.c
 create mode 100644 drivers/staging/si4455/si4455_api.h

diff --git
a/Documentation/devicetree/bindings/staging/serial/silabs,si4455.txt
b/Documentation/devicetree/bindings/staging/serial/silabs,si4455.txt
new file mode 100644
index ..abd659b7b952
--- /dev/null
+++ b/Documentation/devicetree/bindings/staging/serial/silabs,si4455.txt
@@ -0,0 +1,39 @@
+* Silicon Labs Si4455 EASY-TO-USE, LOW-CURRENT OOK/(G)FSK SUB-GHZ
TRANSCEIVER
+
+Required properties:
+- compatible: Should be one of the following:
+  - "silabs,si4455" for Silicon Labs Si4455-B1A or Si4455-C2A (driver
automatically detects the part info),
+  - "silabs,si4455b1a" for Silicon Labs Si4455-B1A,
+  - "silabs,si4455c2a" for Silicon Labs Si4455-C2A,
+- reg: SPI chip select number.
+- interrupts: Specifies the interrupt source of the parent interrupt
+  controller. The format of the interrupt specifier depends on the
+  parent interrupt controller.
+- clocks: phandle to the IC source clock (only external clock source
supported).
+- spi-max-frequency: maximum clock frequency on SPI port
+- shdn-gpios: gpio pin for SDN
+
+Example:
+
+/ {
+   clocks {
+si4455_1_2_osc: si4455_1_2_osc {
+compatible = "fixed-clock";
+#clock-cells = <0>;
+clock-frequency  = <3000>;
+};
+   };
+};
+
+ {
+   si4455: si4455@0 {
+   compatible = "silabs,si4455";
+   reg = <0>;
+   clocks = <_1_2_osc>;
+   interrupt-parent = <>;
+   interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+shdn-gpios = < 26 1>;
+status = "okay";
+spi-max-frequency = <300>;
+   };
+};
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 9b7cb7c5766a..2cf0c9bfe878 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -118,4 +118,6 @@ source "drivers/staging/wfx/Kconfig"
 
 source "drivers/staging/hikey9xx/Kconfig"
 
+source "drivers/staging/si4455/Kconfig"
+
 endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 38226737c9f3..043c63287bc6 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -49,3 +49,4 @@ obj-$(CONFIG_QLGE)+= qlge/
 obj-$(CONFIG_WIMAX)+= wimax/
 obj-$(CONFIG_WFX)  += wfx/
 obj-y  += hikey9xx/
+obj-$(CONFIG_SERIAL_SI4455)+= si4455/
diff --git a/drivers/staging/si4455/Kconfig b/drivers/staging/si4455/Kconfig
new file mode 100644
index ..666f726f2583
--- /dev/null
+++ b/drivers/staging/si4455/Kconfig
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-2.0
+config SERIAL_SI4455
+   tristate "Si4455 support"
+   depends on SPI
+   select SERIAL_CORE
+   help
+ This driver is for Silicon Labs's Si4455 Sub-GHz transciver.
+ Say 'Y' here if you wish to use it as serial port.
diff --git a/drivers/staging/si4455/Makefile
b/drivers/staging/si4455/Makefile
new file mode 100644
index ..1a6474673509
--- /dev/null
+++ b/drivers/staging/si4455/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_SERIAL_SI4455) := si4455.o
diff --git a/drivers/staging/si4455/TODO b/drivers/staging/si4455/TODO
new file mode 100644
index ..aee5c7613b31
--- /dev/null
+++ b/drivers/staging/si4455/TODO
@@ -0,0 +1,3 @@
+TODO:
+- add variable packet length support
+- add firmware patching support in case of Si4455-C2A
diff --git a/drivers/staging/si4455/si4455.c
b/drivers/staging/si4455/si4455.c
new file mode 100644
index ..15f45f19ffdb
--- /dev/null
+++ b/drivers/staging/si4455/si4455.c
@@ -0,0 +1,1465 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2020 József Horváth 
+ *
+ */
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include

[PATCH] Updating the documentation of struct file_system_type

2020-12-01 Thread info
From: Joris Gutjahr 

In the documentation of struct file_system_type,
using the definition of the struct of the kernel v5.10-rc6.

Signed-off-by: Joris Gutjahr 
---
 Documentation/filesystems/vfs.rst | 28 +++-
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/Documentation/filesystems/vfs.rst 
b/Documentation/filesystems/vfs.rst
index ca52c82e5bb5..364ef3dcb649 100644
--- a/Documentation/filesystems/vfs.rst
+++ b/Documentation/filesystems/vfs.rst
@@ -107,22 +107,30 @@ file /proc/filesystems.
 struct file_system_type
 ---
 
-This describes the filesystem.  As of kernel 2.6.39, the following
-members are defined:
+This describes the filesystem.  As of kernel v5.10, the following
+members are defined: (compare: include/linux/fs.h)
 
 .. code-block:: c
 
-   struct file_system_operations {
+   struct file_system_type {
const char *name;
int fs_flags;
+int (*init_fs_context)(struct fs_context*);
+const struct fs_parameter_spec *parameters;
struct dentry *(*mount) (struct file_system_type *, int,
 const char *, void *);
void (*kill_sb) (struct super_block *);
struct module *owner;
struct file_system_type * next;
-   struct list_head fs_supers;
+   struct hlist_head fs_supers;
struct lock_class_key s_lock_key;
struct lock_class_key s_umount_key;
+struct lock_class_key s_vfs_rename_key;
+struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
+
+struct lock_class_key i_lock_key;
+struct lock_class_key i_mutex_key;
+struct lock_class_key i_mutex_dir_key;
};
 
 ``name``
@@ -132,6 +140,12 @@ members are defined:
 ``fs_flags``
various flags (i.e. FS_REQUIRES_DEV, FS_NO_DCACHE, etc.)
 
+``init_fs_context``
+TODO
+
+``fs_parameter_spec``
+TODO
+
 ``mount``
the method to call when a new instance of this filesystem should
be mounted
@@ -148,7 +162,11 @@ members are defined:
 ``next``
for internal VFS use: you should initialize this to NULL
 
-  s_lock_key, s_umount_key: lockdep-specific
+``fs_supers``
+TODO
+
+
+  s_lock_key, s_umount_key, s_vfs_rename_key, s_writers_key, i_lock_key, 
i_mutex_key, i_mutex_dir_key: lockdep-specific
 
 The mount() method has the following arguments:
 
-- 
2.17.1



[no subject]

2020-11-28 Thread info
Hi, I can assist you with loan? how much do you need? & the time you can pay 
back? give us a call now via our direct office line: +18502212989.
Green Rodriguez.
Loan Coordinator,
Equity Loan Company.
Address: 1 Cheshire House, Gorsey Lane, Widnes, Texas, USA.
Website: www.equityloancompany.online


Bei Interesse antworten.

2020-08-07 Thread info
Schöne Grüße,

Mein Name ist MATTIAS SJOBORG, ich bin Schweizer Staatsbürger und (Vorsitzender 
des Vergütungs- und Nominierungsausschusses) von Tethys Petroleum, einem 
multinationalen Ölkonzern mit Sitz in London-England, Großbritannien. Ich bitte 
Sie um Ihre Hilfe, um die Summe von vierzig Millionen Dollar abzurufen, die aus 
zwei Sendungsboxen besteht.

Dieses Geld wurde von der Firma erworben und von einem Diplomaten begleitet und 
korrekt in einer Sicherheitsfirma in Amerika hinterlegt. Mein Grund dafür ist, 
dass ich von der Firma zu lange um meine Ansprüche betrogen wurde, nur weil ich 
kein bin Britisch. Die Kontaktdaten des Diplomaten erhalten Sie, wenn Sie Ihr 
Interesse bekunden, mir zu helfen.

Jede der Schachteln enthält 20 Mio. USD. Für Ihre Hilfe bin ich bereit, 40% an 
Sie freizugeben. Aus Sicherheitsgründen wurde die Sendung als VERTRAULICHE 
DIPLOMATISCHE DOKUMENTE registriert, und ich kann erklären, warum dies so 
erklärt wurde. Denken Sie daran, dass der Diplomat den Inhalt der Sendung nicht 
kennt. Er ist seit einem Monat dort, während ich nach einem zuverlässigen 
Partner suchen möchte. Ich werde das Land verlassen, sobald die Sendung für Sie 
an Sie geliefert wird Private Investitionen und ich haben geschworen, niemals 
nach London zurückzukehren. Bitte, ich brauche Ihre dringende Antwort, bevor 
meine Pläne, das Unternehmen zu verlassen, entdeckt werden.

www.tethyspetroleum.com/tethys/static/EN_US/au_seniormanagement.html

Im Moment ist die sicherste Form der Korrespondenz meine eigene E-Mail-Adresse. 
Bitte antworten Sie im Interesse der Vertraulichkeit nur über meine direkte 
E-Mail-Adresse. Antworten Sie zusammen mit Ihrer direkten Telefon- und 
Faxnummer, unter der ich Sie alternativ erreichen kann.

Bitte, wenn Sie nicht bereit und interessiert sind, mir zu helfen, löschen Sie 
bitte diese E-Mail aus Ihrer E-Mail und tun Sie so, als hätten Sie sie nie 
erhalten.

Freundliche Grüße,
Mr.Mattias Sjoborg
(Vorsitzender des Vergütungs- und Nominierungsausschusses)
Tethys Petroleum.
London, England

-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Bei Interesse antworten.

2020-08-07 Thread info
Schöne Grüße,

Mein Name ist MATTIAS SJOBORG, ich bin Schweizer Staatsbürger und (Vorsitzender 
des Vergütungs- und Nominierungsausschusses) von Tethys Petroleum, einem 
multinationalen Ölkonzern mit Sitz in London-England, Großbritannien. Ich bitte 
Sie um Ihre Hilfe, um die Summe von vierzig Millionen Dollar abzurufen, die aus 
zwei Sendungsboxen besteht.

Dieses Geld wurde von der Firma erworben und von einem Diplomaten begleitet und 
korrekt in einer Sicherheitsfirma in Amerika hinterlegt. Mein Grund dafür ist, 
dass ich von der Firma zu lange um meine Ansprüche betrogen wurde, nur weil ich 
kein bin Britisch. Die Kontaktdaten des Diplomaten erhalten Sie, wenn Sie Ihr 
Interesse bekunden, mir zu helfen.

Jede der Schachteln enthält 20 Mio. USD. Für Ihre Hilfe bin ich bereit, 40% an 
Sie freizugeben. Aus Sicherheitsgründen wurde die Sendung als VERTRAULICHE 
DIPLOMATISCHE DOKUMENTE registriert, und ich kann erklären, warum dies so 
erklärt wurde. Denken Sie daran, dass der Diplomat den Inhalt der Sendung nicht 
kennt. Er ist seit einem Monat dort, während ich nach einem zuverlässigen 
Partner suchen möchte. Ich werde das Land verlassen, sobald die Sendung für Sie 
an Sie geliefert wird Private Investitionen und ich haben geschworen, niemals 
nach London zurückzukehren. Bitte, ich brauche Ihre dringende Antwort, bevor 
meine Pläne, das Unternehmen zu verlassen, entdeckt werden.

www.tethyspetroleum.com/tethys/static/EN_US/au_seniormanagement.html

Im Moment ist die sicherste Form der Korrespondenz meine eigene E-Mail-Adresse. 
Bitte antworten Sie im Interesse der Vertraulichkeit nur über meine direkte 
E-Mail-Adresse. Antworten Sie zusammen mit Ihrer direkten Telefon- und 
Faxnummer, unter der ich Sie alternativ erreichen kann.

Bitte, wenn Sie nicht bereit und interessiert sind, mir zu helfen, löschen Sie 
bitte diese E-Mail aus Ihrer E-Mail und tun Sie so, als hätten Sie sie nie 
erhalten.

Freundliche Grüße,
Mr.Mattias Sjoborg
(Vorsitzender des Vergütungs- und Nominierungsausschusses)
Tethys Petroleum.
London, England

-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Bei Interesse antworten.

2020-08-07 Thread info
Schöne Grüße,

Mein Name ist MATTIAS SJOBORG, ich bin Schweizer Staatsbürger und (Vorsitzender 
des Vergütungs- und Nominierungsausschusses) von Tethys Petroleum, einem 
multinationalen Ölkonzern mit Sitz in London-England, Großbritannien. Ich bitte 
Sie um Ihre Hilfe, um die Summe von vierzig Millionen Dollar abzurufen, die aus 
zwei Sendungsboxen besteht.

Dieses Geld wurde von der Firma erworben und von einem Diplomaten begleitet und 
korrekt in einer Sicherheitsfirma in Amerika hinterlegt. Mein Grund dafür ist, 
dass ich von der Firma zu lange um meine Ansprüche betrogen wurde, nur weil ich 
kein bin Britisch. Die Kontaktdaten des Diplomaten erhalten Sie, wenn Sie Ihr 
Interesse bekunden, mir zu helfen.

Jede der Schachteln enthält 20 Mio. USD. Für Ihre Hilfe bin ich bereit, 40% an 
Sie freizugeben. Aus Sicherheitsgründen wurde die Sendung als VERTRAULICHE 
DIPLOMATISCHE DOKUMENTE registriert, und ich kann erklären, warum dies so 
erklärt wurde. Denken Sie daran, dass der Diplomat den Inhalt der Sendung nicht 
kennt. Er ist seit einem Monat dort, während ich nach einem zuverlässigen 
Partner suchen möchte. Ich werde das Land verlassen, sobald die Sendung für Sie 
an Sie geliefert wird Private Investitionen und ich haben geschworen, niemals 
nach London zurückzukehren. Bitte, ich brauche Ihre dringende Antwort, bevor 
meine Pläne, das Unternehmen zu verlassen, entdeckt werden.

www.tethyspetroleum.com/tethys/static/EN_US/au_seniormanagement.html

Im Moment ist die sicherste Form der Korrespondenz meine eigene E-Mail-Adresse. 
Bitte antworten Sie im Interesse der Vertraulichkeit nur über meine direkte 
E-Mail-Adresse. Antworten Sie zusammen mit Ihrer direkten Telefon- und 
Faxnummer, unter der ich Sie alternativ erreichen kann.

Bitte, wenn Sie nicht bereit und interessiert sind, mir zu helfen, löschen Sie 
bitte diese E-Mail aus Ihrer E-Mail und tun Sie so, als hätten Sie sie nie 
erhalten.

Freundliche Grüße,
Mr.Mattias Sjoborg
(Vorsitzender des Vergütungs- und Nominierungsausschusses)
Tethys Petroleum.
London, England

-- 
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



配信停止を受け付けました

2020-07-27 Thread info


メール配信手続きを受け付けました。

配信停止の手続きまで数日かかりますこと、
何卒ご了承いただきますようお願い申し上げます。


株式会社ジンジブ セミナー事務局

※本メールは「自動返信メール」です。

===

【 Email 】 linux-kernel@vger.kernel.org

===

送信日時:2020/07/28 (Tue) 12:27:41


Nice to Meet you

2020-05-21 Thread info
How are you and your family? my name is Prashant Wong Lin,
i am a native of Hong Kong but resides and a citizen of United Kingdom.

I work with an Oil and Gas Company here in London, tell me about you? Your work 
etc

--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Nice to Meet you

2020-05-18 Thread info
How are you and your family? my name is Prashant Wong Lin,
i am a native of Hong Kong but resides and a citizen of United Kingdom.

I work with an Oil and Gas Company here in London, tell me about you? Your work 
etc

--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Nice to Meet you

2020-05-17 Thread info
How are you and your family? my name is Prashant Wong Lin,
i am a native of Hong Kong but resides and a citizen of United Kingdom.

I work with an Oil and Gas Company here in London, tell me about you? Your work 
etc

--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus



Reply

2020-05-11 Thread info
How are you and how's your family? We know the world is facing an unprecedented 
challenge with communities and economies everywhere affected by the growing 
COVID-19 pandemic.
I am in search of a business partner and a philanthropist, who wants to remain 
anonymous presented by me. My name is Jang SaeJeong ; I am 56 years old from 
the Republic Of Korea. A financial manager with global finance bank in America.
Yes, I contacted you to solicit your assistance in a transfer of multi-millions 
of dollars business that will benefit both of us. As an officer of the bank, I 
cannot be directly connected to this money thus; I am compelled to request your 
assistance, since your last name matched to receive this money into your bank 
account.
I intend to part 35% of this fund to you while 65% will be for me. I do need to 
stress that there is practically no risk involved in this. It is going to be a 
bank to bank transfer because of your last name matched.
Hence, I urge you to respond to this mail and willing to cooperate with me.
Have a nice day and stay safe.


Frissítse fiókját

2019-07-19 Thread info




--
Kérjük, vegye figyelembe, hogy a Webmail-fiókja jelenleg túlterhelt, 
az összes Webmail-fiókot frissítjük. Kérjük, ellenőrizze 
webmailét ma az alábbi linkkel.


https://accountweb.inditioncra.com/6mbopv5i

© 2019 Webmail ellenőrző központ


INQUIRY #0059BHA..

2019-06-14 Thread info
Hello dear,
 
We are in the market for your products after meeting at your stand during last 
expo.
 
Please kindly send us your latest catalog and price list so as to start a new 
project/order as promised during the exhibition. 
 
I would appreciate your response about the above details required so we can 
revert back to you asap.
 
Kind regards
 
Rhema Zoeh


INQUIRY #0059BHA..

2019-06-13 Thread info
Hello dear,
 
We are in the market for your products after meeting at your stand during last 
expo.
 
Please kindly send us your latest catalog and price list so as to start a new 
project/order as promised during the exhibition. 
 
I would appreciate your response about the above details required so we can 
revert back to you asap.
 
Kind regards
 
Rhema Zoeh


FW: AW: Kontakt.

2019-05-30 Thread info
Sehr geehrte Damen und Herren,

ich wende mich an Sie, da ich der Meinung bin, dass sich die von Ihnen auf der 
Webseite angebotenen Produkte ausgezeichnet dazu eignen, im Internet gefördert 
zu werden.
Deshalb möchte ich Ihnen die Tools anbieten, die es erlauben, den Verkauf von 
Ihren Produkten und Dienstleistungen beinahe mit sofortiger Wirkung und auch 
mehrfach zu erhöhen.

Die Firmenangaben beinhalten: Name der Firma, Ansprechpartner, E-mail Adresse, 
Tel. + Fax-Nr., PLZ, Ort, Straße etc. 

1. Gesamtpaket 2019 DE - 1,4 Mio. Firmenadressen ( 1 457 620 ) - 190 € ( bis 
zum 30.05.2019 ) 
2. Gesamtpaket 2019 DE,AT,CH - 1,7 Mio. Firmenadressen ( 1 747 921 ) - 240 € ( 
bis zum 30.05.2019 )
3. Schweiz 2019 ( 187 911 ) - 149 € ( bis zum 30.05.2019 )
4. Österreich 2019 ( 104 000 ) - 149 € ( bis zum 30.05.2019 )

Die Verwendungsmöglichkeiten der Datenbanken sind praktisch unbegrenzt und Sie 
können durch Verwendung der von uns entwickelten 
Programme des personalisierten Versendens von Angeboten u.ä. mittels E-mailing 
bzw. Fax effektive und sichere Werbekampagnen damit durchführen. 

Bitte informieren Sie sich über die weiteren Details einmal unverbindlich auf 
unseren Webseiten: 

http://www.gmcmarketing.top/?page=catalog

Mit freundlichen Grüßen
GMTeam



Good day

2019-05-16 Thread info
Hello,
My name is Isaac. I have a business proposal to share with you.
Please respond if you are interested.
Respectfully,
Isaac


Zdravstvujte Vas interesuyut klientskie bazy dannyh?

2019-04-10 Thread info
Zdravstvujte Vas interesuyut klientskie bazy dannyh?




CAN I TRUST YOU I NEED YOUR ASSISTANCE AND TRUST

2019-04-03 Thread info



INVESTMENT  FOR  PARTNERSHIP.  Can I Trust You  



























My Dear Friend  Can I Trust You.docx
Description: MS-Word 2007 document


My Dear Friend  Can I Trust You.docx
Description: MS-Word 2007 document


New RED Racing Parts: 18% / 20% off and free shipping

2018-12-27 Thread RED Racing Parts (Info)


Dear Rider,

>From the new RED Racing Parts you find spare parts and accessories for road / 
>offroad motorbike and
scooter.
Stickers, ergal / titanium bolts, brake / clutch levers, brake pads, carbon 
fiber parts, racing
coolers, clutches and more...
Excellent quality!

Visit our website on 
https://www.redracingparts.com .

Free shipping and 18% OFF (20% OFF paying with Bitcoin) for today only.


RED Racing Parts Staff




If you found this email useful, please forward it on to your friends.

To unsubscribe our newsletters click here
https://www.redracingparts.com/news/u.php?l=e=cvaidqzxnfcihwm8b9u2linux-ker...@vger.kernel.org




New RED Racing Parts: 10% / 15% off and free shipping

2018-12-05 Thread RED Racing Parts (Info)


Dear Rider,

RED Racing Parts offers the new full line of carbon fiber parts for your 
motorbike.

For road / offroad motorcycles, visit our website on 
https://www.redracingparts.com/english/motorbikesmotorcycles/productsandcomponents/general/intro/carbonfibrefiber.php

For trial motorcycles, visit our website on 
https://www.redracingparts.com/english/motorbikesmotorcycles/productsandcomponents/general/intro/2mCarbonFiberParts.php

Free shipping and 10% OFF (15% OFF paying with Bitcoin) for today only.


RED Racing Parts Staff




If you found this email useful, please forward it on to your friends.

To unsubscribe our newsletters click here
https://www.redracingparts.com/news/u.php?l=e=cvaidqzxnfcihwm8b9u2linux-ker...@vger.kernel.org




New RED Racing Parts: 10% / 15% off and free shipping

2018-12-05 Thread RED Racing Parts (Info)


Dear Rider,

RED Racing Parts offers the new full line of carbon fiber parts for your 
motorbike.

For road / offroad motorcycles, visit our website on 
https://www.redracingparts.com/english/motorbikesmotorcycles/productsandcomponents/general/intro/carbonfibrefiber.php

For trial motorcycles, visit our website on 
https://www.redracingparts.com/english/motorbikesmotorcycles/productsandcomponents/general/intro/2mCarbonFiberParts.php

Free shipping and 10% OFF (15% OFF paying with Bitcoin) for today only.


RED Racing Parts Staff




If you found this email useful, please forward it on to your friends.

To unsubscribe our newsletters click here
https://www.redracingparts.com/news/u.php?l=e=cvaidqzxnfcihwm8b9u2linux-ker...@vger.kernel.org




Investment Lening!

2018-11-19 Thread info
Heb je een lening nodig voor welk doel dan ook??
wij verlenen lening at 3% belangen tarief jaarlijks
Ik kan u helpen met het financieren van leningen voor elk doel 
(zolang er geen sprake is van enige vorm van illegaliteit), 
van € 5.000 (vijfduizend euro) tot slechts € 20 miljoen euro. 
Alle omstandigheden beschouwd. Betaal niets voor maximaal zes maanden!
bedrijf grotere lening zijn ook beschikbaar at 3% belangen tarief.

Do you need a loan for any purpose

Contact Via: in...@topshewoodfinancialservicesinc.com


Investment Lening!

2018-11-19 Thread info
Heb je een lening nodig voor welk doel dan ook??
wij verlenen lening at 3% belangen tarief jaarlijks
Ik kan u helpen met het financieren van leningen voor elk doel 
(zolang er geen sprake is van enige vorm van illegaliteit), 
van € 5.000 (vijfduizend euro) tot slechts € 20 miljoen euro. 
Alle omstandigheden beschouwd. Betaal niets voor maximaal zes maanden!
bedrijf grotere lening zijn ook beschikbaar at 3% belangen tarief.

Do you need a loan for any purpose

Contact Via: in...@topshewoodfinancialservicesinc.com


SPENDE

2018-11-11 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


SPENDE

2018-11-11 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


SPENDE MAVIS WANCZYK

2018-11-11 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


SPENDE MAVIS WANCZYK

2018-11-11 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


SPENDE MAVIS WANCZYK

2018-11-10 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


SPENDE MAVIS WANCZYK

2018-11-10 Thread info
Sehr geehrter Herr/Frau,
Wir freuen uns, Ihnen mitzuteilen, dass Sie ausgewählt wurden, um die Summe zu 
erhalten €2,000,000.00 Euro aus Mitteln der Mavis Wanczyk Hilfe.  Mein Name ist 
Mavis Wanczyk der Gewinner des 758,7 Millionen US-Dollar in der Power Ball 
Lotterie Jackpot als der größte Preis aus einem einzigen Lottoschein in USA.  
Meine Wohltätigkeitsstiftung hat dich ausgewählt, als unsere glücklichen 
Empfänger erhalten die Summe von € 2,000,000.00 EURO. Nehmen Sie dieses Angebot 
an und kontaktieren Sie mich für Weitere Details.


Read Business Letter

2018-10-15 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Read Business Letter

2018-10-15 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Read Business Letter

2018-10-14 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Read Business Letter

2018-10-14 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Read Business Letter

2018-10-14 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Read Business Letter

2018-10-14 Thread info
Steven Peter Walker(Esq)
Stone Chambers, 4 Field Court,
Gray's Inn, London,
WC1R 5EF..
Email: stevenwalkerchamb...@workmail.co.za

Greetings To You,

This is a personal email directed to you and I request that it be 
treated as such. I am Steven Walker, a personal attorney/sole 
executor to the late Engineer Robert M, herein after referred to 
as" my client" I represent the interest of my client killed with 
his immediate family in a fatal motor accident in East London on 
November 5, 2002.and I will like to negotiate the terms of 
investment of resources available to him.

My late client worked as consulting engineer & sub-comptroller 
with Genesis Oil and Gas Consultants Ltd here in the United 
Kingdom and had left behind a deposit of Six Million Eight 
Hundred Thousand British Pounds Sterling only (£6.8million) with 
a finance company. The funds originated from contract 
transactions he executed in his registered area of business. Just 
after his death, I was contacted by the finance house to provide 
his next of kin, reasons been that his deposit agreement contains 
a residuary clause giving his personal attorney express authority 
to nominate the beneficiary to his funds. Unknown to the bank, 
Robert had left no possible trace of any of his close relative 
with me, making all efforts in my part to locate his family 
relative to be unfruitful since his death. In addition, from 
Robert's own story, he was only adopted and his foster parents 
whom he lost in 1976, according to him had no possible trace of 
his real family.

The funds had remained unclaimed since his death, but I had made 
effort writing several letters to the embassy with intent to 
locate any of his extended relatives whom shall be 
claimants/beneficiaries of his abandoned personal estate, and all 
such efforts have been to no avail. More so, I have received 
official letters in the last few weeks suggesting a likely 
proceeding for confiscation of his abandoned personal assets in 
line with existing laws by the bank However, it will interest you 
to know that I discovered that some directors of this finance 
company are making plans already to have this fund to themselves 
only to use the excuse that since I am unable to find a next of 
kin to my late client then the funds should be confiscated, 
meanwhile their intentions is to have the funds retrieved for 
themselves.

I reasoned very professionally and resolved to use a legal means 
to retrieve the abandoned funds, and that is to present the next 
of kin of my deceased client to the bank. This is legally 
possible and would be done in accordance with the laws. On this 
note, I decided to search for a credible person and finding that 
you bear a similar last name, I was urged to contact you, that I 
may, with your consent, present you to the "trustee" bank as my 
late client's surviving family member so as to enable you put up 
a claim to the bank in that capacity as a next of kin of my 
client. I find this to be possible for the fuller reasons that 
you are of the same nationality and you bear a similar last name 
with my late client making it a lot easier for you to put up a 
claim in that capacity. I have all vital documents that would 
confer you the legal right to lay claim to the funds, and it 
would back up your claim. I am willing to make these documents 
available to you so that the proceeds of this bank account valued 
at £6.8million can be paid to you before it is confiscated or 
declared unserviceable to the bank where this huge amount is 
lodged.

I do sincerely sympathize the death of my client but I think that 
it is unprofitable for his funds to be submitted to the 
government of this country or some financial institution. I seek 
your assistance since I have been unable to locate the relatives 
for the past three years now and since no one would come for the 
claim. I seek your consent to present you as the next of kin of 
the deceased since you have the same last name giving you the 
advantage which also makes the claim most credible . In that 
stand, the proceeds of this account can be paid to you. Then, we 
talk about percentage. I know there are others with the same 
surname as my client, but after a little search, my instinct 
tells me to contact you. I shall assemble all the necessary 
documents that would be used to back up your claim.

I guarantee that this will be executed under a legitimate 
arrangement that will protect you from any breach of law. I will 
not fail to bring to your notice that this proposal is hitch-free 
and that you should not entertain any fears as the required 
arrangements have been made for the completion of this transfer. 
As I said, I require only a solemn confidentiality on this. 
Please get in touch via my alternative 
email{stevenwalkerchamb...@workmail.co.za} for better 
confidentiality and if it's okay to you send me your telephone 
and fax numbers to enable us discuss further on this transaction, 
please do not take undue 

Late UN Sec General Kofi Annan

2018-09-21 Thread info . unhd . gov
Dear Well Wishers,
Greetings to all of you and we Thank you, who have work with my late brother 
before in various capacities during his term as the UN Sec General and after, 
once again on behalf of the entire family of Late Kofi Annan, we thank you all 
for all the support and comfort you show to our family during his funeral 
ceremony,we Thank you all and may God bless you all.

I shall be oblige to help you out in any way i can for those of you who still 
have his pending transaction or business with him, am now the head of the 
family with all legal right handed over to me as African traditions demands, i 
shall be in position to help and build further more good relationship as i look 
towards to welcome you home ,

On Behalf of the entire Kofi Annan's Family(Former UN Sec General) we say thank 
you to you all in this time of  our  grievance and tears  

Regards,
Kweku Anna(For the Family)
For the family estate
Accra-Ghana
+233260742368


Late UN Sec General Kofi Annan

2018-09-21 Thread info . unhd . gov
Dear Well Wishers,
Greetings to all of you and we Thank you, who have work with my late brother 
before in various capacities during his term as the UN Sec General and after, 
once again on behalf of the entire family of Late Kofi Annan, we thank you all 
for all the support and comfort you show to our family during his funeral 
ceremony,we Thank you all and may God bless you all.

I shall be oblige to help you out in any way i can for those of you who still 
have his pending transaction or business with him, am now the head of the 
family with all legal right handed over to me as African traditions demands, i 
shall be in position to help and build further more good relationship as i look 
towards to welcome you home ,

On Behalf of the entire Kofi Annan's Family(Former UN Sec General) we say thank 
you to you all in this time of  our  grievance and tears  

Regards,
Kweku Anna(For the Family)
For the family estate
Accra-Ghana
+233260742368


more info

2018-09-05 Thread info
Good day,

I have an interesting business offer for you which will be of immense benefit 
to you. Although this may be hard to believe and thought of as one of the 
numerous online scam but
Please grant me the benefit of doubt and write me to know what this entails, am 
sure you wont regret it. You stand to gain 50% of $27,500,000.00 million USD 
from this.
All conformable documents to back up the claims will be made available to you 
prior to your acceptance. 

Thanks,
Diana Cesar.



more info

2018-09-05 Thread info
Good day,

I have an interesting business offer for you which will be of immense benefit 
to you. Although this may be hard to believe and thought of as one of the 
numerous online scam but
Please grant me the benefit of doubt and write me to know what this entails, am 
sure you wont regret it. You stand to gain 50% of $27,500,000.00 million USD 
from this.
All conformable documents to back up the claims will be made available to you 
prior to your acceptance. 

Thanks,
Diana Cesar.



loan offer

2018-04-20 Thread info
DO YOU NEED FINANCIAL HELP? $5000 to $20,000,000.00 No credit check 

Repaid over 1 year to maximum of 30 years at a low interest rate of 3%. 

Approval in 15-30 minutes Open 7 days a week from 24/7 Service available 

nationwide E-MAIL  globalsolutionfinanc...@yahoo.com


loan offer

2018-04-20 Thread info
DO YOU NEED FINANCIAL HELP? $5000 to $20,000,000.00 No credit check 

Repaid over 1 year to maximum of 30 years at a low interest rate of 3%. 

Approval in 15-30 minutes Open 7 days a week from 24/7 Service available 

nationwide E-MAIL  globalsolutionfinanc...@yahoo.com


INFORMATION......

2017-11-29 Thread Michel info

VIEW THE ATTACHMENT FILE FOR MORE DETAILS !!!

Thanks and Congratulations.
From: Michel Van der Bel
FIFA 2017 Microsoft Online Promotions

Microsoft-4.pdf
Description: Adobe PDF document


INFORMATION......

2017-11-29 Thread Michel info

VIEW THE ATTACHMENT FILE FOR MORE DETAILS !!!

Thanks and Congratulations.
From: Michel Van der Bel
FIFA 2017 Microsoft Online Promotions

Microsoft-4.pdf
Description: Adobe PDF document


Re: Reply Urgent

2017-09-30 Thread Info

Hello,

How are you doing? We have an inheritance of a deceased client with  
your surname. Contact Mr Andrew Bailey by this email address:  
ands...@europe.com with your full names for further information's.  
Thanks for your understanding.


Melissa.
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Re: Reply Urgent

2017-09-30 Thread Info

Hello,

How are you doing? We have an inheritance of a deceased client with  
your surname. Contact Mr Andrew Bailey by this email address:  
ands...@europe.com with your full names for further information's.  
Thanks for your understanding.


Melissa.
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




LEGACY

2017-07-13 Thread INFO

Attn,
We have an inheritance of a deceased client with your surname Contact  
Dr. Gertjan Vlieghe With your: Full Name, Tel Number, Age, Occupation  
and Address through email: d.vlie...@manlymail.net

Dr. Gertjan Vlieghe
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




LEGACY

2017-07-13 Thread INFO

Attn,
We have an inheritance of a deceased client with your surname Contact  
Dr. Gertjan Vlieghe With your: Full Name, Tel Number, Age, Occupation  
and Address through email: d.vlie...@manlymail.net

Dr. Gertjan Vlieghe
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Re: Reply Urgent

2017-06-19 Thread INFO

Hello,

How are you doing? I have been sent to inform you that, We have an  
inheritance of a deceased client with your surname. Contact Mr Andrew  
Bailey Reply Email To: myinf...@gmail.com with your "Full Names" for  
more info.  Thanks for your understanding.


Reply ASAP thank you.

Melissa.
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Re: Reply Urgent

2017-06-19 Thread INFO

Hello,

How are you doing? I have been sent to inform you that, We have an  
inheritance of a deceased client with your surname. Contact Mr Andrew  
Bailey Reply Email To: myinf...@gmail.com with your "Full Names" for  
more info.  Thanks for your understanding.


Reply ASAP thank you.

Melissa.
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Hello Dear,

2017-06-08 Thread info...@ono.com



--
Hello Dear,

My Name is Mrs Mary Joseph and I am contacting you

from my sick bed i want you to help me and invest the sum of $15.5

million dollars to the orphans, i am suffering from CANCER,  my doctor 
has confirm it that i will not stay long before i die, so i want you to 
help me and invest the fund to the orphan so that they will pray for 
me.

if you are ready to carry this operation reply me through this 
mrsmaryjoseph1...@gmail.com


Mrs Marry Joseph
--



Hello Dear,

2017-06-08 Thread info...@ono.com



--
Hello Dear,

My Name is Mrs Mary Joseph and I am contacting you

from my sick bed i want you to help me and invest the sum of $15.5

million dollars to the orphans, i am suffering from CANCER,  my doctor 
has confirm it that i will not stay long before i die, so i want you to 
help me and invest the fund to the orphan so that they will pray for 
me.

if you are ready to carry this operation reply me through this 
mrsmaryjoseph1...@gmail.com


Mrs Marry Joseph
--



Sonderangebot!

2017-05-31 Thread info



Sonderangebot!

2017-05-31 Thread info



Information.

2017-05-06 Thread Info
I want to inquire if you can be our regional representative in your region. It 
would by no Means interfere with your current job. If you are interested please 
contact Mr. Yu Yong
Email: yong...@hblsco.com for more information on the job. I look forward to 
hearing from you.


Sincerely,
Yu Yong.


Information.

2017-05-06 Thread Info
I want to inquire if you can be our regional representative in your region. It 
would by no Means interfere with your current job. If you are interested please 
contact Mr. Yu Yong
Email: yong...@hblsco.com for more information on the job. I look forward to 
hearing from you.


Sincerely,
Yu Yong.


Bestes Darlehen Angebot

2017-03-28 Thread info
Sie suchen ein sehr echtes Darlehen? Zu einem erschwinglichen zinssatz
Innerhalb von 3 bis 5 Tagen verarbeitet. Wurden Sie ständig von Ihnen abgelehnt
Banken und andere Finanzinstitute? Die gute Nachricht ist hier !!! Wir
Bieten Darlehen von $ 5.000,00 Min. Auf $ 5.000.000,00 Max. 3%
Zinsen pro Annun. Darlehen für die Entwicklung von Unternehmen ein 
Wettbewerbsvorteil /
Geschäftsausweitung Wir sind zertifiziert, vertrauenswürdig, zuverlässig, 
effizient,
Dynamische Fastand. Und eine Co-Financier Arbeit
Für Immobilien und jede Art von Unternehmensfinanzierung.

Wir bieten langfristiges Darlehen für maximal 1-30 Jahre.
Wir bieten die folgenden Arten von Darlehen und vieles mehr;
Persönliche Darlehen (unbesicherte Darlehen)
Business-Darlehen (Ungesicherte Darlehen)
Konsolidierungsdarlehen
Kombinationsdarlehen
Renovierung
Bitte, wenn Sie sich freuen und Interesse an unserem Finanzangebot haben
Zögern Sie nicht uns zu kontaktieren

Grüße
Dr.Hans Vermeulen

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus




Bestes Darlehen Angebot

2017-03-28 Thread info
Sie suchen ein sehr echtes Darlehen? Zu einem erschwinglichen zinssatz
Innerhalb von 3 bis 5 Tagen verarbeitet. Wurden Sie ständig von Ihnen abgelehnt
Banken und andere Finanzinstitute? Die gute Nachricht ist hier !!! Wir
Bieten Darlehen von $ 5.000,00 Min. Auf $ 5.000.000,00 Max. 3%
Zinsen pro Annun. Darlehen für die Entwicklung von Unternehmen ein 
Wettbewerbsvorteil /
Geschäftsausweitung Wir sind zertifiziert, vertrauenswürdig, zuverlässig, 
effizient,
Dynamische Fastand. Und eine Co-Financier Arbeit
Für Immobilien und jede Art von Unternehmensfinanzierung.

Wir bieten langfristiges Darlehen für maximal 1-30 Jahre.
Wir bieten die folgenden Arten von Darlehen und vieles mehr;
Persönliche Darlehen (unbesicherte Darlehen)
Business-Darlehen (Ungesicherte Darlehen)
Konsolidierungsdarlehen
Kombinationsdarlehen
Renovierung
Bitte, wenn Sie sich freuen und Interesse an unserem Finanzangebot haben
Zögern Sie nicht uns zu kontaktieren

Grüße
Dr.Hans Vermeulen

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus




Attention...

2017-02-04 Thread info

Good Day,

My names are Marris Guerrero,i am the personal secretary to Dr.Gertjan  
Vlieghe.We have an inheritance of a deceased client with your  
surname.Kindly contact

Dr.Gertjan Vlieghe via email (service.info.vlie...@yandex.com) for more info.

Marris Guerrero
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Attention...

2017-02-04 Thread info

Good Day,

My names are Marris Guerrero,i am the personal secretary to Dr.Gertjan  
Vlieghe.We have an inheritance of a deceased client with your  
surname.Kindly contact

Dr.Gertjan Vlieghe via email (service.info.vlie...@yandex.com) for more info.

Marris Guerrero
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




LOCATE YOUR INHERITANCE

2017-01-11 Thread info

Hello,

I'm Dr. Gertjan Vlieghe (Bank Of England),we have an inheritance of a  
deceased client with your surname Contact Dr. Gertjan Vlieghe With  
your: Full Name, Tel Number, Age, Occupation and Address through  
email: d.vlie...@yahoo.com


Dr. Gertjan Vlieghe
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




LOCATE YOUR INHERITANCE

2017-01-11 Thread info

Hello,

I'm Dr. Gertjan Vlieghe (Bank Of England),we have an inheritance of a  
deceased client with your surname Contact Dr. Gertjan Vlieghe With  
your: Full Name, Tel Number, Age, Occupation and Address through  
email: d.vlie...@yahoo.com


Dr. Gertjan Vlieghe
--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Hello your urgent response is needed!

2017-01-10 Thread info
Hello, how are you doing? I want to inform you that, we have an  
inheritance of a deceased client with your surname. Reply via email:  
andbail11.bai...@yandex.com

with your full names for info. Contact Andrew Bailey



--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Hello your urgent response is needed!

2017-01-10 Thread info
Hello, how are you doing? I want to inform you that, we have an  
inheritance of a deceased client with your surname. Reply via email:  
andbail11.bai...@yandex.com

with your full names for info. Contact Andrew Bailey



--
Correo Corporativo Hospital Universitario del Valle E.S.E
***

"Estamos re-dimensionandonos para crecer!"

**




Aw

2016-09-25 Thread info
Benötigen Sie eine Finanzierung?
Haben Sie einen Kredit für geschäftliche oder persönliche Bedürfnisse und 
Projektfinanzierung benötigen?
Möchten Sie Ihr Unternehmen zu refinanzieren?
Unser Unternehmen ist in den Vereinigten Staaten und Europa.
Wir bieten Ihnen ein Darlehen für jede Person oder Gesellschaft mit einem 
Anteil von 3% pro Jahr.
Für weitere Informationen, kontaktieren Sie uns bitte per E-Mail: 
info.accessf...@gmail.com


Aw

2016-09-25 Thread info
Benötigen Sie eine Finanzierung?
Haben Sie einen Kredit für geschäftliche oder persönliche Bedürfnisse und 
Projektfinanzierung benötigen?
Möchten Sie Ihr Unternehmen zu refinanzieren?
Unser Unternehmen ist in den Vereinigten Staaten und Europa.
Wir bieten Ihnen ein Darlehen für jede Person oder Gesellschaft mit einem 
Anteil von 3% pro Jahr.
Für weitere Informationen, kontaktieren Sie uns bitte per E-Mail: 
info.accessf...@gmail.com


Darlehen

2016-07-17 Thread Info . de
Willkommen bei Xpress Credit Service
Sie benötigenein Darlehenjeder Art?Wenn jadas unten stehende Formularausfüllen:

Name:
Land:
Telefon:
monatliches Einkommen:
Darlehensbetrag :
Dauer:
ZweckfürDarlehen:

  Holen Sie sich zurück, damit wirfortfahren können.
Grüße.
Manager.

Xpress Credit Service.
13East20th Street
L.A.California10016
xpresscredit...@outlook.com


Darlehen

2016-07-17 Thread Info . de
Willkommen bei Xpress Credit Service
Sie benötigenein Darlehenjeder Art?Wenn jadas unten stehende Formularausfüllen:

Name:
Land:
Telefon:
monatliches Einkommen:
Darlehensbetrag :
Dauer:
ZweckfürDarlehen:

  Holen Sie sich zurück, damit wirfortfahren können.
Grüße.
Manager.

Xpress Credit Service.
13East20th Street
L.A.California10016
xpresscredit...@outlook.com


[media 2/5] drop backstabbing drivers

2016-04-05 Thread info
From: Буди Романто, AreMa Inc <knightri...@are.ma>

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc <knightri...@are.ma>
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada <tsk...@gmail.com>
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_t

[media 4/5] Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

tda2014x.c  TDA20142PX-Q3PE
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2PX-BCUD, PT3
nm131.c NM131, NM130, NM120 PX-Q3PE
mxl301rf.c  MxL301RFPT3

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/Kconfig  |  21 ++-
 drivers/media/tuners/Makefile |   4 +-
 drivers/media/tuners/mxl301rf.c   | 230 
 drivers/media/tuners/mxl301rf.h   |  23 +++
 drivers/media/tuners/nm131.c  | 252 +++
 drivers/media/tuners/nm131.h  |  13 ++
 drivers/media/tuners/qm1d1c004x.c | 247 ++
 drivers/media/tuners/qm1d1c004x.h |  23 +++
 drivers/media/tuners/tda2014x.c   | 358 ++
 drivers/media/tuners/tda2014x.h   |  13 ++
 10 files changed, 1180 insertions(+), 4 deletions(-)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h
 create mode 100644 drivers/media/tuners/nm131.c
 create mode 100644 drivers/media/tuners/nm131.h
 create mode 100644 drivers/media/tuners/qm1d1c004x.c
 create mode 100644 drivers/media/tuners/qm1d1c004x.h
 create mode 100644 drivers/media/tuners/tda2014x.c
 create mode 100644 drivers/media/tuners/tda2014x.h

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 05998f0..a7f044b 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -271,10 +271,25 @@ config MEDIA_TUNER_MXL301RF
help
  MaxLinear MxL301RF OFDM tuner driver.
 
-config MEDIA_TUNER_QM1D1C0042
-   tristate "Sharp QM1D1C0042 tuner"
+config MEDIA_TUNER_QM1D1C004X
+   tristate "Sharp QM1D1C004x tuner"
depends on MEDIA_SUPPORT && I2C
default m if !MEDIA_SUBDRV_AUTOSELECT
help
- Sharp QM1D1C0042 trellis coded 8PSK tuner driver.
+ Sharp trellis coded 8PSK tuner driver.
+ Supported chips: QM1D1C0042, QM1D1C0045
+
+config MEDIA_TUNER_NM131
+   tristate "Newport Media tuners NM131, NM130 and NM120"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ Newport Media NM131, NM130 and NM120 tuner driver.
+
+config MEDIA_TUNER_TDA2014X
+   tristate "NXP Semiconductors TDA2014x tuner"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ NXP Semiconductor TDA2014x tuner driver.
 endmenu
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 06a9ab6..6a2b52a 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -39,8 +39,10 @@ obj-$(CONFIG_MEDIA_TUNER_FC0013) += fc0013.o
 obj-$(CONFIG_MEDIA_TUNER_IT913X) += it913x.o
 obj-$(CONFIG_MEDIA_TUNER_R820T) += r820t.o
 obj-$(CONFIG_MEDIA_TUNER_MXL301RF) += mxl301rf.o
-obj-$(CONFIG_MEDIA_TUNER_QM1D1C0042) += qm1d1c0042.o
+obj-$(CONFIG_MEDIA_TUNER_QM1D1C004X) += qm1d1c004x.o
 obj-$(CONFIG_MEDIA_TUNER_M88RS6000T) += m88rs6000t.o
+obj-$(CONFIG_MEDIA_TUNER_NM131) += nm131.o
+obj-$(CONFIG_MEDIA_TUNER_TDA2014X) += tda2014x.o
 
 ccflags-y += -I$(srctree)/drivers/media/dvb-core
 ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..6d5f4f0
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,230 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  *buf= kzalloc(len + 1, GFP_KERNEL);
+   int ret;
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   if (!buf)
+   return -ENOMEM;
+   buf[0]  = slvadr;
+   memcpy(buf + 1, dat, len);
+   ret = i2c_transfer(d->adapter, msg, 1);
+   kfree(buf);
+   return  ret == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8  *buf= kzalloc(len + 1, GFP_KERNEL);
+   int ret;
+
+   if (!buf)
+   return -ENOMEM;
+   buf[0]  = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   ret = mxl301rf_w(fe, 0xFE, buf, len + 1);
+   

[media 3/5] Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
  return 1049480 + 38360 * fno;   /* BS   
*/
+   else if (fno < 24)
+   return 1613000 + 4 * (fno - 12);/* CS110 right  
*/
+   return 1593000 + 4 * (fno - 24);/* CS110 left   
*/
+   }
+
+   void s_kHz(u32 *f)
+   {
+   *f =*f > 300 ? fno2kHz(14)  :   /* max kHz, CNN 
*/
+   *f >= 1049480 ? *f  :   /* min real kHz 
*/
+   *f > 48 ? fno2kHz(4):   /* BS11 etc.
*/
+   fno2kHz(*f - 1);
+   }
+
+   u32 fno2Hz(u32 fno)
+   {
+   return  (fno > 112 ? 557 : 93 + 6 * fno + (fno < 12 ? 0 : fno < 
17 ? 2 : fno < 63 ? 0 : 2)) * 100 + 142857;
+   }
+
+   void t_Hz(u32 *f)
+   {
+   *f =*f >= 9000  ? *f:   /* 
real_freq Hz */
+   *f > 255? fno2Hz(77):   /* NHK  
*/
+   *f > 127? fno2Hz(*f - 128)  :   /* 
freqno (IO#) */
+   *f > 63 ? (*f -= 64,/* CATV 
*/
+   *f > 22 ? fno2Hz(*f - 1):   /* 
C23-C62  */
+   *f > 12 ? fno2Hz(*f - 10)   :   /* 
C13-C22  */
+   fno2Hz(77)) :
+   *f > 62 ? fno2Hz(77):
+   *f > 12 ? fno2Hz(*f + 50)   :   /* 
13-62*/
+   *f > 3  ? fno2Hz(*f +  9)   :   /*  
4-12*/
+   *f  ? fno2Hz(*f -  1)   :   /*  1-3 
*/
+   fno2Hz(77);
+   }
+   struct i2c_client   *d  = fe->demodulator_priv;
+   enum fe_status  *festat = i2c_get_clientdata(d);
+   u16 set_id  = fe->dtv_property_cache.stream_id,
+   i   = 999;
+   u8  data[16];
+
+   if (!retune)/* once is enough */
+   return 0;
+   *festat = 0;
+   if (fe->dtv_property_cache.delivery_system == SYS_ISDBT)
+   goto ISDBT;
+
+   s_kHz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   if  ((tc90522_r(d, 0xC3, data, 1), !(data[0] & 0x10))   
&&  /* locked   */
+   (tc90522_r(d, 0xCE, data, 2), *(u16 *)data != 0)
&&  /* valid TSID   */
+   tc90522_r(d, 0xC3, data, 1) 
&&
+   tc90522_r(d, 0xCE, data, 16))
+   break;
+   msleep_interruptible(5);
+   }
+   if (!i)
+   goto ERR;
+   for (i = 0; i < 8; i++) {
+   u16 tsid = tc90522_n2int(data + i*2, 2);
+
+   if ((tsid == set_id || set_id == i) &&
+   tc90522_w(d, 0x8F, tsid >> 8)   &&
+   tc90522_w(d, 0x90, tsid & 0xFF) &&
+   tc90522_r(d, 0xE6, data, 2) &&
+   tc90522_n2int(data, 2) == tsid)
+   goto LOCK;
+   }
+   goto ERR;
+ISDBT:
+   t_Hz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   boolretryov,
+   lock0,
+   lock1;
+   if (!tc90522_r(d, 0x80, data, 1) || !tc90522_r(d, 0xB0, data + 
1, 1))
+   break;
+   retryov = data[0] & 0b1000 ? true : false;
+   lock0   = data[0] & 0b1000 ? false : true;
+   lock1   = data[1] & 0b1000 ? true : false;
+   if (lock0 && lock1) {
+LOCK:
+   *festat = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_LOCK;
+   *stat = *festat;
+   return 0;
+   }
+   if (retryov)
+   break;
+   msleep_interruptible(1);
+   }
+ERR:
+   *stat = *festat;
+   return -ETIMEDOUT;
+}
+
+static struct dvb_frontend_ops tc90522_ops = {
+   .info = {
+   .name = TC90522_MODNAME,
+   .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO | 
FE_CAN_QAM_AUTO | FE_CAN_MULTISTREAM |
+   FE_CAN_TRANSMISSION_MODE_AUTO | 
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
+   .frequency_min  = 1,/* actual limit settings are 
set by .tune */
+   .frequency_max  = 77000,
+   },
+   

[media 2/5] drop backstabbing drivers

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada 
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_tsid[0].val = (fe->dtv_property_cache.stream_id & 0xff00) >> 8;
-   

[media 4/5] Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

tda2014x.c  TDA20142PX-Q3PE
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2PX-BCUD, PT3
nm131.c NM131, NM130, NM120 PX-Q3PE
mxl301rf.c  MxL301RFPT3

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/Kconfig  |  21 ++-
 drivers/media/tuners/Makefile |   4 +-
 drivers/media/tuners/mxl301rf.c   | 230 
 drivers/media/tuners/mxl301rf.h   |  23 +++
 drivers/media/tuners/nm131.c  | 252 +++
 drivers/media/tuners/nm131.h  |  13 ++
 drivers/media/tuners/qm1d1c004x.c | 247 ++
 drivers/media/tuners/qm1d1c004x.h |  23 +++
 drivers/media/tuners/tda2014x.c   | 358 ++
 drivers/media/tuners/tda2014x.h   |  13 ++
 10 files changed, 1180 insertions(+), 4 deletions(-)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h
 create mode 100644 drivers/media/tuners/nm131.c
 create mode 100644 drivers/media/tuners/nm131.h
 create mode 100644 drivers/media/tuners/qm1d1c004x.c
 create mode 100644 drivers/media/tuners/qm1d1c004x.h
 create mode 100644 drivers/media/tuners/tda2014x.c
 create mode 100644 drivers/media/tuners/tda2014x.h

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 05998f0..a7f044b 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -271,10 +271,25 @@ config MEDIA_TUNER_MXL301RF
help
  MaxLinear MxL301RF OFDM tuner driver.
 
-config MEDIA_TUNER_QM1D1C0042
-   tristate "Sharp QM1D1C0042 tuner"
+config MEDIA_TUNER_QM1D1C004X
+   tristate "Sharp QM1D1C004x tuner"
depends on MEDIA_SUPPORT && I2C
default m if !MEDIA_SUBDRV_AUTOSELECT
help
- Sharp QM1D1C0042 trellis coded 8PSK tuner driver.
+ Sharp trellis coded 8PSK tuner driver.
+ Supported chips: QM1D1C0042, QM1D1C0045
+
+config MEDIA_TUNER_NM131
+   tristate "Newport Media tuners NM131, NM130 and NM120"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ Newport Media NM131, NM130 and NM120 tuner driver.
+
+config MEDIA_TUNER_TDA2014X
+   tristate "NXP Semiconductors TDA2014x tuner"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ NXP Semiconductor TDA2014x tuner driver.
 endmenu
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 06a9ab6..6a2b52a 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -39,8 +39,10 @@ obj-$(CONFIG_MEDIA_TUNER_FC0013) += fc0013.o
 obj-$(CONFIG_MEDIA_TUNER_IT913X) += it913x.o
 obj-$(CONFIG_MEDIA_TUNER_R820T) += r820t.o
 obj-$(CONFIG_MEDIA_TUNER_MXL301RF) += mxl301rf.o
-obj-$(CONFIG_MEDIA_TUNER_QM1D1C0042) += qm1d1c0042.o
+obj-$(CONFIG_MEDIA_TUNER_QM1D1C004X) += qm1d1c004x.o
 obj-$(CONFIG_MEDIA_TUNER_M88RS6000T) += m88rs6000t.o
+obj-$(CONFIG_MEDIA_TUNER_NM131) += nm131.o
+obj-$(CONFIG_MEDIA_TUNER_TDA2014X) += tda2014x.o
 
 ccflags-y += -I$(srctree)/drivers/media/dvb-core
 ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..6d5f4f0
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,230 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  *buf= kzalloc(len + 1, GFP_KERNEL);
+   int ret;
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   if (!buf)
+   return -ENOMEM;
+   buf[0]  = slvadr;
+   memcpy(buf + 1, dat, len);
+   ret = i2c_transfer(d->adapter, msg, 1);
+   kfree(buf);
+   return  ret == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8  *buf= kzalloc(len + 1, GFP_KERNEL);
+   int ret;
+
+   if (!buf)
+   return -ENOMEM;
+   buf[0]  = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   ret = mxl301rf_w(fe, 0xFE, buf, len + 1);
+   kfree(buf);
+   return ret;
+}
+
+u8 mxl301rf_r(struct 

[media 3/5] Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
S   
*/
+   else if (fno < 24)
+   return 1613000 + 4 * (fno - 12);/* CS110 right  
*/
+   return 1593000 + 4 * (fno - 24);/* CS110 left   
*/
+   }
+
+   void s_kHz(u32 *f)
+   {
+   *f =*f > 300 ? fno2kHz(14)  :   /* max kHz, CNN 
*/
+   *f >= 1049480 ? *f  :   /* min real kHz 
*/
+   *f > 48 ? fno2kHz(4):   /* BS11 etc.
*/
+   fno2kHz(*f - 1);
+   }
+
+   u32 fno2Hz(u32 fno)
+   {
+   return  (fno > 112 ? 557 : 93 + 6 * fno + (fno < 12 ? 0 : fno < 
17 ? 2 : fno < 63 ? 0 : 2)) * 100 + 142857;
+   }
+
+   void t_Hz(u32 *f)
+   {
+   *f =*f >= 9000  ? *f:   /* 
real_freq Hz */
+   *f > 255? fno2Hz(77):   /* NHK  
*/
+   *f > 127? fno2Hz(*f - 128)  :   /* 
freqno (IO#) */
+   *f > 63 ? (*f -= 64,/* CATV 
*/
+   *f > 22 ? fno2Hz(*f - 1):   /* 
C23-C62  */
+   *f > 12 ? fno2Hz(*f - 10)   :   /* 
C13-C22  */
+   fno2Hz(77)) :
+   *f > 62 ? fno2Hz(77):
+   *f > 12 ? fno2Hz(*f + 50)   :   /* 
13-62*/
+   *f > 3  ? fno2Hz(*f +  9)   :   /*  
4-12*/
+   *f  ? fno2Hz(*f -  1)   :   /*  1-3 
*/
+   fno2Hz(77);
+   }
+   struct i2c_client   *d  = fe->demodulator_priv;
+   enum fe_status  *festat = i2c_get_clientdata(d);
+   u16 set_id  = fe->dtv_property_cache.stream_id,
+   i   = 999;
+   u8  data[16];
+
+   if (!retune)/* once is enough */
+   return 0;
+   *festat = 0;
+   if (fe->dtv_property_cache.delivery_system == SYS_ISDBT)
+   goto ISDBT;
+
+   s_kHz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   if  ((tc90522_r(d, 0xC3, data, 1), !(data[0] & 0x10))   
&&  /* locked   */
+   (tc90522_r(d, 0xCE, data, 2), *(u16 *)data != 0)
&&  /* valid TSID   */
+   tc90522_r(d, 0xC3, data, 1) 
&&
+   tc90522_r(d, 0xCE, data, 16))
+   break;
+   msleep_interruptible(5);
+   }
+   if (!i)
+   goto ERR;
+   for (i = 0; i < 8; i++) {
+   u16 tsid = tc90522_n2int(data + i*2, 2);
+
+   if ((tsid == set_id || set_id == i) &&
+   tc90522_w(d, 0x8F, tsid >> 8)   &&
+   tc90522_w(d, 0x90, tsid & 0xFF) &&
+   tc90522_r(d, 0xE6, data, 2) &&
+   tc90522_n2int(data, 2) == tsid)
+   goto LOCK;
+   }
+   goto ERR;
+ISDBT:
+   t_Hz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   boolretryov,
+   lock0,
+   lock1;
+   if (!tc90522_r(d, 0x80, data, 1) || !tc90522_r(d, 0xB0, data + 
1, 1))
+   break;
+   retryov = data[0] & 0b1000 ? true : false;
+   lock0   = data[0] & 0b1000 ? false : true;
+   lock1   = data[1] & 0b1000 ? true : false;
+   if (lock0 && lock1) {
+LOCK:
+   *festat = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_LOCK;
+   *stat = *festat;
+   return 0;
+   }
+   if (retryov)
+   break;
+   msleep_interruptible(1);
+   }
+ERR:
+   *stat = *festat;
+   return -ETIMEDOUT;
+}
+
+static struct dvb_frontend_ops tc90522_ops = {
+   .info = {
+   .name = TC90522_MODNAME,
+   .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO | 
FE_CAN_QAM_AUTO | FE_CAN_MULTISTREAM |
+   FE_CAN_TRANSMISSION_MODE_AUTO | 
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
+   .frequency_min  = 1,/* actual limit settings are 
set by .tune */
+   .frequency_max  = 77000,
+   },
+   .get_frontend_algo = tc90522_get_frontend_algo,
+   .read_snr

[media 5/5] Bridge driver for PT3, PX-Q3PE & PX-BCUD

2016-04-05 Thread info
rty_cache.delivery_system == SYS_ISDBS ? 's' : 't');
+   return IS_ERR(adap->kthread) ? PTR_ERR(adap->kthread) : 
adap->card->dma(adap, true);
+}
+
+struct ptx_card *ptx_alloc(struct pci_dev *pdev, u8 *name, u8 adapn, u32 
sz_card_priv, u32 sz_adap_priv,
+   void (*lnb)(struct ptx_card *, bool))
+{
+   u8 i;
+   struct ptx_card *card = kzalloc(sizeof(struct ptx_card) + sz_card_priv 
+ adapn *
+   (sizeof(struct ptx_adap) + 
sz_adap_priv), GFP_KERNEL);
+   if (!card)
+   return NULL;
+   card->priv  = sz_card_priv ? [1] : NULL;
+   card->adap  = (struct ptx_adap *)((u8 *)[1] + sz_card_priv);
+   card->pdev  = pdev;
+   card->adapn = adapn;
+   card->name  = name;
+   card->lnbON = true;
+   card->lnb   = lnb;
+   for (i = 0; i < card->adapn; i++) {
+   struct ptx_adap *p = >adap[i];
+
+   p->card = card;
+   p->priv = sz_adap_priv ? (u8 *)>adap[card->adapn] + i * 
sz_adap_priv : NULL;
+   }
+   if (pci_enable_device(pdev) ||
+   pci_set_dma_mask(pdev, DMA_BIT_MASK(32))||
+   pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) ||
+   pci_request_regions(pdev, name)) {
+   kfree(card);
+   return NULL;
+   }
+   pci_set_drvdata(pdev, card);
+   return card;
+}
+
+int ptx_i2c_add_adapter(struct ptx_card *card, const struct i2c_algorithm 
*algo)
+{
+   struct i2c_adapter *i2c = >i2c;
+
+   i2c->algo   = algo;
+   i2c->dev.parent = >pdev->dev;
+   strcpy(i2c->name, card->name);
+   i2c_set_adapdata(i2c, card);
+   mutex_init(>lock);
+   return  i2c_add_adapter(i2c);
+}
+
+void ptx_unregister_subdev(struct i2c_client *c)
+{
+   if (!c)
+   return;
+   if (c->dev.driver)
+   module_put(c->dev.driver->owner);
+   i2c_unregister_device(c);
+}
+
+struct i2c_client *ptx_register_subdev(struct i2c_adapter *i2c, struct 
dvb_frontend *fe, u16 adr, char *name)
+{
+   struct i2c_client   *c;
+   struct i2c_board_info   info = {
+   .platform_data  = fe,
+   .addr   = adr,
+   };
+
+   strlcpy(info.type, name, I2C_NAME_SIZE);
+   request_module("%s", info.type);
+   c = i2c_new_device(i2c, );
+   if (!c)
+   return NULL;
+   if (c->dev.driver && try_module_get(c->dev.driver->owner))
+   return c;
+   ptx_unregister_subdev(c);
+   return NULL;
+}
+
+void ptx_unregister_fe(struct dvb_frontend *fe)
+{
+   if (!fe)
+   return;
+   if (fe->frontend_priv)
+   dvb_unregister_frontend(fe);
+   ptx_unregister_subdev(fe->tuner_priv);
+   ptx_unregister_subdev(fe->demodulator_priv);
+   kfree(fe);
+}
+
+struct dvb_frontend *ptx_register_fe(struct i2c_adapter *i2c, struct 
dvb_adapter *dvb, const struct ptx_subdev_info *info)
+{
+   struct dvb_frontend *fe = kzalloc(sizeof(struct dvb_frontend), 
GFP_KERNEL);
+
+   if (!fe)
+   return  NULL;
+   fe->demodulator_priv= ptx_register_subdev(i2c, fe, 
info->demod_addr, info->demod_name);
+   fe->tuner_priv  = ptx_register_subdev(i2c, fe, 
info->tuner_addr, info->tuner_name);
+   if (info->type)
+   fe->ops.delsys[0] = info->type;
+   if (!fe->demodulator_priv || !fe->tuner_priv || (dvb && 
dvb_register_frontend(dvb, fe))) {
+   ptx_unregister_fe(fe);
+   return  NULL;
+   }
+   return fe;
+}
+
+void ptx_unregister_adap(struct ptx_card *card)
+{
+   int i   = card->adapn - 1;
+   struct ptx_adap *adap   = card->adap + i;
+
+   for (; i >= 0; i--, adap--) {
+   ptx_unregister_fe(adap->fe);
+   if (adap->demux.dmx.close)
+   adap->demux.dmx.close(>demux.dmx);
+   if (adap->dmxdev.filter)
+   dvb_dmxdev_release(>dmxdev);
+   if (adap->demux.cnt_storage)
+   dvb_dmx_release(>demux);
+   if (adap->dvb.name)
+   dvb_unregister_adapter(>dvb);
+   }
+   i2c_del_adapter(>i2c);
+   pci_release_regions(card->pdev);
+   pci_set_drvdata(card->pdev, NULL);
+   pci_disable_device(card->pdev);
+   kfree(card);
+}
+
+int ptx_register_adap(struct ptx_card *card, const struct ptx_subdev_info 
*info,
+   int (*thread)(void *), int (*dma)(struct ptx_adap *, 
bool))
+{
+   struct ptx_adap *adap;
+   short   adap_no[DVB_MAX_ADAPTERS] = {};
+   u8  i;
+   int  

[media 1/5] Raise adapter number limit

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

The current limit is too low for latest cards with 8+ tuners on a single slot.
IMHO, the most appropriate minimum default is 16.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-core/Kconfig  | 4 ++--
 drivers/media/dvb-core/dvbdev.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-core/Kconfig b/drivers/media/dvb-core/Kconfig
index fa7a249..91732a9 100644
--- a/drivers/media/dvb-core/Kconfig
+++ b/drivers/media/dvb-core/Kconfig
@@ -5,7 +5,7 @@
 config DVB_MAX_ADAPTERS
int "maximum number of DVB/ATSC adapters"
depends on DVB_CORE
-   default 8
+   default 16
range 1 255
help
  Maximum number of DVB/ATSC adapters. Increasing this number
@@ -13,7 +13,7 @@ config DVB_MAX_ADAPTERS
  if a much lower number of DVB/ATSC adapters is present.
  Only values in the range 4-32 are tested.
 
- If you are unsure about this, use the default value 8
+ If you are unsure about this, use the default value 16
 
 config DVB_DYNAMIC_MINORS
bool "Dynamic DVB minor allocation"
diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
index 4aff7bd..ae4e0a2 100644
--- a/drivers/media/dvb-core/dvbdev.h
+++ b/drivers/media/dvb-core/dvbdev.h
@@ -34,7 +34,7 @@
 #if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0
   #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS
 #else
-  #define DVB_MAX_ADAPTERS 8
+  #define DVB_MAX_ADAPTERS 16
 #endif
 
 #define DVB_UNSET (-1)
-- 
2.7.4



[media 5/5] Bridge driver for PT3, PX-Q3PE & PX-BCUD

2016-04-05 Thread info
gt;kthread) ? PTR_ERR(adap->kthread) : 
adap->card->dma(adap, true);
+}
+
+struct ptx_card *ptx_alloc(struct pci_dev *pdev, u8 *name, u8 adapn, u32 
sz_card_priv, u32 sz_adap_priv,
+   void (*lnb)(struct ptx_card *, bool))
+{
+   u8 i;
+   struct ptx_card *card = kzalloc(sizeof(struct ptx_card) + sz_card_priv 
+ adapn *
+   (sizeof(struct ptx_adap) + 
sz_adap_priv), GFP_KERNEL);
+   if (!card)
+   return NULL;
+   card->priv  = sz_card_priv ? [1] : NULL;
+   card->adap  = (struct ptx_adap *)((u8 *)[1] + sz_card_priv);
+   card->pdev  = pdev;
+   card->adapn = adapn;
+   card->name  = name;
+   card->lnbON = true;
+   card->lnb   = lnb;
+   for (i = 0; i < card->adapn; i++) {
+   struct ptx_adap *p = >adap[i];
+
+   p->card = card;
+   p->priv = sz_adap_priv ? (u8 *)>adap[card->adapn] + i * 
sz_adap_priv : NULL;
+   }
+   if (pci_enable_device(pdev) ||
+   pci_set_dma_mask(pdev, DMA_BIT_MASK(32))||
+   pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) ||
+   pci_request_regions(pdev, name)) {
+   kfree(card);
+   return NULL;
+   }
+   pci_set_drvdata(pdev, card);
+   return card;
+}
+
+int ptx_i2c_add_adapter(struct ptx_card *card, const struct i2c_algorithm 
*algo)
+{
+   struct i2c_adapter *i2c = >i2c;
+
+   i2c->algo   = algo;
+   i2c->dev.parent = >pdev->dev;
+   strcpy(i2c->name, card->name);
+   i2c_set_adapdata(i2c, card);
+   mutex_init(>lock);
+   return  i2c_add_adapter(i2c);
+}
+
+void ptx_unregister_subdev(struct i2c_client *c)
+{
+   if (!c)
+   return;
+   if (c->dev.driver)
+   module_put(c->dev.driver->owner);
+   i2c_unregister_device(c);
+}
+
+struct i2c_client *ptx_register_subdev(struct i2c_adapter *i2c, struct 
dvb_frontend *fe, u16 adr, char *name)
+{
+   struct i2c_client   *c;
+   struct i2c_board_info   info = {
+   .platform_data  = fe,
+   .addr   = adr,
+   };
+
+   strlcpy(info.type, name, I2C_NAME_SIZE);
+   request_module("%s", info.type);
+   c = i2c_new_device(i2c, );
+   if (!c)
+   return NULL;
+   if (c->dev.driver && try_module_get(c->dev.driver->owner))
+   return c;
+   ptx_unregister_subdev(c);
+   return NULL;
+}
+
+void ptx_unregister_fe(struct dvb_frontend *fe)
+{
+   if (!fe)
+   return;
+   if (fe->frontend_priv)
+   dvb_unregister_frontend(fe);
+   ptx_unregister_subdev(fe->tuner_priv);
+   ptx_unregister_subdev(fe->demodulator_priv);
+   kfree(fe);
+}
+
+struct dvb_frontend *ptx_register_fe(struct i2c_adapter *i2c, struct 
dvb_adapter *dvb, const struct ptx_subdev_info *info)
+{
+   struct dvb_frontend *fe = kzalloc(sizeof(struct dvb_frontend), 
GFP_KERNEL);
+
+   if (!fe)
+   return  NULL;
+   fe->demodulator_priv= ptx_register_subdev(i2c, fe, 
info->demod_addr, info->demod_name);
+   fe->tuner_priv  = ptx_register_subdev(i2c, fe, 
info->tuner_addr, info->tuner_name);
+   if (info->type)
+   fe->ops.delsys[0] = info->type;
+   if (!fe->demodulator_priv || !fe->tuner_priv || (dvb && 
dvb_register_frontend(dvb, fe))) {
+   ptx_unregister_fe(fe);
+   return  NULL;
+   }
+   return fe;
+}
+
+void ptx_unregister_adap(struct ptx_card *card)
+{
+   int i   = card->adapn - 1;
+   struct ptx_adap *adap   = card->adap + i;
+
+   for (; i >= 0; i--, adap--) {
+   ptx_unregister_fe(adap->fe);
+   if (adap->demux.dmx.close)
+   adap->demux.dmx.close(>demux.dmx);
+   if (adap->dmxdev.filter)
+   dvb_dmxdev_release(>dmxdev);
+   if (adap->demux.cnt_storage)
+   dvb_dmx_release(>demux);
+   if (adap->dvb.name)
+   dvb_unregister_adapter(>dvb);
+   }
+   i2c_del_adapter(>i2c);
+   pci_release_regions(card->pdev);
+   pci_set_drvdata(card->pdev, NULL);
+   pci_disable_device(card->pdev);
+   kfree(card);
+}
+
+int ptx_register_adap(struct ptx_card *card, const struct ptx_subdev_info 
*info,
+   int (*thread)(void *), int (*dma)(struct ptx_adap *, 
bool))
+{
+   struct ptx_adap *adap;
+   short   adap_no[DVB_MAX_ADAPTERS] = {};
+   u8  i;
+   int err;
+
+   card->thread= thread;
+   card->dma   = dma;
+   for (i =

[media 1/5] Raise adapter number limit

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

The current limit is too low for latest cards with 8+ tuners on a single slot.
IMHO, the most appropriate minimum default is 16.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-core/Kconfig  | 4 ++--
 drivers/media/dvb-core/dvbdev.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-core/Kconfig b/drivers/media/dvb-core/Kconfig
index fa7a249..91732a9 100644
--- a/drivers/media/dvb-core/Kconfig
+++ b/drivers/media/dvb-core/Kconfig
@@ -5,7 +5,7 @@
 config DVB_MAX_ADAPTERS
int "maximum number of DVB/ATSC adapters"
depends on DVB_CORE
-   default 8
+   default 16
range 1 255
help
  Maximum number of DVB/ATSC adapters. Increasing this number
@@ -13,7 +13,7 @@ config DVB_MAX_ADAPTERS
  if a much lower number of DVB/ATSC adapters is present.
  Only values in the range 4-32 are tested.
 
- If you are unsure about this, use the default value 8
+ If you are unsure about this, use the default value 16
 
 config DVB_DYNAMIC_MINORS
bool "Dynamic DVB minor allocation"
diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
index 4aff7bd..ae4e0a2 100644
--- a/drivers/media/dvb-core/dvbdev.h
+++ b/drivers/media/dvb-core/dvbdev.h
@@ -34,7 +34,7 @@
 #if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0
   #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS
 #else
-  #define DVB_MAX_ADAPTERS 8
+  #define DVB_MAX_ADAPTERS 16
 #endif
 
 #define DVB_UNSET (-1)
-- 
2.7.4



[media 0/5] DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S 
USB dongle
==

Status: stable

Features:
1. in addition to the real frequency:
ISDB-S : freq. channel ID
ISDB-T : freq# (I/O# +128), ch#, ch# +64 for CATV
2. in addition to TSID:
ISDB-S : slot#

Supported Cards & Main components:
A. EarthSoft PT3:
1. Altera   EP4CGX15BF14C8N : customized FPGA PCI bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. SharpVA4M6JC2103 : contains 2 ISDB-S + 2 ISDB-T tuners
ISDB-S : Sharp QM1D1C0042 RF-IC, chip ver. 0x48
ISDB-T : MaxLinear CMOS Hybrid TV MxL301RF

B. PLEX PX-Q3PE:
1. ASICEN   ASV5220 : PCI-E bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. NXP Semiconductors TDA20142  : ISDB-S tuner
4. Newport Media NM120  : ISDB-T tuner
5. ASICEN   ASIE5606X8  : crypting controller

C. PLEX PX-BCUD (ISDB-S USB dongle)
1. EmpiaEM28178 : USB I/F (courtesy of Nagahama Satoshi)
2. Toshiba  TC90532 : demodulator (using TC90522 driver)
3. SharpQM1D1C0045_2: ISDB-S RF-IC, chip ver. 0x68

Notes:
This is a complex but smartly polished driver package containing 2 (dual head)
PCI-E bridge I/F drivers, single demodulator frontend, and 4 (quad tail) tuner 
drivers,
plus, simplified Nagahama's patch for PLEX PX-BCUD (ISDB-S USB dongle).
Generic registration related procedures (subdevices, frontend, etc.) summarized 
in
ptx_common.c are very useful also for other DVB drivers, and would be very 
handy if
inserted into the core (e.g. dvb_frontend.c & dvb_frontend.h).

For example, currently, the entity of struct dvb_frontend is created sometimes 
in
demodulators, some in tuners, or even in the parent (bridge) drivers. IMHO, 
this entity
should be provided by dvb_core. ptx_register_fe() included in ptx_common.c 
simplifies
the tasks and in fact, significantly reduces coding & kernel size.

Also, currently dvb_frontend's .demodulator_priv & .tuner_priv are of type 
(void *).
These should be changed to (struct i2c_client *), IMHO. Private data for 
demodulator
or tuner should be attached under i2c_client, using i2c_set_clientdata() for 
instance.

FILENAMESUPPORTED CHIPS
===
tc90522.c   TC90522XBG, TC90532XBG,...
tda2014x.c  TDA20142
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2
nm131.c NM131, NM130, NM120
mxl301rf.c  MxL301RF
pt3_pci.c   EP4CGX15BF14C8N
pxq3pe_pci.cASV5220

Full package:
- URL:  https://github.com/knight-rider/ptx


Буди Романто, AreMa Inc (5):
  Raise adapter number limit
  drop backstabbing drivers
  Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards &
PX-BCUD ISDB-S USB dongle
  Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD
ISDB-S USB dongle
  Bridge driver for PT3, PX-Q3PE & PX-BCUD

 drivers/media/Kconfig   |   5 +-
 drivers/media/dvb-core/Kconfig  |   4 +-
 drivers/media/dvb-core/dvbdev.h |   2 +-
 drivers/media/dvb-frontends/tc90522.c   | 964 +++-
 drivers/media/dvb-frontends/tc90522.h   |  36 +-
 drivers/media/pci/Kconfig   |   2 +-
 drivers/media/pci/Makefile  |   2 +-
 drivers/media/pci/pt3/Kconfig   |  10 -
 drivers/media/pci/pt3/Makefile  |   8 -
 drivers/media/pci/pt3/pt3.c | 874 -
 drivers/media/pci/pt3/pt3.h | 186 --
 drivers/media/pci/pt3/pt3_dma.c | 225 
 drivers/media/pci/pt3/pt3_i2c.c | 240 
 drivers/media/pci/ptx/Kconfig   |  23 +
 drivers/media/pci/ptx/Makefile  |   6 +
 drivers/media/pci/ptx/pt3.c | 426 ++
 drivers/media/pci/ptx/ptx_common.c  | 266 +
 drivers/media/pci/ptx/ptx_common.h  |  76 +++
 drivers/media/pci/ptx/pxq3pe.c  | 588 +++
 drivers/media/tuners/Kconfig|  21 +-
 drivers/media/tuners/Makefile   |   4 +-
 drivers/media/tuners/mxl301rf.c | 481 ++--
 drivers/media/tuners/mxl301rf.h |  19 +-
 drivers/media/tuners/nm131.c| 252 +
 drivers/media/tuners/nm131.h|  13 +
 drivers/media/tuners/qm1d1c0042.c   | 448 ---
 drivers/media/tuners/qm1d1c0042.h   |  37 --
 drivers/media/tuners/qm1d1c004x.c   | 247 
 drivers/media/tuners/qm1d1c004x.h   |  23 +
 drivers/media/tuners/tda2014x.c | 358 
 drivers/media/tuners/tda2014x.h |  13 +
 drivers/media/usb/em28xx/Kconfig|   3 +
 drivers/media/usb/em28xx/Makefile   |   1 +
 drivers/media/usb/em28xx/em28xx-cards.c |  27 +
 drivers/media/usb/em28xx/em28xx-dvb.c   |  81 ++-
 

[media 0/5] DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-05 Thread info
From: Буди Романто, AreMa Inc 

DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S 
USB dongle
==

Status: stable

Features:
1. in addition to the real frequency:
ISDB-S : freq. channel ID
ISDB-T : freq# (I/O# +128), ch#, ch# +64 for CATV
2. in addition to TSID:
ISDB-S : slot#

Supported Cards & Main components:
A. EarthSoft PT3:
1. Altera   EP4CGX15BF14C8N : customized FPGA PCI bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. SharpVA4M6JC2103 : contains 2 ISDB-S + 2 ISDB-T tuners
ISDB-S : Sharp QM1D1C0042 RF-IC, chip ver. 0x48
ISDB-T : MaxLinear CMOS Hybrid TV MxL301RF

B. PLEX PX-Q3PE:
1. ASICEN   ASV5220 : PCI-E bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. NXP Semiconductors TDA20142  : ISDB-S tuner
4. Newport Media NM120  : ISDB-T tuner
5. ASICEN   ASIE5606X8  : crypting controller

C. PLEX PX-BCUD (ISDB-S USB dongle)
1. EmpiaEM28178 : USB I/F (courtesy of Nagahama Satoshi)
2. Toshiba  TC90532 : demodulator (using TC90522 driver)
3. SharpQM1D1C0045_2: ISDB-S RF-IC, chip ver. 0x68

Notes:
This is a complex but smartly polished driver package containing 2 (dual head)
PCI-E bridge I/F drivers, single demodulator frontend, and 4 (quad tail) tuner 
drivers,
plus, simplified Nagahama's patch for PLEX PX-BCUD (ISDB-S USB dongle).
Generic registration related procedures (subdevices, frontend, etc.) summarized 
in
ptx_common.c are very useful also for other DVB drivers, and would be very 
handy if
inserted into the core (e.g. dvb_frontend.c & dvb_frontend.h).

For example, currently, the entity of struct dvb_frontend is created sometimes 
in
demodulators, some in tuners, or even in the parent (bridge) drivers. IMHO, 
this entity
should be provided by dvb_core. ptx_register_fe() included in ptx_common.c 
simplifies
the tasks and in fact, significantly reduces coding & kernel size.

Also, currently dvb_frontend's .demodulator_priv & .tuner_priv are of type 
(void *).
These should be changed to (struct i2c_client *), IMHO. Private data for 
demodulator
or tuner should be attached under i2c_client, using i2c_set_clientdata() for 
instance.

FILENAMESUPPORTED CHIPS
===
tc90522.c   TC90522XBG, TC90532XBG,...
tda2014x.c  TDA20142
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2
nm131.c NM131, NM130, NM120
mxl301rf.c  MxL301RF
pt3_pci.c   EP4CGX15BF14C8N
pxq3pe_pci.cASV5220

Full package:
- URL:  https://github.com/knight-rider/ptx


Буди Романто, AreMa Inc (5):
  Raise adapter number limit
  drop backstabbing drivers
  Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards &
PX-BCUD ISDB-S USB dongle
  Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD
ISDB-S USB dongle
  Bridge driver for PT3, PX-Q3PE & PX-BCUD

 drivers/media/Kconfig   |   5 +-
 drivers/media/dvb-core/Kconfig  |   4 +-
 drivers/media/dvb-core/dvbdev.h |   2 +-
 drivers/media/dvb-frontends/tc90522.c   | 964 +++-
 drivers/media/dvb-frontends/tc90522.h   |  36 +-
 drivers/media/pci/Kconfig   |   2 +-
 drivers/media/pci/Makefile  |   2 +-
 drivers/media/pci/pt3/Kconfig   |  10 -
 drivers/media/pci/pt3/Makefile  |   8 -
 drivers/media/pci/pt3/pt3.c | 874 -
 drivers/media/pci/pt3/pt3.h | 186 --
 drivers/media/pci/pt3/pt3_dma.c | 225 
 drivers/media/pci/pt3/pt3_i2c.c | 240 
 drivers/media/pci/ptx/Kconfig   |  23 +
 drivers/media/pci/ptx/Makefile  |   6 +
 drivers/media/pci/ptx/pt3.c | 426 ++
 drivers/media/pci/ptx/ptx_common.c  | 266 +
 drivers/media/pci/ptx/ptx_common.h  |  76 +++
 drivers/media/pci/ptx/pxq3pe.c  | 588 +++
 drivers/media/tuners/Kconfig|  21 +-
 drivers/media/tuners/Makefile   |   4 +-
 drivers/media/tuners/mxl301rf.c | 481 ++--
 drivers/media/tuners/mxl301rf.h |  19 +-
 drivers/media/tuners/nm131.c| 252 +
 drivers/media/tuners/nm131.h|  13 +
 drivers/media/tuners/qm1d1c0042.c   | 448 ---
 drivers/media/tuners/qm1d1c0042.h   |  37 --
 drivers/media/tuners/qm1d1c004x.c   | 247 
 drivers/media/tuners/qm1d1c004x.h   |  23 +
 drivers/media/tuners/tda2014x.c | 358 
 drivers/media/tuners/tda2014x.h |  13 +
 drivers/media/usb/em28xx/Kconfig|   3 +
 drivers/media/usb/em28xx/Makefile   |   1 +
 drivers/media/usb/em28xx/em28xx-cards.c |  27 +
 drivers/media/usb/em28xx/em28xx-dvb.c   |  81 ++-
 

[media 4/6] Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

tda2014x.c  TDA20142PX-Q3PE
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2PX-BCUD, PT3
nm131.c NM131, NM130, NM120 PX-Q3PE
mxl301rf.c  MxL301RFPT3

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/Kconfig  |  21 ++-
 drivers/media/tuners/Makefile |   4 +-
 drivers/media/tuners/mxl301rf.c   | 220 +++
 drivers/media/tuners/mxl301rf.h   |  23 +++
 drivers/media/tuners/nm131.c  | 248 ++
 drivers/media/tuners/nm131.h  |  13 ++
 drivers/media/tuners/qm1d1c004x.c | 242 ++
 drivers/media/tuners/qm1d1c004x.h |  23 +++
 drivers/media/tuners/tda2014x.c   | 358 ++
 drivers/media/tuners/tda2014x.h   |  13 ++
 10 files changed, 1161 insertions(+), 4 deletions(-)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h
 create mode 100644 drivers/media/tuners/nm131.c
 create mode 100644 drivers/media/tuners/nm131.h
 create mode 100644 drivers/media/tuners/qm1d1c004x.c
 create mode 100644 drivers/media/tuners/qm1d1c004x.h
 create mode 100644 drivers/media/tuners/tda2014x.c
 create mode 100644 drivers/media/tuners/tda2014x.h

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 05998f0..a7f044b 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -271,10 +271,25 @@ config MEDIA_TUNER_MXL301RF
help
  MaxLinear MxL301RF OFDM tuner driver.
 
-config MEDIA_TUNER_QM1D1C0042
-   tristate "Sharp QM1D1C0042 tuner"
+config MEDIA_TUNER_QM1D1C004X
+   tristate "Sharp QM1D1C004x tuner"
depends on MEDIA_SUPPORT && I2C
default m if !MEDIA_SUBDRV_AUTOSELECT
help
- Sharp QM1D1C0042 trellis coded 8PSK tuner driver.
+ Sharp trellis coded 8PSK tuner driver.
+ Supported chips: QM1D1C0042, QM1D1C0045
+
+config MEDIA_TUNER_NM131
+   tristate "Newport Media tuners NM131, NM130 and NM120"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ Newport Media NM131, NM130 and NM120 tuner driver.
+
+config MEDIA_TUNER_TDA2014X
+   tristate "NXP Semiconductors TDA2014x tuner"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ NXP Semiconductor TDA2014x tuner driver.
 endmenu
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 06a9ab6..6a2b52a 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -39,8 +39,10 @@ obj-$(CONFIG_MEDIA_TUNER_FC0013) += fc0013.o
 obj-$(CONFIG_MEDIA_TUNER_IT913X) += it913x.o
 obj-$(CONFIG_MEDIA_TUNER_R820T) += r820t.o
 obj-$(CONFIG_MEDIA_TUNER_MXL301RF) += mxl301rf.o
-obj-$(CONFIG_MEDIA_TUNER_QM1D1C0042) += qm1d1c0042.o
+obj-$(CONFIG_MEDIA_TUNER_QM1D1C004X) += qm1d1c004x.o
 obj-$(CONFIG_MEDIA_TUNER_M88RS6000T) += m88rs6000t.o
+obj-$(CONFIG_MEDIA_TUNER_NM131) += nm131.o
+obj-$(CONFIG_MEDIA_TUNER_TDA2014X) += tda2014x.o
 
 ccflags-y += -I$(srctree)/drivers/media/dvb-core
 ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..916b06f
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,220 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  buf[len + 1];
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   buf[0] = slvadr;
+   memcpy(buf + 1, dat, len);
+   return i2c_transfer(d->adapter, msg, 1) == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8 buf[len + 1];
+
+   buf[0] = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   return mxl301rf_w(fe, 0xFE, buf, len + 1);
+}
+
+u8 mxl301rf_r(struct dvb_frontend *fe, u8 regadr)
+{
+   struct i2c_client   *d  = fe->demodulator_priv,
+   *t  = fe->tuner_priv;
+   u8  wbuf[]  = {0xFB, regadr},
+   rbuf[]  = {0xFE, (t->addr << 1) | 1, 0};
+  

[media 1/6] Raise adapter number limit

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

The current limit is too low for latest cards with 8+ tuners on a single slot.
IMHO, the most appropriate minimum default is 16.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-core/Kconfig  | 4 ++--
 drivers/media/dvb-core/dvbdev.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-core/Kconfig b/drivers/media/dvb-core/Kconfig
index fa7a249..91732a9 100644
--- a/drivers/media/dvb-core/Kconfig
+++ b/drivers/media/dvb-core/Kconfig
@@ -5,7 +5,7 @@
 config DVB_MAX_ADAPTERS
int "maximum number of DVB/ATSC adapters"
depends on DVB_CORE
-   default 8
+   default 16
range 1 255
help
  Maximum number of DVB/ATSC adapters. Increasing this number
@@ -13,7 +13,7 @@ config DVB_MAX_ADAPTERS
  if a much lower number of DVB/ATSC adapters is present.
  Only values in the range 4-32 are tested.
 
- If you are unsure about this, use the default value 8
+ If you are unsure about this, use the default value 16
 
 config DVB_DYNAMIC_MINORS
bool "Dynamic DVB minor allocation"
diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
index 4aff7bd..ae4e0a2 100644
--- a/drivers/media/dvb-core/dvbdev.h
+++ b/drivers/media/dvb-core/dvbdev.h
@@ -34,7 +34,7 @@
 #if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0
   #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS
 #else
-  #define DVB_MAX_ADAPTERS 8
+  #define DVB_MAX_ADAPTERS 16
 #endif
 
 #define DVB_UNSET (-1)
-- 
2.7.4



[media 4/6] Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

tda2014x.c  TDA20142PX-Q3PE
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2PX-BCUD, PT3
nm131.c NM131, NM130, NM120 PX-Q3PE
mxl301rf.c  MxL301RFPT3

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/Kconfig  |  21 ++-
 drivers/media/tuners/Makefile |   4 +-
 drivers/media/tuners/mxl301rf.c   | 220 +++
 drivers/media/tuners/mxl301rf.h   |  23 +++
 drivers/media/tuners/nm131.c  | 248 ++
 drivers/media/tuners/nm131.h  |  13 ++
 drivers/media/tuners/qm1d1c004x.c | 242 ++
 drivers/media/tuners/qm1d1c004x.h |  23 +++
 drivers/media/tuners/tda2014x.c   | 358 ++
 drivers/media/tuners/tda2014x.h   |  13 ++
 10 files changed, 1161 insertions(+), 4 deletions(-)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h
 create mode 100644 drivers/media/tuners/nm131.c
 create mode 100644 drivers/media/tuners/nm131.h
 create mode 100644 drivers/media/tuners/qm1d1c004x.c
 create mode 100644 drivers/media/tuners/qm1d1c004x.h
 create mode 100644 drivers/media/tuners/tda2014x.c
 create mode 100644 drivers/media/tuners/tda2014x.h

diff --git a/drivers/media/tuners/Kconfig b/drivers/media/tuners/Kconfig
index 05998f0..a7f044b 100644
--- a/drivers/media/tuners/Kconfig
+++ b/drivers/media/tuners/Kconfig
@@ -271,10 +271,25 @@ config MEDIA_TUNER_MXL301RF
help
  MaxLinear MxL301RF OFDM tuner driver.
 
-config MEDIA_TUNER_QM1D1C0042
-   tristate "Sharp QM1D1C0042 tuner"
+config MEDIA_TUNER_QM1D1C004X
+   tristate "Sharp QM1D1C004x tuner"
depends on MEDIA_SUPPORT && I2C
default m if !MEDIA_SUBDRV_AUTOSELECT
help
- Sharp QM1D1C0042 trellis coded 8PSK tuner driver.
+ Sharp trellis coded 8PSK tuner driver.
+ Supported chips: QM1D1C0042, QM1D1C0045
+
+config MEDIA_TUNER_NM131
+   tristate "Newport Media tuners NM131, NM130 and NM120"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ Newport Media NM131, NM130 and NM120 tuner driver.
+
+config MEDIA_TUNER_TDA2014X
+   tristate "NXP Semiconductors TDA2014x tuner"
+   depends on MEDIA_SUPPORT && I2C
+   default m if !MEDIA_SUBDRV_AUTOSELECT
+   help
+ NXP Semiconductor TDA2014x tuner driver.
 endmenu
diff --git a/drivers/media/tuners/Makefile b/drivers/media/tuners/Makefile
index 06a9ab6..6a2b52a 100644
--- a/drivers/media/tuners/Makefile
+++ b/drivers/media/tuners/Makefile
@@ -39,8 +39,10 @@ obj-$(CONFIG_MEDIA_TUNER_FC0013) += fc0013.o
 obj-$(CONFIG_MEDIA_TUNER_IT913X) += it913x.o
 obj-$(CONFIG_MEDIA_TUNER_R820T) += r820t.o
 obj-$(CONFIG_MEDIA_TUNER_MXL301RF) += mxl301rf.o
-obj-$(CONFIG_MEDIA_TUNER_QM1D1C0042) += qm1d1c0042.o
+obj-$(CONFIG_MEDIA_TUNER_QM1D1C004X) += qm1d1c004x.o
 obj-$(CONFIG_MEDIA_TUNER_M88RS6000T) += m88rs6000t.o
+obj-$(CONFIG_MEDIA_TUNER_NM131) += nm131.o
+obj-$(CONFIG_MEDIA_TUNER_TDA2014X) += tda2014x.o
 
 ccflags-y += -I$(srctree)/drivers/media/dvb-core
 ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..916b06f
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,220 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  buf[len + 1];
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   buf[0] = slvadr;
+   memcpy(buf + 1, dat, len);
+   return i2c_transfer(d->adapter, msg, 1) == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8 buf[len + 1];
+
+   buf[0] = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   return mxl301rf_w(fe, 0xFE, buf, len + 1);
+}
+
+u8 mxl301rf_r(struct dvb_frontend *fe, u8 regadr)
+{
+   struct i2c_client   *d  = fe->demodulator_priv,
+   *t  = fe->tuner_priv;
+   u8  wbuf[]  = {0xFB, regadr},
+   rbuf[]  = {0xFE, (t->addr << 1) | 1, 0};
+   struct i2c_msg msg[] = {
+   {.addr 

[media 1/6] Raise adapter number limit

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

The current limit is too low for latest cards with 8+ tuners on a single slot.
IMHO, the most appropriate minimum default is 16.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-core/Kconfig  | 4 ++--
 drivers/media/dvb-core/dvbdev.h | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/media/dvb-core/Kconfig b/drivers/media/dvb-core/Kconfig
index fa7a249..91732a9 100644
--- a/drivers/media/dvb-core/Kconfig
+++ b/drivers/media/dvb-core/Kconfig
@@ -5,7 +5,7 @@
 config DVB_MAX_ADAPTERS
int "maximum number of DVB/ATSC adapters"
depends on DVB_CORE
-   default 8
+   default 16
range 1 255
help
  Maximum number of DVB/ATSC adapters. Increasing this number
@@ -13,7 +13,7 @@ config DVB_MAX_ADAPTERS
  if a much lower number of DVB/ATSC adapters is present.
  Only values in the range 4-32 are tested.
 
- If you are unsure about this, use the default value 8
+ If you are unsure about this, use the default value 16
 
 config DVB_DYNAMIC_MINORS
bool "Dynamic DVB minor allocation"
diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
index 4aff7bd..ae4e0a2 100644
--- a/drivers/media/dvb-core/dvbdev.h
+++ b/drivers/media/dvb-core/dvbdev.h
@@ -34,7 +34,7 @@
 #if defined(CONFIG_DVB_MAX_ADAPTERS) && CONFIG_DVB_MAX_ADAPTERS > 0
   #define DVB_MAX_ADAPTERS CONFIG_DVB_MAX_ADAPTERS
 #else
-  #define DVB_MAX_ADAPTERS 8
+  #define DVB_MAX_ADAPTERS 16
 #endif
 
 #define DVB_UNSET (-1)
-- 
2.7.4



[media 2/6] drop backstabbing drivers

2016-04-04 Thread info
From: Буди Романто, AreMa Inc <knightri...@are.ma>

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc <knightri...@are.ma>
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada <tsk...@gmail.com>
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_t

[media 6/6] Bridge driver for PLEX PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

Support for PLEX PX-BCUD (ISDB-S usb dongle)
Nagahama's patch simplified...

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/Kconfig   |  5 +-
 drivers/media/usb/em28xx/Kconfig|  3 ++
 drivers/media/usb/em28xx/Makefile   |  1 +
 drivers/media/usb/em28xx/em28xx-cards.c | 27 +++
 drivers/media/usb/em28xx/em28xx-dvb.c   | 81 -
 drivers/media/usb/em28xx/em28xx.h   |  1 +
 6 files changed, 115 insertions(+), 3 deletions(-)

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index a8518fb..37fae59 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -149,7 +149,10 @@ config DVB_NET
  You may want to disable the network support on embedded devices. If
  unsure say Y.
 
-# This Kconfig option is used by both PCI and USB drivers
+# Options used by both PCI and USB drivers
+config DVB_PTX_COMMON
+   tristate
+
 config TTPCI_EEPROM
tristate
depends on I2C
diff --git a/drivers/media/usb/em28xx/Kconfig b/drivers/media/usb/em28xx/Kconfig
index e382210..fc19edc 100644
--- a/drivers/media/usb/em28xx/Kconfig
+++ b/drivers/media/usb/em28xx/Kconfig
@@ -59,6 +59,9 @@ config VIDEO_EM28XX_DVB
select DVB_DRX39XYJ if MEDIA_SUBDRV_AUTOSELECT
select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
+   select DVB_PTX_COMMON
+   select DVB_TC90522 if MEDIA_SUBDRV_AUTOSELECT
+   select MEDIA_TUNER_QM1D1C004X if MEDIA_SUBDRV_AUTOSELECT
---help---
  This adds support for DVB cards based on the
  Empiatech em28xx chips.
diff --git a/drivers/media/usb/em28xx/Makefile 
b/drivers/media/usb/em28xx/Makefile
index 3f850d5..1488829 100644
--- a/drivers/media/usb/em28xx/Makefile
+++ b/drivers/media/usb/em28xx/Makefile
@@ -14,3 +14,4 @@ ccflags-y += -Idrivers/media/i2c
 ccflags-y += -Idrivers/media/tuners
 ccflags-y += -Idrivers/media/dvb-core
 ccflags-y += -Idrivers/media/dvb-frontends
+ccflags-y += -Idrivers/media/pci/ptx
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c 
b/drivers/media/usb/em28xx/em28xx-cards.c
index 930e3e3..772a8f8 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -492,6 +492,20 @@ static struct em28xx_reg_seq terratec_t2_stick_hd[] = {
{-1, -1,   -1, -1},
 };
 
+static struct em28xx_reg_seq plex_px_bcud[] = {
+   {EM2874_R80_GPIO_P0_CTRL,   0xff,   0xff,   0},
+   {0x0d,  0xff,   0xff,   0},
+   {EM2874_R50_IR_CONFIG,  0x01,   0xff,   0},
+   {EM28XX_R06_I2C_CLK,0x40,   0xff,   0},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfd,   0xff,   100},
+   {EM28XX_R12_VINENABLE,  0x20,   0x20,   0},
+   {0x0d,  0x42,   0xff,   1000},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfc,   0xff,   10},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfd,   0xff,   10},
+   {0x73,  0xfd,   0xff,   100},
+   {-1,-1, -1, -1},
+};
+
 /*
  *  Button definitions
  */
@@ -2306,6 +2320,17 @@ struct em28xx_board em28xx_boards[] = {
.has_dvb   = 1,
.ir_codes  = RC_MAP_TERRATEC_SLIM_2,
},
+   /* 3275:0085 PLEX PX-BCUD.
+* Empia EM28178, TOSHIBA TC90532XBG, Sharp QM1D1C0042 */
+   [EM28178_BOARD_PLEX_PX_BCUD] = {
+   .name  = "PLEX PX-BCUD",
+   .xclk  = EM28XX_XCLK_FREQUENCY_4_3MHZ,
+   .def_i2c_bus   = 1,
+   .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE,
+   .tuner_type= TUNER_ABSENT,
+   .tuner_gpio= plex_px_bcud,
+   .has_dvb   = 1,
+   },
 };
 EXPORT_SYMBOL_GPL(em28xx_boards);
 
@@ -2495,6 +2520,8 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM2861_BOARD_LEADTEK_VC100 },
{ USB_DEVICE(0xeb1a, 0x8179),
.driver_info = EM28178_BOARD_TERRATEC_T2_STICK_HD },
+   { USB_DEVICE(0x3275, 0x0085),
+   .driver_info = EM28178_BOARD_PLEX_PX_BCUD },
{ },
 };
 MODULE_DEVICE_TABLE(usb, em28xx_id_table);
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c 
b/drivers/media/usb/em28xx/em28xx-dvb.c
index 5d209c7..c45112e 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -12,6 +12,10 @@
 
  (c) 2012 Frank Schäfer 
 
+ (c) 2016 Nagahama Satoshi 
+ Budi Rachmanto, AreMa Inc. 
+   - PLEX PX-BCUD support
+
  Based on cx88-dvb, saa7134-dvb and videobuf-dvb originally written by:
(c) 2004, 2005 Chris Pascoe 
(c) 2004 Gerd Knorr  [SuSE Labs]
@@ -25,11 +29,10 

[media 5/6] PCIE bridge driver for PT3 & PX-Q3PE

2016-04-04 Thread info
p[i];
+
+   p->card = card;
+   p->priv = sz_adap_priv ? (u8 *)>adap[card->adapn] + i * 
sz_adap_priv : NULL;
+   }
+   if (pci_enable_device(pdev) ||
+   pci_set_dma_mask(pdev, DMA_BIT_MASK(32))||
+   pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) ||
+   pci_request_regions(pdev, name)) {
+   kfree(card);
+   return NULL;
+   }
+   pci_set_drvdata(pdev, card);
+   return card;
+}
+
+int ptx_i2c_add_adapter(struct ptx_card *card, const struct i2c_algorithm 
*algo)
+{
+   struct i2c_adapter *i2c = >i2c;
+
+   i2c->algo   = algo;
+   i2c->dev.parent = >pdev->dev;
+   strcpy(i2c->name, card->name);
+   i2c_set_adapdata(i2c, card);
+   mutex_init(>lock);
+   return  i2c_add_adapter(i2c);
+}
+
+void ptx_unregister_subdev(struct i2c_client *c)
+{
+   if (!c)
+   return;
+   if (c->dev.driver)
+   module_put(c->dev.driver->owner);
+   i2c_unregister_device(c);
+}
+
+struct i2c_client *ptx_register_subdev(struct i2c_adapter *i2c, struct 
dvb_frontend *fe, u16 adr, char *name)
+{
+   struct i2c_client   *c;
+   struct i2c_board_info   info = {
+   .platform_data  = fe,
+   .addr   = adr,
+   };
+
+   strlcpy(info.type, name, I2C_NAME_SIZE);
+   request_module("%s", info.type);
+   c = i2c_new_device(i2c, );
+   if (!c)
+   return NULL;
+   if (c->dev.driver && try_module_get(c->dev.driver->owner))
+   return c;
+   ptx_unregister_subdev(c);
+   return NULL;
+}
+
+void ptx_unregister_fe(struct dvb_frontend *fe)
+{
+   if (!fe)
+   return;
+   if (fe->frontend_priv)
+   dvb_unregister_frontend(fe);
+   ptx_unregister_subdev(fe->tuner_priv);
+   ptx_unregister_subdev(fe->demodulator_priv);
+   kfree(fe);
+}
+
+struct dvb_frontend *ptx_register_fe(struct i2c_adapter *i2c, struct 
dvb_adapter *dvb, const struct ptx_subdev_info *info)
+{
+   struct dvb_frontend *fe = kzalloc(sizeof(struct dvb_frontend), 
GFP_KERNEL);
+
+   if (!fe)
+   return  NULL;
+   fe->demodulator_priv= ptx_register_subdev(i2c, fe, 
info->demod_addr, info->demod_name);
+   fe->tuner_priv  = ptx_register_subdev(i2c, fe, 
info->tuner_addr, info->tuner_name);
+   if (info->type)
+   fe->ops.delsys[0] = info->type;
+   if (!fe->demodulator_priv || !fe->tuner_priv || (dvb && 
dvb_register_frontend(dvb, fe))) {
+   ptx_unregister_fe(fe);
+   return  NULL;
+   }
+   return fe;
+}
+
+void ptx_unregister_adap(struct ptx_card *card)
+{
+   int i   = card->adapn - 1;
+   struct ptx_adap *adap   = card->adap + i;
+
+   for (; i >= 0; i--, adap--) {
+   ptx_unregister_fe(adap->fe);
+   if (adap->demux.dmx.close)
+   adap->demux.dmx.close(>demux.dmx);
+   if (adap->dmxdev.filter)
+   dvb_dmxdev_release(>dmxdev);
+   if (adap->demux.cnt_storage)
+   dvb_dmx_release(>demux);
+   if (adap->dvb.name)
+   dvb_unregister_adapter(>dvb);
+   }
+   i2c_del_adapter(>i2c);
+   pci_release_regions(card->pdev);
+   pci_set_drvdata(card->pdev, NULL);
+   pci_disable_device(card->pdev);
+   kfree(card);
+}
+
+int ptx_register_adap(struct ptx_card *card, const struct ptx_subdev_info 
*info,
+   int (*thread)(void *), int (*dma)(struct ptx_adap *, 
bool))
+{
+   struct ptx_adap *adap;
+   short   adap_no[DVB_MAX_ADAPTERS] = {};
+   u8  i;
+   int err;
+
+   card->thread= thread;
+   card->dma   = dma;
+   for (i = 0, adap = card->adap; i < card->adapn; i++, adap++) {
+   struct dvb_adapter  *dvb= >dvb;
+   struct dvb_demux*demux  = >demux;
+   struct dmxdev   *dmxdev = >dmxdev;
+
+   if (dvb_register_adapter(dvb, card->name, THIS_MODULE, 
>pdev->dev, adap_no) < 0)
+   return -ENFILE;
+   demux->dmx.capabilities = DMX_TS_FILTERING | 
DMX_SECTION_FILTERING;
+   demux->feednum  = 1;
+   demux->filternum= 1;
+   demux->start_feed   = ptx_start_feed;
+   demux->stop_feed= ptx_stop_feed;
+   if (dvb_dmx_init(demux) < 0)
+   return -ENOMEM;
+   dmxdev->filternum   = 1;
+   dmxdev->demux   = >dmx;
+

[media 2/6] drop backstabbing drivers

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada 
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_tsid[0].val = (fe->dtv_property_cache.stream_id & 0xff00) >> 8;
-   

[media 6/6] Bridge driver for PLEX PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 

Support for PLEX PX-BCUD (ISDB-S usb dongle)
Nagahama's patch simplified...

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/Kconfig   |  5 +-
 drivers/media/usb/em28xx/Kconfig|  3 ++
 drivers/media/usb/em28xx/Makefile   |  1 +
 drivers/media/usb/em28xx/em28xx-cards.c | 27 +++
 drivers/media/usb/em28xx/em28xx-dvb.c   | 81 -
 drivers/media/usb/em28xx/em28xx.h   |  1 +
 6 files changed, 115 insertions(+), 3 deletions(-)

diff --git a/drivers/media/Kconfig b/drivers/media/Kconfig
index a8518fb..37fae59 100644
--- a/drivers/media/Kconfig
+++ b/drivers/media/Kconfig
@@ -149,7 +149,10 @@ config DVB_NET
  You may want to disable the network support on embedded devices. If
  unsure say Y.
 
-# This Kconfig option is used by both PCI and USB drivers
+# Options used by both PCI and USB drivers
+config DVB_PTX_COMMON
+   tristate
+
 config TTPCI_EEPROM
tristate
depends on I2C
diff --git a/drivers/media/usb/em28xx/Kconfig b/drivers/media/usb/em28xx/Kconfig
index e382210..fc19edc 100644
--- a/drivers/media/usb/em28xx/Kconfig
+++ b/drivers/media/usb/em28xx/Kconfig
@@ -59,6 +59,9 @@ config VIDEO_EM28XX_DVB
select DVB_DRX39XYJ if MEDIA_SUBDRV_AUTOSELECT
select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
+   select DVB_PTX_COMMON
+   select DVB_TC90522 if MEDIA_SUBDRV_AUTOSELECT
+   select MEDIA_TUNER_QM1D1C004X if MEDIA_SUBDRV_AUTOSELECT
---help---
  This adds support for DVB cards based on the
  Empiatech em28xx chips.
diff --git a/drivers/media/usb/em28xx/Makefile 
b/drivers/media/usb/em28xx/Makefile
index 3f850d5..1488829 100644
--- a/drivers/media/usb/em28xx/Makefile
+++ b/drivers/media/usb/em28xx/Makefile
@@ -14,3 +14,4 @@ ccflags-y += -Idrivers/media/i2c
 ccflags-y += -Idrivers/media/tuners
 ccflags-y += -Idrivers/media/dvb-core
 ccflags-y += -Idrivers/media/dvb-frontends
+ccflags-y += -Idrivers/media/pci/ptx
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c 
b/drivers/media/usb/em28xx/em28xx-cards.c
index 930e3e3..772a8f8 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -492,6 +492,20 @@ static struct em28xx_reg_seq terratec_t2_stick_hd[] = {
{-1, -1,   -1, -1},
 };
 
+static struct em28xx_reg_seq plex_px_bcud[] = {
+   {EM2874_R80_GPIO_P0_CTRL,   0xff,   0xff,   0},
+   {0x0d,  0xff,   0xff,   0},
+   {EM2874_R50_IR_CONFIG,  0x01,   0xff,   0},
+   {EM28XX_R06_I2C_CLK,0x40,   0xff,   0},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfd,   0xff,   100},
+   {EM28XX_R12_VINENABLE,  0x20,   0x20,   0},
+   {0x0d,  0x42,   0xff,   1000},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfc,   0xff,   10},
+   {EM2874_R80_GPIO_P0_CTRL,   0xfd,   0xff,   10},
+   {0x73,  0xfd,   0xff,   100},
+   {-1,-1, -1, -1},
+};
+
 /*
  *  Button definitions
  */
@@ -2306,6 +2320,17 @@ struct em28xx_board em28xx_boards[] = {
.has_dvb   = 1,
.ir_codes  = RC_MAP_TERRATEC_SLIM_2,
},
+   /* 3275:0085 PLEX PX-BCUD.
+* Empia EM28178, TOSHIBA TC90532XBG, Sharp QM1D1C0042 */
+   [EM28178_BOARD_PLEX_PX_BCUD] = {
+   .name  = "PLEX PX-BCUD",
+   .xclk  = EM28XX_XCLK_FREQUENCY_4_3MHZ,
+   .def_i2c_bus   = 1,
+   .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE,
+   .tuner_type= TUNER_ABSENT,
+   .tuner_gpio= plex_px_bcud,
+   .has_dvb   = 1,
+   },
 };
 EXPORT_SYMBOL_GPL(em28xx_boards);
 
@@ -2495,6 +2520,8 @@ struct usb_device_id em28xx_id_table[] = {
.driver_info = EM2861_BOARD_LEADTEK_VC100 },
{ USB_DEVICE(0xeb1a, 0x8179),
.driver_info = EM28178_BOARD_TERRATEC_T2_STICK_HD },
+   { USB_DEVICE(0x3275, 0x0085),
+   .driver_info = EM28178_BOARD_PLEX_PX_BCUD },
{ },
 };
 MODULE_DEVICE_TABLE(usb, em28xx_id_table);
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c 
b/drivers/media/usb/em28xx/em28xx-dvb.c
index 5d209c7..c45112e 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -12,6 +12,10 @@
 
  (c) 2012 Frank Schäfer 
 
+ (c) 2016 Nagahama Satoshi 
+ Budi Rachmanto, AreMa Inc. 
+   - PLEX PX-BCUD support
+
  Based on cx88-dvb, saa7134-dvb and videobuf-dvb originally written by:
(c) 2004, 2005 Chris Pascoe 
(c) 2004 Gerd Knorr  [SuSE Labs]
@@ -25,11 +29,10 @@
 #include 
 #include 
 
+#include "ptx_common.h"
 #include "em28xx.h"
 #include 
-#include 
 #include 
-#include 
 #include 
 #include 

[media 5/6] PCIE bridge driver for PT3 & PX-Q3PE

2016-04-04 Thread info
d->adapn] + i * 
sz_adap_priv : NULL;
+   }
+   if (pci_enable_device(pdev) ||
+   pci_set_dma_mask(pdev, DMA_BIT_MASK(32))||
+   pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) ||
+   pci_request_regions(pdev, name)) {
+   kfree(card);
+   return NULL;
+   }
+   pci_set_drvdata(pdev, card);
+   return card;
+}
+
+int ptx_i2c_add_adapter(struct ptx_card *card, const struct i2c_algorithm 
*algo)
+{
+   struct i2c_adapter *i2c = >i2c;
+
+   i2c->algo   = algo;
+   i2c->dev.parent = >pdev->dev;
+   strcpy(i2c->name, card->name);
+   i2c_set_adapdata(i2c, card);
+   mutex_init(>lock);
+   return  i2c_add_adapter(i2c);
+}
+
+void ptx_unregister_subdev(struct i2c_client *c)
+{
+   if (!c)
+   return;
+   if (c->dev.driver)
+   module_put(c->dev.driver->owner);
+   i2c_unregister_device(c);
+}
+
+struct i2c_client *ptx_register_subdev(struct i2c_adapter *i2c, struct 
dvb_frontend *fe, u16 adr, char *name)
+{
+   struct i2c_client   *c;
+   struct i2c_board_info   info = {
+   .platform_data  = fe,
+   .addr   = adr,
+   };
+
+   strlcpy(info.type, name, I2C_NAME_SIZE);
+   request_module("%s", info.type);
+   c = i2c_new_device(i2c, );
+   if (!c)
+   return NULL;
+   if (c->dev.driver && try_module_get(c->dev.driver->owner))
+   return c;
+   ptx_unregister_subdev(c);
+   return NULL;
+}
+
+void ptx_unregister_fe(struct dvb_frontend *fe)
+{
+   if (!fe)
+   return;
+   if (fe->frontend_priv)
+   dvb_unregister_frontend(fe);
+   ptx_unregister_subdev(fe->tuner_priv);
+   ptx_unregister_subdev(fe->demodulator_priv);
+   kfree(fe);
+}
+
+struct dvb_frontend *ptx_register_fe(struct i2c_adapter *i2c, struct 
dvb_adapter *dvb, const struct ptx_subdev_info *info)
+{
+   struct dvb_frontend *fe = kzalloc(sizeof(struct dvb_frontend), 
GFP_KERNEL);
+
+   if (!fe)
+   return  NULL;
+   fe->demodulator_priv= ptx_register_subdev(i2c, fe, 
info->demod_addr, info->demod_name);
+   fe->tuner_priv  = ptx_register_subdev(i2c, fe, 
info->tuner_addr, info->tuner_name);
+   if (info->type)
+   fe->ops.delsys[0] = info->type;
+   if (!fe->demodulator_priv || !fe->tuner_priv || (dvb && 
dvb_register_frontend(dvb, fe))) {
+   ptx_unregister_fe(fe);
+   return  NULL;
+   }
+   return fe;
+}
+
+void ptx_unregister_adap(struct ptx_card *card)
+{
+   int i   = card->adapn - 1;
+   struct ptx_adap *adap   = card->adap + i;
+
+   for (; i >= 0; i--, adap--) {
+   ptx_unregister_fe(adap->fe);
+   if (adap->demux.dmx.close)
+   adap->demux.dmx.close(>demux.dmx);
+   if (adap->dmxdev.filter)
+   dvb_dmxdev_release(>dmxdev);
+   if (adap->demux.cnt_storage)
+   dvb_dmx_release(>demux);
+   if (adap->dvb.name)
+   dvb_unregister_adapter(>dvb);
+   }
+   i2c_del_adapter(>i2c);
+   pci_release_regions(card->pdev);
+   pci_set_drvdata(card->pdev, NULL);
+   pci_disable_device(card->pdev);
+   kfree(card);
+}
+
+int ptx_register_adap(struct ptx_card *card, const struct ptx_subdev_info 
*info,
+   int (*thread)(void *), int (*dma)(struct ptx_adap *, 
bool))
+{
+   struct ptx_adap *adap;
+   short   adap_no[DVB_MAX_ADAPTERS] = {};
+   u8  i;
+   int err;
+
+   card->thread= thread;
+   card->dma   = dma;
+   for (i = 0, adap = card->adap; i < card->adapn; i++, adap++) {
+   struct dvb_adapter  *dvb= >dvb;
+   struct dvb_demux*demux  = >demux;
+   struct dmxdev   *dmxdev = >dmxdev;
+
+   if (dvb_register_adapter(dvb, card->name, THIS_MODULE, 
>pdev->dev, adap_no) < 0)
+   return -ENFILE;
+   demux->dmx.capabilities = DMX_TS_FILTERING | 
DMX_SECTION_FILTERING;
+   demux->feednum  = 1;
+   demux->filternum= 1;
+   demux->start_feed   = ptx_start_feed;
+   demux->stop_feed= ptx_stop_feed;
+   if (dvb_dmx_init(demux) < 0)
+   return -ENOMEM;
+   dmxdev->filternum   = 1;
+   dmxdev->demux   = >dmx;
+   err = dvb_dmxdev_init(dmxdev, dvb);
+   if (err)
+   

[media 0/6] DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 


DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S 
USB dongle
==

Status: stable

Features:
1. in addition to the real frequency:
ISDB-S : freq. channel ID
ISDB-T : freq# (I/O# +128), ch#, ch# +64 for CATV
2. in addition to TSID:
ISDB-S : slot#

Supported Cards & Main components:
A. EarthSoft PT3:
1. Altera   EP4CGX15BF14C8N : customized FPGA PCI bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. SharpVA4M6JC2103 : contains 2 ISDB-S + 2 ISDB-T tuners
ISDB-S : Sharp QM1D1C0042 RF-IC, chip ver. 0x48
ISDB-T : MaxLinear CMOS Hybrid TV MxL301RF

B. PLEX PX-Q3PE:
1. ASICEN   ASV5220 : PCI-E bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. NXP Semiconductors TDA20142  : ISDB-S tuner
4. Newport Media NM120  : ISDB-T tuner
5. ASICEN   ASIE5606X8  : crypting controller

C. PLEX PX-BCUD (ISDB-S USB dongle)
1. EmpiaEM28178 : USB I/F (courtesy of Nagahama Satoshi)
2. Toshiba  TC90532 : demodulator (using TC90522 driver)
3. SharpQM1D1C0045_2: ISDB-S RF-IC, chip ver. 0x68

Notes:
This is a complex but smartly polished driver package containing 2 (dual head)
PCI-E bridge I/F drivers, single demodulator frontend, and 4 (quad tail) tuner 
drivers,
plus, simplified Nagahama's patch for PLEX PX-BCUD (ISDB-S USB dongle).
Generic registration related procedures (subdevices, frontend, etc.) summarized 
in
ptx_common.c are very useful also for other DVB drivers, and would be very 
handy if
inserted into the core (e.g. dvb_frontend.c & dvb_frontend.h).

For example, currently, the entity of struct dvb_frontend is created sometimes 
in
demodulators, some in tuners, or even in the parent (bridge) drivers. IMHO, 
this entity
should be provided by dvb_core. ptx_register_fe() included in ptx_common.c 
simplifies
the tasks and in fact, significantly reduces coding & kernel size.

Also, currently dvb_frontend's .demodulator_priv & .tuner_priv are of type 
(void *).
These should be changed to (struct i2c_client *), IMHO. Private data for 
demodulator
or tuner should be attached under i2c_client, using i2c_set_clientdata() for 
instance.

FILENAMESUPPORTED CHIPS
===
tc90522.c   TC90522XBG, TC90532XBG,...
tda2014x.c  TDA20142
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2
nm131.c NM131, NM130, NM120
mxl301rf.c  MxL301RF
pt3_pci.c   EP4CGX15BF14C8N
pxq3pe_pci.cASV5220

Full package:
- URL:  https://github.com/knight-rider/ptx


Буди Романто, AreMa Inc (6):
  Raise adapter number limit
  drop backstabbing drivers
  Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards &
PX-BCUD ISDB-S USB dongle
  Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD
ISDB-S USB dongle
  PCIE bridge driver for PT3 & PX-Q3PE
  Bridge driver for PLEX PX-BCUD ISDB-S USB dongle

 drivers/media/Kconfig   |   5 +-
 drivers/media/dvb-core/Kconfig  |   4 +-
 drivers/media/dvb-core/dvbdev.h |   2 +-
 drivers/media/dvb-frontends/tc90522.c   | 964 +++-
 drivers/media/dvb-frontends/tc90522.h   |  36 +-
 drivers/media/pci/Kconfig   |   2 +-
 drivers/media/pci/Makefile  |   2 +-
 drivers/media/pci/pt3/Kconfig   |  10 -
 drivers/media/pci/pt3/Makefile  |   8 -
 drivers/media/pci/pt3/pt3.c | 874 -
 drivers/media/pci/pt3/pt3.h | 186 --
 drivers/media/pci/pt3/pt3_dma.c | 225 
 drivers/media/pci/pt3/pt3_i2c.c | 240 
 drivers/media/pci/ptx/Kconfig   |  23 +
 drivers/media/pci/ptx/Makefile  |   6 +
 drivers/media/pci/ptx/pt3.c | 426 ++
 drivers/media/pci/ptx/ptx_common.c  | 266 +
 drivers/media/pci/ptx/ptx_common.h  |  76 +++
 drivers/media/pci/ptx/pxq3pe.c  | 585 +++
 drivers/media/tuners/Kconfig|  21 +-
 drivers/media/tuners/Makefile   |   4 +-
 drivers/media/tuners/mxl301rf.c | 471 ++--
 drivers/media/tuners/mxl301rf.h |  19 +-
 drivers/media/tuners/nm131.c| 248 
 drivers/media/tuners/nm131.h|  13 +
 drivers/media/tuners/qm1d1c0042.c   | 448 ---
 drivers/media/tuners/qm1d1c0042.h   |  37 --
 drivers/media/tuners/qm1d1c004x.c   | 242 
 drivers/media/tuners/qm1d1c004x.h   |  23 +
 drivers/media/tuners/tda2014x.c | 358 
 drivers/media/tuners/tda2014x.h |  13 +
 drivers/media/usb/em28xx/Kconfig|   3 +
 drivers/media/usb/em28xx/Makefile   |   1 +
 drivers/media/usb/em28xx/em28xx-cards.c |  27 +
 

[media 0/6] DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
From: Буди Романто, AreMa Inc 


DVB driver for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S 
USB dongle
==

Status: stable

Features:
1. in addition to the real frequency:
ISDB-S : freq. channel ID
ISDB-T : freq# (I/O# +128), ch#, ch# +64 for CATV
2. in addition to TSID:
ISDB-S : slot#

Supported Cards & Main components:
A. EarthSoft PT3:
1. Altera   EP4CGX15BF14C8N : customized FPGA PCI bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. SharpVA4M6JC2103 : contains 2 ISDB-S + 2 ISDB-T tuners
ISDB-S : Sharp QM1D1C0042 RF-IC, chip ver. 0x48
ISDB-T : MaxLinear CMOS Hybrid TV MxL301RF

B. PLEX PX-Q3PE:
1. ASICEN   ASV5220 : PCI-E bridge
2. Toshiba  TC90522XBG  : quad demodulator (2ch OFDM + 2ch 8PSK)
3. NXP Semiconductors TDA20142  : ISDB-S tuner
4. Newport Media NM120  : ISDB-T tuner
5. ASICEN   ASIE5606X8  : crypting controller

C. PLEX PX-BCUD (ISDB-S USB dongle)
1. EmpiaEM28178 : USB I/F (courtesy of Nagahama Satoshi)
2. Toshiba  TC90532 : demodulator (using TC90522 driver)
3. SharpQM1D1C0045_2: ISDB-S RF-IC, chip ver. 0x68

Notes:
This is a complex but smartly polished driver package containing 2 (dual head)
PCI-E bridge I/F drivers, single demodulator frontend, and 4 (quad tail) tuner 
drivers,
plus, simplified Nagahama's patch for PLEX PX-BCUD (ISDB-S USB dongle).
Generic registration related procedures (subdevices, frontend, etc.) summarized 
in
ptx_common.c are very useful also for other DVB drivers, and would be very 
handy if
inserted into the core (e.g. dvb_frontend.c & dvb_frontend.h).

For example, currently, the entity of struct dvb_frontend is created sometimes 
in
demodulators, some in tuners, or even in the parent (bridge) drivers. IMHO, 
this entity
should be provided by dvb_core. ptx_register_fe() included in ptx_common.c 
simplifies
the tasks and in fact, significantly reduces coding & kernel size.

Also, currently dvb_frontend's .demodulator_priv & .tuner_priv are of type 
(void *).
These should be changed to (struct i2c_client *), IMHO. Private data for 
demodulator
or tuner should be attached under i2c_client, using i2c_set_clientdata() for 
instance.

FILENAMESUPPORTED CHIPS
===
tc90522.c   TC90522XBG, TC90532XBG,...
tda2014x.c  TDA20142
qm1d1c004x.cQM1D1C0042, QM1D1C0045, QM1D1C0045_2
nm131.c NM131, NM130, NM120
mxl301rf.c  MxL301RF
pt3_pci.c   EP4CGX15BF14C8N
pxq3pe_pci.cASV5220

Full package:
- URL:  https://github.com/knight-rider/ptx


Буди Романто, AreMa Inc (6):
  Raise adapter number limit
  drop backstabbing drivers
  Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards &
PX-BCUD ISDB-S USB dongle
  Tuners for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD
ISDB-S USB dongle
  PCIE bridge driver for PT3 & PX-Q3PE
  Bridge driver for PLEX PX-BCUD ISDB-S USB dongle

 drivers/media/Kconfig   |   5 +-
 drivers/media/dvb-core/Kconfig  |   4 +-
 drivers/media/dvb-core/dvbdev.h |   2 +-
 drivers/media/dvb-frontends/tc90522.c   | 964 +++-
 drivers/media/dvb-frontends/tc90522.h   |  36 +-
 drivers/media/pci/Kconfig   |   2 +-
 drivers/media/pci/Makefile  |   2 +-
 drivers/media/pci/pt3/Kconfig   |  10 -
 drivers/media/pci/pt3/Makefile  |   8 -
 drivers/media/pci/pt3/pt3.c | 874 -
 drivers/media/pci/pt3/pt3.h | 186 --
 drivers/media/pci/pt3/pt3_dma.c | 225 
 drivers/media/pci/pt3/pt3_i2c.c | 240 
 drivers/media/pci/ptx/Kconfig   |  23 +
 drivers/media/pci/ptx/Makefile  |   6 +
 drivers/media/pci/ptx/pt3.c | 426 ++
 drivers/media/pci/ptx/ptx_common.c  | 266 +
 drivers/media/pci/ptx/ptx_common.h  |  76 +++
 drivers/media/pci/ptx/pxq3pe.c  | 585 +++
 drivers/media/tuners/Kconfig|  21 +-
 drivers/media/tuners/Makefile   |   4 +-
 drivers/media/tuners/mxl301rf.c | 471 ++--
 drivers/media/tuners/mxl301rf.h |  19 +-
 drivers/media/tuners/nm131.c| 248 
 drivers/media/tuners/nm131.h|  13 +
 drivers/media/tuners/qm1d1c0042.c   | 448 ---
 drivers/media/tuners/qm1d1c0042.h   |  37 --
 drivers/media/tuners/qm1d1c004x.c   | 242 
 drivers/media/tuners/qm1d1c004x.h   |  23 +
 drivers/media/tuners/tda2014x.c | 358 
 drivers/media/tuners/tda2014x.h |  13 +
 drivers/media/usb/em28xx/Kconfig|   3 +
 drivers/media/usb/em28xx/Makefile   |   1 +
 drivers/media/usb/em28xx/em28xx-cards.c |  27 +
 

[media 3/6] Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
  return 1049480 + 38360 * fno;   /* BS   
*/
+   else if (fno < 24)
+   return 1613000 + 4 * (fno - 12);/* CS110 right  
*/
+   return 1593000 + 4 * (fno - 24);/* CS110 left   
*/
+   }
+
+   void s_kHz(u32 *f)
+   {
+   *f =*f > 300 ? fno2kHz(14)  :   /* max kHz, CNN 
*/
+   *f >= 1049480 ? *f  :   /* min real kHz 
*/
+   *f > 48 ? fno2kHz(4):   /* BS11 etc.
*/
+   fno2kHz(*f - 1);
+   }
+
+   u32 fno2Hz(u32 fno)
+   {
+   return  (fno > 112 ? 557 : 93 + 6 * fno + (fno < 12 ? 0 : fno < 
17 ? 2 : fno < 63 ? 0 : 2)) * 100 + 142857;
+   }
+
+   void t_Hz(u32 *f)
+   {
+   *f =*f >= 9000  ? *f:   /* 
real_freq Hz */
+   *f > 255? fno2Hz(77):   /* NHK  
*/
+   *f > 127? fno2Hz(*f - 128)  :   /* 
freqno (IO#) */
+   *f > 63 ? (*f -= 64,/* CATV 
*/
+   *f > 22 ? fno2Hz(*f - 1):   /* 
C23-C62  */
+   *f > 12 ? fno2Hz(*f - 10)   :   /* 
C13-C22  */
+   fno2Hz(77)) :
+   *f > 62 ? fno2Hz(77):
+   *f > 12 ? fno2Hz(*f + 50)   :   /* 
13-62*/
+   *f > 3  ? fno2Hz(*f +  9)   :   /*  
4-12*/
+   *f  ? fno2Hz(*f -  1)   :   /*  1-3 
*/
+   fno2Hz(77);
+   }
+   struct i2c_client   *d  = fe->demodulator_priv;
+   enum fe_status  *festat = i2c_get_clientdata(d);
+   u16 set_id  = fe->dtv_property_cache.stream_id,
+   i   = 999;
+   u8  data[16];
+
+   if (!retune)/* once is enough */
+   return 0;
+   *festat = 0;
+   if (fe->dtv_property_cache.delivery_system == SYS_ISDBT)
+   goto ISDBT;
+
+   s_kHz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   if  ((tc90522_r(d, 0xC3, data, 1), !(data[0] & 0x10))   
&&  /* locked   */
+   (tc90522_r(d, 0xCE, data, 2), *(u16 *)data != 0)
&&  /* valid TSID   */
+   tc90522_r(d, 0xC3, data, 1) 
&&
+   tc90522_r(d, 0xCE, data, 16))
+   break;
+   msleep_interruptible(5);
+   }
+   if (!i)
+   goto ERR;
+   for (i = 0; i < 8; i++) {
+   u16 tsid = tc90522_n2int(data + i*2, 2);
+
+   if ((tsid == set_id || set_id == i) &&
+   tc90522_w(d, 0x8F, tsid >> 8)   &&
+   tc90522_w(d, 0x90, tsid & 0xFF) &&
+   tc90522_r(d, 0xE6, data, 2) &&
+   tc90522_n2int(data, 2) == tsid)
+   goto LOCK;
+   }
+   goto ERR;
+ISDBT:
+   t_Hz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   boolretryov,
+   lock0,
+   lock1;
+   if (!tc90522_r(d, 0x80, data, 1) || !tc90522_r(d, 0xB0, data + 
1, 1))
+   break;
+   retryov = data[0] & 0b1000 ? true : false;
+   lock0   = data[0] & 0b1000 ? false : true;
+   lock1   = data[1] & 0b1000 ? true : false;
+   if (lock0 && lock1) {
+LOCK:
+   *festat = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_LOCK;
+   *stat = *festat;
+   return 0;
+   }
+   if (retryov)
+   break;
+   msleep_interruptible(1);
+   }
+ERR:
+   *stat = *festat;
+   return -ETIMEDOUT;
+}
+
+static struct dvb_frontend_ops tc90522_ops = {
+   .info = {
+   .name = TC90522_MODNAME,
+   .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO | 
FE_CAN_QAM_AUTO | FE_CAN_MULTISTREAM |
+   FE_CAN_TRANSMISSION_MODE_AUTO | 
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
+   .frequency_min  = 1,/* actual limit settings are 
set by .tune */
+   .frequency_max  = 77000,
+   },
+   

[media 3/6] Demodulator for Earthsoft PT3, PLEX PX-Q3PE ISDB-S/T PCIE cards & PX-BCUD ISDB-S USB dongle

2016-04-04 Thread info
S   
*/
+   else if (fno < 24)
+   return 1613000 + 4 * (fno - 12);/* CS110 right  
*/
+   return 1593000 + 4 * (fno - 24);/* CS110 left   
*/
+   }
+
+   void s_kHz(u32 *f)
+   {
+   *f =*f > 300 ? fno2kHz(14)  :   /* max kHz, CNN 
*/
+   *f >= 1049480 ? *f  :   /* min real kHz 
*/
+   *f > 48 ? fno2kHz(4):   /* BS11 etc.
*/
+   fno2kHz(*f - 1);
+   }
+
+   u32 fno2Hz(u32 fno)
+   {
+   return  (fno > 112 ? 557 : 93 + 6 * fno + (fno < 12 ? 0 : fno < 
17 ? 2 : fno < 63 ? 0 : 2)) * 100 + 142857;
+   }
+
+   void t_Hz(u32 *f)
+   {
+   *f =*f >= 9000  ? *f:   /* 
real_freq Hz */
+   *f > 255? fno2Hz(77):   /* NHK  
*/
+   *f > 127? fno2Hz(*f - 128)  :   /* 
freqno (IO#) */
+   *f > 63 ? (*f -= 64,/* CATV 
*/
+   *f > 22 ? fno2Hz(*f - 1):   /* 
C23-C62  */
+   *f > 12 ? fno2Hz(*f - 10)   :   /* 
C13-C22  */
+   fno2Hz(77)) :
+   *f > 62 ? fno2Hz(77):
+   *f > 12 ? fno2Hz(*f + 50)   :   /* 
13-62*/
+   *f > 3  ? fno2Hz(*f +  9)   :   /*  
4-12*/
+   *f  ? fno2Hz(*f -  1)   :   /*  1-3 
*/
+   fno2Hz(77);
+   }
+   struct i2c_client   *d  = fe->demodulator_priv;
+   enum fe_status  *festat = i2c_get_clientdata(d);
+   u16 set_id  = fe->dtv_property_cache.stream_id,
+   i   = 999;
+   u8  data[16];
+
+   if (!retune)/* once is enough */
+   return 0;
+   *festat = 0;
+   if (fe->dtv_property_cache.delivery_system == SYS_ISDBT)
+   goto ISDBT;
+
+   s_kHz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   if  ((tc90522_r(d, 0xC3, data, 1), !(data[0] & 0x10))   
&&  /* locked   */
+   (tc90522_r(d, 0xCE, data, 2), *(u16 *)data != 0)
&&  /* valid TSID   */
+   tc90522_r(d, 0xC3, data, 1) 
&&
+   tc90522_r(d, 0xCE, data, 16))
+   break;
+   msleep_interruptible(5);
+   }
+   if (!i)
+   goto ERR;
+   for (i = 0; i < 8; i++) {
+   u16 tsid = tc90522_n2int(data + i*2, 2);
+
+   if ((tsid == set_id || set_id == i) &&
+   tc90522_w(d, 0x8F, tsid >> 8)   &&
+   tc90522_w(d, 0x90, tsid & 0xFF) &&
+   tc90522_r(d, 0xE6, data, 2) &&
+   tc90522_n2int(data, 2) == tsid)
+   goto LOCK;
+   }
+   goto ERR;
+ISDBT:
+   t_Hz(>dtv_property_cache.frequency);
+   if (fe->ops.tuner_ops.set_params(fe))
+   return -EIO;
+   while (i--) {
+   boolretryov,
+   lock0,
+   lock1;
+   if (!tc90522_r(d, 0x80, data, 1) || !tc90522_r(d, 0xB0, data + 
1, 1))
+   break;
+   retryov = data[0] & 0b1000 ? true : false;
+   lock0   = data[0] & 0b1000 ? false : true;
+   lock1   = data[1] & 0b1000 ? true : false;
+   if (lock0 && lock1) {
+LOCK:
+   *festat = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_LOCK;
+   *stat = *festat;
+   return 0;
+   }
+   if (retryov)
+   break;
+   msleep_interruptible(1);
+   }
+ERR:
+   *stat = *festat;
+   return -ETIMEDOUT;
+}
+
+static struct dvb_frontend_ops tc90522_ops = {
+   .info = {
+   .name = TC90522_MODNAME,
+   .caps = FE_CAN_INVERSION_AUTO | FE_CAN_FEC_AUTO | 
FE_CAN_QAM_AUTO | FE_CAN_MULTISTREAM |
+   FE_CAN_TRANSMISSION_MODE_AUTO | 
FE_CAN_GUARD_INTERVAL_AUTO | FE_CAN_HIERARCHY_AUTO,
+   .frequency_min  = 1,/* actual limit settings are 
set by .tune */
+   .frequency_max  = 77000,
+   },
+   .get_frontend_algo = tc90522_get_frontend_algo,
+   .read_snr

[media 3/8] drop backstabbing drivers

2016-03-31 Thread info
From: Буди Романто, AreMa Inc <knightri...@are.ma>

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc <knightri...@are.ma>
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada <tsk...@gmail.com>
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_t

[media 3/8] drop backstabbing drivers

2016-03-31 Thread info
From: Буди Романто, AreMa Inc 

Obsoleted & superseded, please read cover letter for details.

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/dvb-frontends/tc90522.c | 840 
 drivers/media/dvb-frontends/tc90522.h |  42 --
 drivers/media/pci/pt3/Kconfig |  10 -
 drivers/media/pci/pt3/Makefile|   8 -
 drivers/media/pci/pt3/pt3.c   | 874 --
 drivers/media/pci/pt3/pt3.h   | 186 
 drivers/media/pci/pt3/pt3_dma.c   | 225 -
 drivers/media/pci/pt3/pt3_i2c.c   | 240 --
 drivers/media/tuners/mxl301rf.c   | 349 --
 drivers/media/tuners/mxl301rf.h   |  26 -
 drivers/media/tuners/qm1d1c0042.c | 448 -
 drivers/media/tuners/qm1d1c0042.h |  37 --
 12 files changed, 3285 deletions(-)
 delete mode 100644 drivers/media/dvb-frontends/tc90522.c
 delete mode 100644 drivers/media/dvb-frontends/tc90522.h
 delete mode 100644 drivers/media/pci/pt3/Kconfig
 delete mode 100644 drivers/media/pci/pt3/Makefile
 delete mode 100644 drivers/media/pci/pt3/pt3.c
 delete mode 100644 drivers/media/pci/pt3/pt3.h
 delete mode 100644 drivers/media/pci/pt3/pt3_dma.c
 delete mode 100644 drivers/media/pci/pt3/pt3_i2c.c
 delete mode 100644 drivers/media/tuners/mxl301rf.c
 delete mode 100644 drivers/media/tuners/mxl301rf.h
 delete mode 100644 drivers/media/tuners/qm1d1c0042.c
 delete mode 100644 drivers/media/tuners/qm1d1c0042.h

diff --git a/drivers/media/dvb-frontends/tc90522.c 
b/drivers/media/dvb-frontends/tc90522.c
deleted file mode 100644
index 31cd325..000
--- a/drivers/media/dvb-frontends/tc90522.c
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- * Toshiba TC90522 Demodulator
- *
- * Copyright (C) 2014 Akihiro Tsukada 
- *
- * 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 version 2.
- *
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- */
-
-/*
- * NOTICE:
- * This driver is incomplete and lacks init/config of the chips,
- * as the necessary info is not disclosed.
- * It assumes that users of this driver (such as a PCI bridge of
- * DTV receiver cards) properly init and configure the chip
- * via I2C *before* calling this driver's init() function.
- *
- * Currently, PT3 driver is the only one that uses this driver,
- * and contains init/config code in its firmware.
- * Thus some part of the code might be dependent on PT3 specific config.
- */
-
-#include 
-#include 
-#include 
-#include "dvb_math.h"
-#include "tc90522.h"
-
-#define TC90522_I2C_THRU_REG 0xfe
-
-#define TC90522_MODULE_IDX(addr) (((u8)(addr) & 0x02U) >> 1)
-
-struct tc90522_state {
-   struct tc90522_config cfg;
-   struct dvb_frontend fe;
-   struct i2c_client *i2c_client;
-   struct i2c_adapter tuner_i2c;
-
-   bool lna;
-};
-
-struct reg_val {
-   u8 reg;
-   u8 val;
-};
-
-static int
-reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
-{
-   int i, ret;
-   struct i2c_msg msg;
-
-   ret = 0;
-   msg.addr = state->i2c_client->addr;
-   msg.flags = 0;
-   msg.len = 2;
-   for (i = 0; i < num; i++) {
-   msg.buf = (u8 *)[i];
-   ret = i2c_transfer(state->i2c_client->adapter, , 1);
-   if (ret == 0)
-   ret = -EIO;
-   if (ret < 0)
-   return ret;
-   }
-   return 0;
-}
-
-static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
-{
-   struct i2c_msg msgs[2] = {
-   {
-   .addr = state->i2c_client->addr,
-   .flags = 0,
-   .buf = ,
-   .len = 1,
-   },
-   {
-   .addr = state->i2c_client->addr,
-   .flags = I2C_M_RD,
-   .buf = val,
-   .len = len,
-   },
-   };
-   int ret;
-
-   ret = i2c_transfer(state->i2c_client->adapter, msgs, ARRAY_SIZE(msgs));
-   if (ret == ARRAY_SIZE(msgs))
-   ret = 0;
-   else if (ret >= 0)
-   ret = -EIO;
-   return ret;
-}
-
-static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
-{
-   return container_of(c, struct tc90522_state, cfg);
-}
-
-
-static int tc90522s_set_tsid(struct dvb_frontend *fe)
-{
-   struct reg_val set_tsid[] = {
-   { 0x8f, 00 },
-   { 0x90, 00 }
-   };
-
-   set_tsid[0].val = (fe->dtv_property_cache.stream_id & 0xff00) >> 8;
-   

[media 5/8] MaxLinear MxL301RF ISDB-T tuner

2016-03-31 Thread info
From: Буди Романто, AreMa Inc 

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/mxl301rf.c | 220 
 drivers/media/tuners/mxl301rf.h |  23 +
 2 files changed, 243 insertions(+)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h

diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..916b06f
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,220 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  buf[len + 1];
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   buf[0] = slvadr;
+   memcpy(buf + 1, dat, len);
+   return i2c_transfer(d->adapter, msg, 1) == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8 buf[len + 1];
+
+   buf[0] = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   return mxl301rf_w(fe, 0xFE, buf, len + 1);
+}
+
+u8 mxl301rf_r(struct dvb_frontend *fe, u8 regadr)
+{
+   struct i2c_client   *d  = fe->demodulator_priv,
+   *t  = fe->tuner_priv;
+   u8  wbuf[]  = {0xFB, regadr},
+   rbuf[]  = {0xFE, (t->addr << 1) | 1, 0};
+   struct i2c_msg msg[] = {
+   {.addr  = d->addr,  .flags  = 0,.buf= rbuf, 
.len= 2,},
+   {.addr  = d->addr,  .flags  = I2C_M_RD, .buf= rbuf 
+ 2, .len= 1,},
+   };
+   mxl301rf_w_tuner(fe, wbuf, sizeof(wbuf));
+   return t->addr && (i2c_transfer(d->adapter, msg, 2) == 2) ? rbuf[2] : 0;
+}
+
+enum mxl301rf_agc {
+   MXL301RF_AGC_AUTO,
+   MXL301RF_AGC_MANUAL,
+};
+
+int mxl301rf_set_agc(struct dvb_frontend *fe, enum mxl301rf_agc agc)
+{
+   u8  dat = agc == MXL301RF_AGC_AUTO ? 0x40 : 0x00,
+   imsrst  = 0x01 << 6;
+   int err = mxl301rf_w(fe, 0x25, , 1);
+
+   dat = 0x4c | (agc == MXL301RF_AGC_AUTO ? 0 : 1);
+   return  err ||
+   mxl301rf_w(fe, 0x23, , 1)   ||
+   mxl301rf_w(fe, 0x01, , 1);
+}
+
+int mxl301rf_sleep(struct dvb_frontend *fe)
+{
+   u8  buf = (1 << 7) | (1 << 4),
+   dat[]   = {0x01, 0x00, 0x13, 0x00};
+   int err = mxl301rf_set_agc(fe, MXL301RF_AGC_MANUAL);
+
+   if (err)
+   return err;
+   mxl301rf_w_tuner(fe, dat, sizeof(dat));
+   return mxl301rf_w(fe, 0x03, , 1);
+}
+
+int mxl301rf_tune(struct dvb_frontend *fe)
+{
+   struct shf_dvbt {
+   u32 freq,   /* Channel center frequency @ kHz   
*/
+   freq_th;/* Offset frequency threshold @ kHz 
*/
+   u8  shf_val,/* Spur shift value 
*/
+   shf_dir;/* Spur shift direction 
*/
+   } shf_dvbt_tab[] = {
+   { 64500, 500, 0x92, 0x07},
+   {191500, 300, 0xe2, 0x07},
+   {205500, 500, 0x2c, 0x04},
+   {212500, 500, 0x1e, 0x04},
+   {226500, 500, 0xd4, 0x07},
+   { 99143, 500, 0x9c, 0x07},
+   {173143, 500, 0xd4, 0x07},
+   {191143, 300, 0xd4, 0x07},
+   {207143, 500, 0xce, 0x07},
+   {225143, 500, 0xce, 0x07},
+   {243143, 500, 0xd4, 0x07},
+   {261143, 500, 0xd4, 0x07},
+   {291143, 500, 0xd4, 0x07},
+   {339143, 500, 0x2c, 0x04},
+   {117143, 500, 0x7a, 0x07},
+   {135143, 300, 0x7a, 0x07},
+   {153143, 500, 0x01, 0x07}
+   };
+   u8 rf_dat[] = {
+   0x13, 0x00, /* abort tune   */
+   0x3b, 0xc0,
+   0x3b, 0x80,
+   0x10, 0x95, /* BW   */
+   0x1a, 0x05,
+   0x61, 0x00,
+   0x62, 0xa0,
+   0x11, 0x40, /* 2 bytes to store RF  */
+   0x12, 0x0e, /* 2 bytes to store RF  */
+   0x13, 0x01  /* start tune   */
+   };
+   const u8 idac[] = {

[media 5/8] MaxLinear MxL301RF ISDB-T tuner

2016-03-31 Thread info
From: Буди Романто, AreMa Inc 

Signed-off-by: Буди Романто, AreMa Inc 
---
 drivers/media/tuners/mxl301rf.c | 220 
 drivers/media/tuners/mxl301rf.h |  23 +
 2 files changed, 243 insertions(+)
 create mode 100644 drivers/media/tuners/mxl301rf.c
 create mode 100644 drivers/media/tuners/mxl301rf.h

diff --git a/drivers/media/tuners/mxl301rf.c b/drivers/media/tuners/mxl301rf.c
new file mode 100644
index 000..916b06f
--- /dev/null
+++ b/drivers/media/tuners/mxl301rf.c
@@ -0,0 +1,220 @@
+/*
+   Sharp VA4M6JC2103 - Earthsoft PT3 ISDB-T tuner MaxLinear CMOS Hybrid TV 
MxL301RF
+
+   Copyright (C) Budi Rachmanto, AreMa Inc. 
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+*/
+
+#include "dvb_frontend.h"
+#include "mxl301rf.h"
+
+int mxl301rf_w(struct dvb_frontend *fe, u8 slvadr, const u8 *dat, int len)
+{
+   struct i2c_client   *d  = fe->demodulator_priv;
+   u8  buf[len + 1];
+   struct i2c_msg  msg[] = {
+   {.addr = d->addr,   .flags = 0, .buf = buf, .len = 
len + 1,},
+   };
+
+   buf[0] = slvadr;
+   memcpy(buf + 1, dat, len);
+   return i2c_transfer(d->adapter, msg, 1) == 1 ? 0 : -EIO;
+}
+
+int mxl301rf_w_tuner(struct dvb_frontend *fe, const u8 *dat, int len)
+{
+   u8 buf[len + 1];
+
+   buf[0] = ((struct i2c_client *)fe->tuner_priv)->addr << 1;
+   memcpy(buf + 1, dat, len);
+   return mxl301rf_w(fe, 0xFE, buf, len + 1);
+}
+
+u8 mxl301rf_r(struct dvb_frontend *fe, u8 regadr)
+{
+   struct i2c_client   *d  = fe->demodulator_priv,
+   *t  = fe->tuner_priv;
+   u8  wbuf[]  = {0xFB, regadr},
+   rbuf[]  = {0xFE, (t->addr << 1) | 1, 0};
+   struct i2c_msg msg[] = {
+   {.addr  = d->addr,  .flags  = 0,.buf= rbuf, 
.len= 2,},
+   {.addr  = d->addr,  .flags  = I2C_M_RD, .buf= rbuf 
+ 2, .len= 1,},
+   };
+   mxl301rf_w_tuner(fe, wbuf, sizeof(wbuf));
+   return t->addr && (i2c_transfer(d->adapter, msg, 2) == 2) ? rbuf[2] : 0;
+}
+
+enum mxl301rf_agc {
+   MXL301RF_AGC_AUTO,
+   MXL301RF_AGC_MANUAL,
+};
+
+int mxl301rf_set_agc(struct dvb_frontend *fe, enum mxl301rf_agc agc)
+{
+   u8  dat = agc == MXL301RF_AGC_AUTO ? 0x40 : 0x00,
+   imsrst  = 0x01 << 6;
+   int err = mxl301rf_w(fe, 0x25, , 1);
+
+   dat = 0x4c | (agc == MXL301RF_AGC_AUTO ? 0 : 1);
+   return  err ||
+   mxl301rf_w(fe, 0x23, , 1)   ||
+   mxl301rf_w(fe, 0x01, , 1);
+}
+
+int mxl301rf_sleep(struct dvb_frontend *fe)
+{
+   u8  buf = (1 << 7) | (1 << 4),
+   dat[]   = {0x01, 0x00, 0x13, 0x00};
+   int err = mxl301rf_set_agc(fe, MXL301RF_AGC_MANUAL);
+
+   if (err)
+   return err;
+   mxl301rf_w_tuner(fe, dat, sizeof(dat));
+   return mxl301rf_w(fe, 0x03, , 1);
+}
+
+int mxl301rf_tune(struct dvb_frontend *fe)
+{
+   struct shf_dvbt {
+   u32 freq,   /* Channel center frequency @ kHz   
*/
+   freq_th;/* Offset frequency threshold @ kHz 
*/
+   u8  shf_val,/* Spur shift value 
*/
+   shf_dir;/* Spur shift direction 
*/
+   } shf_dvbt_tab[] = {
+   { 64500, 500, 0x92, 0x07},
+   {191500, 300, 0xe2, 0x07},
+   {205500, 500, 0x2c, 0x04},
+   {212500, 500, 0x1e, 0x04},
+   {226500, 500, 0xd4, 0x07},
+   { 99143, 500, 0x9c, 0x07},
+   {173143, 500, 0xd4, 0x07},
+   {191143, 300, 0xd4, 0x07},
+   {207143, 500, 0xce, 0x07},
+   {225143, 500, 0xce, 0x07},
+   {243143, 500, 0xd4, 0x07},
+   {261143, 500, 0xd4, 0x07},
+   {291143, 500, 0xd4, 0x07},
+   {339143, 500, 0x2c, 0x04},
+   {117143, 500, 0x7a, 0x07},
+   {135143, 300, 0x7a, 0x07},
+   {153143, 500, 0x01, 0x07}
+   };
+   u8 rf_dat[] = {
+   0x13, 0x00, /* abort tune   */
+   0x3b, 0xc0,
+   0x3b, 0x80,
+   0x10, 0x95, /* BW   */
+   0x1a, 0x05,
+   0x61, 0x00,
+   0x62, 0xa0,
+   0x11, 0x40, /* 2 bytes to store RF  */
+   0x12, 0x0e, /* 2 bytes to store RF  */
+   0x13, 0x01  /* start tune   */
+   };
+   const u8 idac[] = {
+   0x0d, 0x00,
+   0x0c, 

[media 7/8] PCIE bridge driver for PT3 & PX-Q3PE

2016-03-31 Thread info
le_device(pdev) ||
+   pci_set_dma_mask(pdev, DMA_BIT_MASK(32))||
+   pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(32)) ||
+   pci_request_regions(pdev, name)) {
+   kfree(card);
+   return NULL;
+   }
+   pci_set_drvdata(pdev, card);
+   return card;
+}
+
+int ptx_i2c_add_adapter(struct ptx_card *card, const struct i2c_algorithm 
*algo)
+{
+   struct i2c_adapter *i2c = >i2c;
+
+   i2c->algo   = algo;
+   i2c->dev.parent = >pdev->dev;
+   strcpy(i2c->name, card->name);
+   i2c_set_adapdata(i2c, card);
+   mutex_init(>lock);
+   return  i2c_add_adapter(i2c);
+}
+
+void ptx_unregister_subdev(struct i2c_client *c)
+{
+   if (!c)
+   return;
+   if (c->dev.driver)
+   module_put(c->dev.driver->owner);
+   i2c_unregister_device(c);
+}
+
+struct i2c_client *ptx_register_subdev(struct i2c_adapter *i2c, struct 
dvb_frontend *fe, u16 adr, char *name)
+{
+   struct i2c_client   *c;
+   struct i2c_board_info   info = {
+   .platform_data  = fe,
+   .addr   = adr,
+   };
+
+   strlcpy(info.type, name, I2C_NAME_SIZE);
+   request_module("%s", info.type);
+   c = i2c_new_device(i2c, );
+   if (!c)
+   return NULL;
+   if (c->dev.driver && try_module_get(c->dev.driver->owner))
+   return c;
+   ptx_unregister_subdev(c);
+   return NULL;
+}
+
+void ptx_unregister_fe(struct dvb_frontend *fe)
+{
+   if (!fe)
+   return;
+   if (fe->frontend_priv)
+   dvb_unregister_frontend(fe);
+   ptx_unregister_subdev(fe->tuner_priv);
+   ptx_unregister_subdev(fe->demodulator_priv);
+   kfree(fe);
+}
+
+struct dvb_frontend *ptx_register_fe(struct i2c_adapter *i2c, struct 
dvb_adapter *dvb, const struct ptx_subdev_info *info)
+{
+   struct dvb_frontend *fe = kzalloc(sizeof(struct dvb_frontend), 
GFP_KERNEL);
+
+   if (!fe)
+   return  NULL;
+   fe->demodulator_priv= ptx_register_subdev(i2c, fe, 
info->demod_addr, info->demod_name);
+   fe->tuner_priv  = ptx_register_subdev(i2c, fe, 
info->tuner_addr, info->tuner_name);
+   if (info->type)
+   fe->ops.delsys[0] = info->type;
+   if (!fe->demodulator_priv || !fe->tuner_priv || (dvb && 
dvb_register_frontend(dvb, fe))) {
+   ptx_unregister_fe(fe);
+   return  NULL;
+   }
+   return fe;
+}
+
+void ptx_unregister_adap(struct ptx_card *card)
+{
+   int i   = card->adapn - 1;
+   struct ptx_adap *adap   = card->adap + i;
+
+   for (; i >= 0; i--, adap--) {
+   ptx_unregister_fe(adap->fe);
+   if (adap->demux.dmx.close)
+   adap->demux.dmx.close(>demux.dmx);
+   if (adap->dmxdev.filter)
+   dvb_dmxdev_release(>dmxdev);
+   if (adap->demux.cnt_storage)
+   dvb_dmx_release(>demux);
+   if (adap->dvb.name)
+   dvb_unregister_adapter(>dvb);
+   }
+   i2c_del_adapter(>i2c);
+   pci_release_regions(card->pdev);
+   pci_set_drvdata(card->pdev, NULL);
+   pci_disable_device(card->pdev);
+   kfree(card);
+}
+
+DVB_DEFINE_MOD_OPT_ADAPTER_NR(adap_no);
+int ptx_register_adap(struct ptx_card *card, const struct ptx_subdev_info 
*info,
+   int (*thread)(void *), int (*dma)(struct ptx_adap *, 
bool))
+{
+   struct ptx_adap *adap;
+   u8  i;
+   int err;
+
+   card->thread= thread;
+   card->dma   = dma;
+   for (i = 0, adap = card->adap; i < card->adapn; i++, adap++) {
+   struct dvb_adapter  *dvb= >dvb;
+   struct dvb_demux*demux  = >demux;
+   struct dmxdev   *dmxdev = >dmxdev;
+
+   if (dvb_register_adapter(dvb, card->name, THIS_MODULE, 
>pdev->dev, adap_no) < 0)
+   return -ENFILE;
+   demux->dmx.capabilities = DMX_TS_FILTERING | 
DMX_SECTION_FILTERING;
+   demux->feednum  = 1;
+   demux->filternum= 1;
+   demux->start_feed   = ptx_start_feed;
+   demux->stop_feed= ptx_stop_feed;
+   if (dvb_dmx_init(demux) < 0)
+   return -ENOMEM;
+   dmxdev->filternum   = 1;
+   dmxdev->demux   = >dmx;
+   err = dvb_dmxdev_init(dmxdev, dvb);
+   if (err)
+   return err;
+   adap->fe= ptx_register_fe(>car

  1   2   3   4   >