* Copyright (C) 2020 Daniel W. S. Almeida
*/
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s, %d: " fmt, __func__, __LINE__
-
#include <linux/moduleparam.h>
#include <linux/mutex.h>
#include <linux/platform_device.h>
-#include <linux/printk.h>
+#include <linux/dev_printk.h>
#include <linux/time.h>
#include <linux/types.h>
#include <linux/workqueue.h>
static int vidtv_start_streaming(struct vidtv_dvb *dvb)
{
struct vidtv_mux_init_args mux_args = {0};
+ struct device *dev = &dvb->pdev->dev;
u32 mux_buf_sz;
if (dvb->streaming) {
- pr_warn_ratelimited("Already streaming. Skipping.\n");
+ dev_warn_ratelimited(dev, "Already streaming. Skipping.\n");
return 0;
}
mux_args.priv = dvb;
dvb->streaming = true;
- dvb->mux = vidtv_mux_init(mux_args);
+ dvb->mux = vidtv_mux_init(dev, mux_args);
vidtv_mux_start_thread(dvb->mux);
- pr_info_ratelimited("Started streaming\n");
+ dev_dbg_ratelimited(dev, "Started streaming\n");
return 0;
}
static int vidtv_stop_streaming(struct vidtv_dvb *dvb)
{
+ struct device *dev = &dvb->pdev->dev;
+
dvb->streaming = false;
vidtv_mux_stop_thread(dvb->mux);
vidtv_mux_destroy(dvb->mux);
dvb->mux = NULL;
- pr_info_ratelimited("Stopped streaming\n");
+ dev_dbg_ratelimited(dev, "Stopped streaming\n");
return 0;
}
static int vidtv_bridge_probe(struct platform_device *pdev)
{
- int ret;
struct vidtv_dvb *dvb;
+ int ret;
dvb = kzalloc(sizeof(*dvb), GFP_KERNEL);
if (!dvb)
platform_set_drvdata(pdev, dvb);
- pr_info("Successfully initialized vidtv!\n");
+ dev_info(&pdev->dev, "Successfully initialized vidtv!\n");
return ret;
err_dvb:
* Copyright (C) 2020 Daniel W. S. Almeida
*/
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s, %d: " fmt, __func__, __LINE__
-
#include <linux/types.h>
#include <linux/slab.h>
-#include <linux/printk.h>
+#include <linux/dev_printk.h>
#include <linux/ratelimit.h>
#include "vidtv_channel.h"
}
static struct vidtv_psi_table_sdt_service
-*vidtv_channel_sdt_serv_cat_into_new(const struct vidtv_channel *channels)
+*vidtv_channel_sdt_serv_cat_into_new(struct vidtv_mux *m)
{
/* Concatenate the services */
- const struct vidtv_channel *cur_chnl = channels;
+ const struct vidtv_channel *cur_chnl = m->channels;
struct vidtv_psi_table_sdt_service *curr = NULL;
struct vidtv_psi_table_sdt_service *head = NULL;
curr = cur_chnl->service;
if (!curr)
- pr_warn_ratelimited("No services found for channel %s\n", cur_chnl->name);
+ dev_warn_ratelimited(m->dev,
+ "No services found for channel %s\n", cur_chnl->name);
while (curr) {
service_id = be16_to_cpu(curr->service_id);
}
static struct vidtv_psi_table_pat_program*
-vidtv_channel_pat_prog_cat_into_new(const struct vidtv_channel *channels)
+vidtv_channel_pat_prog_cat_into_new(struct vidtv_mux *m)
{
/* Concatenate the programs */
- const struct vidtv_channel *cur_chnl = channels;
+ const struct vidtv_channel *cur_chnl = m->channels;
struct vidtv_psi_table_pat_program *curr = NULL;
struct vidtv_psi_table_pat_program *head = NULL;
struct vidtv_psi_table_pat_program *tail = NULL;
curr = cur_chnl->program;
if (!curr)
- pr_warn_ratelimited("No programs found for channel %s\n", cur_chnl->name);
+ dev_warn_ratelimited(m->dev,
+ "No programs found for channel %s\n",
+ cur_chnl->name);
while (curr) {
serv_id = be16_to_cpu(curr->service_id);
m->si.sdt = vidtv_psi_sdt_table_init(m->transport_stream_id);
- programs = vidtv_channel_pat_prog_cat_into_new(m->channels);
- services = vidtv_channel_sdt_serv_cat_into_new(m->channels);
+ programs = vidtv_channel_pat_prog_cat_into_new(m);
+ services = vidtv_channel_sdt_serv_cat_into_new(m);
/* assemble all programs and assign to PAT */
vidtv_psi_pat_program_assign(m->si.pat, programs);
static const struct vidtv_demod_cnr_to_qual_s
*vidtv_match_cnr_s(struct dvb_frontend *fe)
{
- struct dtv_frontend_properties *c;
const struct vidtv_demod_cnr_to_qual_s *cnr2qual = NULL;
+ struct device *dev = fe->dvb->device;
+ struct dtv_frontend_properties *c;
u32 array_size = 0;
u32 i;
break;
default:
- pr_warn_ratelimited("%s: unsupported delivery system: %u\n",
- __func__,
- c->delivery_system);
+ dev_warn_ratelimited(dev,
+ "%s: unsupported delivery system: %u\n",
+ __func__,
+ c->delivery_system);
break;
}
* Copyright (C) 2020 Daniel W. S. Almeida
*/
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s, %d: " fmt, __func__, __LINE__
-
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
-#include <linux/printk.h>
+#include <linux/dev_printk.h>
#include <linux/ratelimit.h>
#include <linux/delay.h>
#include <linux/vmalloc.h>
m->si.pat);
if (pmt_pid > TS_LAST_VALID_PID) {
- pr_warn_ratelimited("PID: %d not found\n", pmt_pid);
+ dev_warn_ratelimited(m->dev,
+ "PID: %d not found\n", pmt_pid);
continue;
}
/* sanity check */
if (nbytes != npkts * TS_PACKET_LEN)
- pr_err_ratelimited("%d != %d\n", nbytes, npkts * TS_PACKET_LEN);
+ dev_err_ratelimited(m->dev, "%d != %d\n",
+ nbytes, npkts * TS_PACKET_LEN);
return nbytes;
}
/* if the buffer is not aligned there is a bug somewhere */
if (nbytes % TS_PACKET_LEN)
- pr_err_ratelimited("Misaligned buffer\n");
+ dev_err_ratelimited(m->dev, "Misaligned buffer\n");
if (m->on_new_packets_available_cb)
m->on_new_packets_available_cb(m->priv,
void vidtv_mux_start_thread(struct vidtv_mux *m)
{
if (m->streaming) {
- pr_warn_ratelimited("Already streaming. Skipping.\n");
+ dev_warn_ratelimited(m->dev, "Already streaming. Skipping.\n");
return;
}
}
}
-struct vidtv_mux *vidtv_mux_init(struct vidtv_mux_init_args args)
+struct vidtv_mux *vidtv_mux_init(struct device *dev,
+ struct vidtv_mux_init_args args)
{
struct vidtv_mux *m = kzalloc(sizeof(*m), GFP_KERNEL);
+ m->dev = dev;
m->timing.pcr_period_usecs = args.pcr_period_usecs;
m->timing.si_period_usecs = args.si_period_usecs;
* @priv: Private data.
*/
struct vidtv_mux {
+ struct device *dev;
+
struct vidtv_mux_timing timing;
u32 mux_rate_kbytes_sec;
void *priv;
};
-struct vidtv_mux *vidtv_mux_init(struct vidtv_mux_init_args args);
+struct vidtv_mux *vidtv_mux_init(struct device *dev,
+ struct vidtv_mux_init_args args);
void vidtv_mux_destroy(struct vidtv_mux *m);
void vidtv_mux_start_thread(struct vidtv_mux *m);
* Copyright (C) 2020 Daniel W. S. Almeida
*/
-#define pr_fmt(fmt) KBUILD_MODNAME ":%s, %d: " fmt, __func__, __LINE__
-
#include <linux/errno.h>
#include <linux/i2c.h>
#include <linux/module.h>
break;
default:
- pr_warn("%s: unsupported delivery system: %u\n",
- __func__,
- c->delivery_system);
+ dev_warn(fe->dvb->device,
+ "%s: unsupported delivery system: %u\n",
+ __func__,
+ c->delivery_system);
return -EINVAL;
}
{
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
const struct vidtv_tuner_cnr_to_qual_s *cnr2qual = NULL;
+ struct device *dev = fe->dvb->device;
u32 array_size = 0;
s32 shift;
u32 i;
break;
default:
- pr_warn_ratelimited("%s: unsupported delivery system: %u\n",
- __func__,
- c->delivery_system);
+ dev_warn_ratelimited(dev,
+ "%s: unsupported delivery system: %u\n",
+ __func__,
+ c->delivery_system);
return -EINVAL;
}