[6/8] media: uniphier: add common module of DVB adapter drivers
Commit Message
This patch adds common module for UniPhier DVB adapter drivers
that equipments tuners and demod that connected by I2C and
UniPhier demux.
Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
---
drivers/media/platform/uniphier/Makefile | 5 ++
drivers/media/platform/uniphier/hsc-core.c | 8 ---
.../platform/uniphier/uniphier-adapter.c | 54 +++++++++++++++++++
.../platform/uniphier/uniphier-adapter.h | 42 +++++++++++++++
4 files changed, 101 insertions(+), 8 deletions(-)
create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.c
create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.h
Comments
2018-05-30 18:09 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
> This patch adds common module for UniPhier DVB adapter drivers
> that equipments tuners and demod that connected by I2C and
> UniPhier demux.
>
> Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
> ---
> drivers/media/platform/uniphier/Makefile | 5 ++
> drivers/media/platform/uniphier/hsc-core.c | 8 ---
> .../platform/uniphier/uniphier-adapter.c | 54 +++++++++++++++++++
> .../platform/uniphier/uniphier-adapter.h | 42 +++++++++++++++
> 4 files changed, 101 insertions(+), 8 deletions(-)
> create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.c
> create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.h
>
> diff --git a/drivers/media/platform/uniphier/Makefile b/drivers/media/platform/uniphier/Makefile
> index 0622f04d9e68..9e75ad081b77 100644
> --- a/drivers/media/platform/uniphier/Makefile
> +++ b/drivers/media/platform/uniphier/Makefile
> @@ -3,3 +3,8 @@ uniphier-dvb-y += hsc-core.o hsc-ucode.o hsc-css.o hsc-ts.o hsc-dma.o
> uniphier-dvb-$(CONFIG_DVB_UNIPHIER_LD11) += hsc-ld11.o
>
> obj-$(CONFIG_DVB_UNIPHIER) += uniphier-dvb.o
> +
> +ccflags-y += -Idrivers/media/dvb-frontends/
> +ccflags-y += -Idrivers/media/tuners/
Please add $(srctree)/ like
ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
ccflags-y += -I$(srctree)/drivers/media/tuners/
Currently, it works $(srctree)/,
but I really want to rip off the build system hack.
Hello Yamada-san,
> -----Original Message-----
> From: Masahiro Yamada <yamada.masahiro@socionext.com>
> Sent: Saturday, June 2, 2018 9:00 PM
> To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>;
> linux-media@vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel
> <linux-arm-kernel@lists.infradead.org>; Linux Kernel Mailing List
> <linux-kernel@vger.kernel.org>
> Subject: Re: [PATCH 6/8] media: uniphier: add common module of DVB adapter drivers
>
> 2018-05-30 18:09 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
> > This patch adds common module for UniPhier DVB adapter drivers
> > that equipments tuners and demod that connected by I2C and
> > UniPhier demux.
> >
> > Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
> > ---
> > drivers/media/platform/uniphier/Makefile | 5 ++
> > drivers/media/platform/uniphier/hsc-core.c | 8 ---
> > .../platform/uniphier/uniphier-adapter.c | 54 +++++++++++++++++++
> > .../platform/uniphier/uniphier-adapter.h | 42 +++++++++++++++
> > 4 files changed, 101 insertions(+), 8 deletions(-)
> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.c
> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.h
> >
> > diff --git a/drivers/media/platform/uniphier/Makefile
> b/drivers/media/platform/uniphier/Makefile
> > index 0622f04d9e68..9e75ad081b77 100644
> > --- a/drivers/media/platform/uniphier/Makefile
> > +++ b/drivers/media/platform/uniphier/Makefile
> > @@ -3,3 +3,8 @@ uniphier-dvb-y += hsc-core.o hsc-ucode.o hsc-css.o hsc-ts.o
> hsc-dma.o
> > uniphier-dvb-$(CONFIG_DVB_UNIPHIER_LD11) += hsc-ld11.o
> >
> > obj-$(CONFIG_DVB_UNIPHIER) += uniphier-dvb.o
> > +
> > +ccflags-y += -Idrivers/media/dvb-frontends/
> > +ccflags-y += -Idrivers/media/tuners/
>
>
> Please add $(srctree)/ like
>
> ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
> ccflags-y += -I$(srctree)/drivers/media/tuners/
>
>
> Currently, it works $(srctree)/,
> but I really want to rip off the build system hack.
Thanks, I agree with your opinion, but other Makefiles in drivers/media use
same hack. I don't know other way to include headers of demodulators and
tuners...
Do you have any good ideas?
Regards,
--
Katsuhiro Suzuki
>
>
>
>
>
> --
> Best Regards
> Masahiro Yamada
2018-06-04 9:08 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
> Hello Yamada-san,
>
>> -----Original Message-----
>> From: Masahiro Yamada <yamada.masahiro@socionext.com>
>> Sent: Saturday, June 2, 2018 9:00 PM
>> To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
>> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>;
>> linux-media@vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
>> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel
>> <linux-arm-kernel@lists.infradead.org>; Linux Kernel Mailing List
>> <linux-kernel@vger.kernel.org>
>> Subject: Re: [PATCH 6/8] media: uniphier: add common module of DVB adapter drivers
>>
>> 2018-05-30 18:09 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
>> > This patch adds common module for UniPhier DVB adapter drivers
>> > that equipments tuners and demod that connected by I2C and
>> > UniPhier demux.
>> >
>> > Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
>> > ---
>> > drivers/media/platform/uniphier/Makefile | 5 ++
>> > drivers/media/platform/uniphier/hsc-core.c | 8 ---
>> > .../platform/uniphier/uniphier-adapter.c | 54 +++++++++++++++++++
>> > .../platform/uniphier/uniphier-adapter.h | 42 +++++++++++++++
>> > 4 files changed, 101 insertions(+), 8 deletions(-)
>> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.c
>> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.h
>> >
>> > diff --git a/drivers/media/platform/uniphier/Makefile
>> b/drivers/media/platform/uniphier/Makefile
>> > index 0622f04d9e68..9e75ad081b77 100644
>> > --- a/drivers/media/platform/uniphier/Makefile
>> > +++ b/drivers/media/platform/uniphier/Makefile
>> > @@ -3,3 +3,8 @@ uniphier-dvb-y += hsc-core.o hsc-ucode.o hsc-css.o hsc-ts.o
>> hsc-dma.o
>> > uniphier-dvb-$(CONFIG_DVB_UNIPHIER_LD11) += hsc-ld11.o
>> >
>> > obj-$(CONFIG_DVB_UNIPHIER) += uniphier-dvb.o
>> > +
>> > +ccflags-y += -Idrivers/media/dvb-frontends/
>> > +ccflags-y += -Idrivers/media/tuners/
>>
>>
>> Please add $(srctree)/ like
>>
>> ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
>> ccflags-y += -I$(srctree)/drivers/media/tuners/
>>
>>
>> Currently, it works $(srctree)/,
>> but I really want to rip off the build system hack.
>
> Thanks, I agree with your opinion, but other Makefiles in drivers/media use
> same hack. I don't know other way to include headers of demodulators and
> tuners...
>
> Do you have any good ideas?
>
>
My suggestion is to add '$(srctree)/'.
For clarification,
Bad:
ccflags-y += -Idrivers/media/dvb-frontends/
ccflags-y += -Idrivers/media/tuners/
Good:
ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
ccflags-y += -I$(srctree)/drivers/media/tuners/
I want to fix this tree-wide,
then remove the 'addtree' from scripts/Kbuild.include
but I have not been able to find time for that.
This is a new file, so just suggested to add '$(srctree)/'
If you want to know the context:
https://patchwork.kernel.org/patch/9632347/
Hello Yamada-san,
> -----Original Message-----
> From: Masahiro Yamada <yamada.masahiro@socionext.com>
> Sent: Monday, June 4, 2018 9:53 AM
> To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>;
> linux-media@vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel
> <linux-arm-kernel@lists.infradead.org>; Linux Kernel Mailing List
> <linux-kernel@vger.kernel.org>
> Subject: Re: [PATCH 6/8] media: uniphier: add common module of DVB adapter drivers
>
> 2018-06-04 9:08 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
> > Hello Yamada-san,
> >
> >> -----Original Message-----
> >> From: Masahiro Yamada <yamada.masahiro@socionext.com>
> >> Sent: Saturday, June 2, 2018 9:00 PM
> >> To: Suzuki, Katsuhiro/?? ?? <suzuki.katsuhiro@socionext.com>
> >> Cc: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>;
> >> linux-media@vger.kernel.org; Masami Hiramatsu <masami.hiramatsu@linaro.org>;
> >> Jassi Brar <jaswinder.singh@linaro.org>; linux-arm-kernel
> >> <linux-arm-kernel@lists.infradead.org>; Linux Kernel Mailing List
> >> <linux-kernel@vger.kernel.org>
> >> Subject: Re: [PATCH 6/8] media: uniphier: add common module of DVB adapter drivers
> >>
> >> 2018-05-30 18:09 GMT+09:00 Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>:
> >> > This patch adds common module for UniPhier DVB adapter drivers
> >> > that equipments tuners and demod that connected by I2C and
> >> > UniPhier demux.
> >> >
> >> > Signed-off-by: Katsuhiro Suzuki <suzuki.katsuhiro@socionext.com>
> >> > ---
> >> > drivers/media/platform/uniphier/Makefile | 5 ++
> >> > drivers/media/platform/uniphier/hsc-core.c | 8 ---
> >> > .../platform/uniphier/uniphier-adapter.c | 54 +++++++++++++++++++
> >> > .../platform/uniphier/uniphier-adapter.h | 42 +++++++++++++++
> >> > 4 files changed, 101 insertions(+), 8 deletions(-)
> >> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.c
> >> > create mode 100644 drivers/media/platform/uniphier/uniphier-adapter.h
> >> >
> >> > diff --git a/drivers/media/platform/uniphier/Makefile
> >> b/drivers/media/platform/uniphier/Makefile
> >> > index 0622f04d9e68..9e75ad081b77 100644
> >> > --- a/drivers/media/platform/uniphier/Makefile
> >> > +++ b/drivers/media/platform/uniphier/Makefile
> >> > @@ -3,3 +3,8 @@ uniphier-dvb-y += hsc-core.o hsc-ucode.o hsc-css.o hsc-ts.o
> >> hsc-dma.o
> >> > uniphier-dvb-$(CONFIG_DVB_UNIPHIER_LD11) += hsc-ld11.o
> >> >
> >> > obj-$(CONFIG_DVB_UNIPHIER) += uniphier-dvb.o
> >> > +
> >> > +ccflags-y += -Idrivers/media/dvb-frontends/
> >> > +ccflags-y += -Idrivers/media/tuners/
> >>
> >>
> >> Please add $(srctree)/ like
> >>
> >> ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
> >> ccflags-y += -I$(srctree)/drivers/media/tuners/
> >>
> >>
> >> Currently, it works $(srctree)/,
> >> but I really want to rip off the build system hack.
> >
> > Thanks, I agree with your opinion, but other Makefiles in drivers/media use
> > same hack. I don't know other way to include headers of demodulators and
> > tuners...
> >
> > Do you have any good ideas?
> >
> >
>
>
> My suggestion is to add '$(srctree)/'.
>
> For clarification,
>
>
>
> Bad:
>
> ccflags-y += -Idrivers/media/dvb-frontends/
> ccflags-y += -Idrivers/media/tuners/
>
>
>
> Good:
>
> ccflags-y += -I$(srctree)/drivers/media/dvb-frontends/
> ccflags-y += -I$(srctree)/drivers/media/tuners/
>
>
OK, I understand.
>
>
>
> I want to fix this tree-wide,
> then remove the 'addtree' from scripts/Kbuild.include
> but I have not been able to find time for that.
>
> This is a new file, so just suggested to add '$(srctree)/'
>
>
>
> If you want to know the context:
> https://patchwork.kernel.org/patch/9632347/
>
Thank you, that's interesting issue...
Regards,
--
Katsuhiro Suzuki
>
> --
> Best Regards
> Masahiro Yamada
@@ -3,3 +3,8 @@ uniphier-dvb-y += hsc-core.o hsc-ucode.o hsc-css.o hsc-ts.o hsc-dma.o
uniphier-dvb-$(CONFIG_DVB_UNIPHIER_LD11) += hsc-ld11.o
obj-$(CONFIG_DVB_UNIPHIER) += uniphier-dvb.o
+
+ccflags-y += -Idrivers/media/dvb-frontends/
+ccflags-y += -Idrivers/media/tuners/
+
+uniphier-dvb-y += uniphier-adapter.o
@@ -256,14 +256,6 @@ static void hsc_dmaif_feed_worker(struct work_struct *work)
dma_sync_single_for_cpu(dev, dmapos, cnt, DMA_FROM_DEVICE);
for (i = 0; i < cnt; i += SZ_M2TS_PKT) {
pkt = buf->virt + buf->rd_offs + i;
-
- if (pkt[4] == 0x47 && pkt[5] == 0x1f && pkt[6] == 0xff)
- continue;
- if (pkt[5] & 0x80)
- continue;
- if (pkt[7] & 0xc0)
- continue;
-
dvb_dmx_swfilter_packets(&tsif->demux, &pkt[4], 1);
}
dma_sync_single_for_device(dev, dmapos, cnt, DMA_FROM_DEVICE);
new file mode 100644
@@ -0,0 +1,54 @@
+// SPDX-License-Identifier: GPL-2.0
+//
+// Socionext UniPhier LD20 adapter driver for ISDB.
+// Using Socionext MN884434 ISDB-S/ISDB-T demodulator and
+// SONY HELENE tuner.
+//
+// Copyright (c) 2018 Socionext Inc.
+
+#include <linux/kernel.h>
+#include <linux/of.h>
+#include <linux/of_platform.h>
+
+#include "hsc.h"
+#include "uniphier-adapter.h"
+
+int uniphier_adapter_demux_probe(struct uniphier_adapter_priv *priv)
+{
+ const struct uniphier_adapter_spec *spec = priv->spec;
+ struct device *dev = &priv->pdev->dev;
+ struct device_node *node;
+ int ret, i;
+
+ node = of_parse_phandle(dev->of_node, "demux", 0);
+ if (!node) {
+ dev_err(dev, "Failed to parse demux\n");
+ return -ENODEV;
+ }
+
+ priv->pdev_demux = of_find_device_by_node(node);
+ if (!priv->pdev_demux) {
+ dev_err(dev, "Failed to find demux device\n");
+ of_node_put(node);
+ return -ENODEV;
+ }
+ of_node_put(node);
+
+ priv->chip = platform_get_drvdata(priv->pdev_demux);
+
+ for (i = 0; i < spec->adapters; i++) {
+ ret = hsc_tsif_init(&priv->chip->tsif[i], &spec->hsc_conf[i]);
+ if (ret) {
+ dev_err(dev, "Failed to init TS I/F\n");
+ return ret;
+ }
+
+ ret = hsc_dmaif_init(&priv->chip->dmaif[i], &spec->hsc_conf[i]);
+ if (ret) {
+ dev_err(dev, "Failed to init DMA I/F\n");
+ return ret;
+ }
+ }
+
+ return 0;
+}
new file mode 100644
@@ -0,0 +1,42 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Socionext UniPhier DVB driver for High-speed Stream Controller (HSC).
+ *
+ * Copyright (c) 2018 Socionext Inc.
+ */
+
+#ifndef DVB_UNIPHIER_ADAPTER_H__
+#define DVB_UNIPHIER_ADAPTER_H__
+
+struct uniphier_adapter_spec {
+ int adapters;
+ const struct hsc_conf *hsc_conf;
+ const struct i2c_board_info *demod_i2c_info;
+ const struct i2c_board_info *tuner_i2c_info;
+};
+
+struct uniphier_adapter_fe {
+ struct i2c_client *demod_i2c;
+ struct i2c_client *tuner_i2c;
+ struct dvb_frontend *fe;
+};
+
+struct uniphier_adapter_priv {
+ const struct uniphier_adapter_spec *spec;
+
+ struct platform_device *pdev;
+ struct hsc_chip *chip;
+
+ struct platform_device *pdev_demux;
+ struct clk *demod_mclk;
+ struct gpio_desc *demod_gpio;
+ struct i2c_adapter *demod_i2c_adapter;
+ struct gpio_desc *tuner_gpio;
+ struct i2c_adapter *tuner_i2c_adapter;
+
+ struct uniphier_adapter_fe *fe;
+};
+
+int uniphier_adapter_demux_probe(struct uniphier_adapter_priv *priv);
+
+#endif /* DVB_UNIPHIER_ADAPTER_H__ */