|
|
@@ -18,7 +18,6 @@
|
|
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
*/
|
|
|
|
|
|
-#include "dvb_frontend.h"
|
|
|
#include "a8293.h"
|
|
|
|
|
|
struct a8293_priv {
|
|
|
@@ -105,68 +104,8 @@ err:
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
-static void a8293_release_sec(struct dvb_frontend *fe)
|
|
|
-{
|
|
|
- a8293_set_voltage(fe, SEC_VOLTAGE_OFF);
|
|
|
-
|
|
|
- kfree(fe->sec_priv);
|
|
|
- fe->sec_priv = NULL;
|
|
|
-}
|
|
|
-
|
|
|
-struct dvb_frontend *a8293_attach(struct dvb_frontend *fe,
|
|
|
- struct i2c_adapter *i2c, const struct a8293_config *cfg)
|
|
|
-{
|
|
|
- int ret;
|
|
|
- struct a8293_priv *priv = NULL;
|
|
|
- u8 buf[2];
|
|
|
-
|
|
|
- /* allocate memory for the internal priv */
|
|
|
- priv = kzalloc(sizeof(struct a8293_priv), GFP_KERNEL);
|
|
|
- if (priv == NULL) {
|
|
|
- ret = -ENOMEM;
|
|
|
- goto err;
|
|
|
- }
|
|
|
-
|
|
|
- /* setup the priv */
|
|
|
- priv->i2c = i2c;
|
|
|
- priv->i2c_addr = cfg->i2c_addr;
|
|
|
- fe->sec_priv = priv;
|
|
|
-
|
|
|
- /* check if the SEC is there */
|
|
|
- ret = a8293_rd(priv, buf, 2);
|
|
|
- if (ret)
|
|
|
- goto err;
|
|
|
-
|
|
|
- /* ENB=0 */
|
|
|
- priv->reg[0] = 0x10;
|
|
|
- ret = a8293_wr(priv, &priv->reg[0], 1);
|
|
|
- if (ret)
|
|
|
- goto err;
|
|
|
-
|
|
|
- /* TMODE=0, TGATE=1 */
|
|
|
- priv->reg[1] = 0x82;
|
|
|
- ret = a8293_wr(priv, &priv->reg[1], 1);
|
|
|
- if (ret)
|
|
|
- goto err;
|
|
|
-
|
|
|
- fe->ops.release_sec = a8293_release_sec;
|
|
|
-
|
|
|
- /* override frontend ops */
|
|
|
- fe->ops.set_voltage = a8293_set_voltage;
|
|
|
-
|
|
|
- dev_info(&priv->i2c->dev, "%s: Allegro A8293 SEC attached\n",
|
|
|
- KBUILD_MODNAME);
|
|
|
-
|
|
|
- return fe;
|
|
|
-err:
|
|
|
- dev_dbg(&i2c->dev, "%s: failed=%d\n", __func__, ret);
|
|
|
- kfree(priv);
|
|
|
- return NULL;
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(a8293_attach);
|
|
|
-
|
|
|
static int a8293_probe(struct i2c_client *client,
|
|
|
- const struct i2c_device_id *id)
|
|
|
+ const struct i2c_device_id *id)
|
|
|
{
|
|
|
struct a8293_priv *dev;
|
|
|
struct a8293_platform_data *pdata = client->dev.platform_data;
|