From patchwork Fri Mar 27 11:57:17 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Olli Salonen X-Patchwork-Id: 28996 Received: from mail.tu-berlin.de ([130.149.7.33]) by www.linuxtv.org with esmtp (Exim 4.72) (envelope-from ) id 1YbStS-0000Ku-Q6; Fri, 27 Mar 2015 12:57:42 +0100 X-tubIT-Incoming-IP: 209.132.180.67 Received: from vger.kernel.org ([209.132.180.67]) by mail.tu-berlin.de (exim-4.76/mailfrontend-6) with esmtp id 1YbStQ-00005G-5u; Fri, 27 Mar 2015 12:57:42 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752687AbbC0L5i (ORCPT + 1 other); Fri, 27 Mar 2015 07:57:38 -0400 Received: from mail-la0-f43.google.com ([209.85.215.43]:36401 "EHLO mail-la0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752592AbbC0L5i (ORCPT ); Fri, 27 Mar 2015 07:57:38 -0400 Received: by labe2 with SMTP id e2so68313018lab.3 for ; Fri, 27 Mar 2015 04:57:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=K8cdk7loXcZ2yKPpL4gp6euxFKkjffqkYhaQmcsxZ4U=; b=g8Iip5ZMvlngHYSDyVYyjw6HdWZBIt9zxO8qga9ZK69Srfq5JmArUl4r/ZGaB8YYNH BZFfGfbnZitaAJav4PtOXE6661gnc2xdgFXgKpTsI+wZBxTMIO2Hq06ZJy2u6kmFs6jQ T8TfC8Gw/n+cG4FojX5DY7MHr2n5Kg4Q8mj6HwFVBhUcbEUDD6KR6/s9X/MFszdIXyTz CfiePWtbgP03cIJ0JoqWtc1B94Zs9q+00bvf9ymTkyaGIRpRtWDaOCwIkhgRSRb34DpZ 3IyqcUXP7egz2UYVe3Nf/PT1hEEnaE0JIYqwLV1P0OUMzxiKkCY5QDXGALM0P4yGVVqt hbAA== X-Gm-Message-State: ALoCoQlEqFeBdbHrOhMCTR70EtMC97RkvFuVWXMZy8CQn/NiH4WAfLVVLfaR2+Yi2yPFdbve45+k X-Received: by 10.112.51.114 with SMTP id j18mr17065482lbo.97.1427457456786; Fri, 27 Mar 2015 04:57:36 -0700 (PDT) Received: from dl160.lan (37-33-50-203.bb.dnainternet.fi. [37.33.50.203]) by mx.google.com with ESMTPSA id y8sm300615lad.46.2015.03.27.04.57.35 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 27 Mar 2015 04:57:35 -0700 (PDT) From: Olli Salonen To: linux-media@vger.kernel.org Cc: Olli Salonen Subject: [PATCH 3/5] saa7164: store i2c_client for demod and tuner in state Date: Fri, 27 Mar 2015 13:57:17 +0200 Message-Id: <1427457439-1493-3-git-send-email-olli.salonen@iki.fi> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1427457439-1493-1-git-send-email-olli.salonen@iki.fi> References: <1427457439-1493-1-git-send-email-olli.salonen@iki.fi> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-PMX-Version: 6.0.0.2142326, Antispam-Engine: 2.7.2.2107409, Antispam-Data: 2015.3.27.114819 X-PMX-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1900_1999 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, REFERENCES 0, URI_ENDS_IN_HTML 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_MAILING_LIST 0, __IN_REP_TO 0, __MIME_TEXT_ONLY 0, __REFERENCES 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __TO_MALFORMED_2 0, __TO_NO_NAME 0, __URI_NO_WWW 0, __URI_NS , __YOUTUBE_RCVD 0' In order to support demodulators and tuners that have their drivers implemented as I2C drivers, the i2c_client should be stored in state for both. Signed-off-by: Olli Salonen --- drivers/media/pci/saa7164/saa7164-dvb.c | 16 ++++++++++++++++ drivers/media/pci/saa7164/saa7164.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/drivers/media/pci/saa7164/saa7164-dvb.c b/drivers/media/pci/saa7164/saa7164-dvb.c index 16ae715..6b9e8f6 100644 --- a/drivers/media/pci/saa7164/saa7164-dvb.c +++ b/drivers/media/pci/saa7164/saa7164-dvb.c @@ -425,6 +425,7 @@ int saa7164_dvb_unregister(struct saa7164_port *port) struct saa7164_dev *dev = port->dev; struct saa7164_buffer *b; struct list_head *c, *n; + struct i2c_client *client; dprintk(DBGLVL_DVB, "%s()\n", __func__); @@ -451,6 +452,21 @@ int saa7164_dvb_unregister(struct saa7164_port *port) dvb_unregister_frontend(dvb->frontend); dvb_frontend_detach(dvb->frontend); dvb_unregister_adapter(&dvb->adapter); + + /* remove I2C client for tuner */ + client = port->i2c_client_tuner; + if (client) { + module_put(client->dev.driver->owner); + i2c_unregister_device(client); + } + + /* remove I2C client for demodulator */ + client = port->i2c_client_demod; + if (client) { + module_put(client->dev.driver->owner); + i2c_unregister_device(client); + } + return 0; } diff --git a/drivers/media/pci/saa7164/saa7164.h b/drivers/media/pci/saa7164/saa7164.h index cd1a07c..37e450a 100644 --- a/drivers/media/pci/saa7164/saa7164.h +++ b/drivers/media/pci/saa7164/saa7164.h @@ -422,6 +422,9 @@ struct saa7164_port { u8 last_v_cc; u8 last_a_cc; u32 done_first_interrupt; + + struct i2c_client *i2c_client_demod; + struct i2c_client *i2c_client_tuner; }; struct saa7164_dev {