提交 b904d081 编写于 作者: A Andrzej Pietrasiewicz 提交者: Felipe Balbi

usb: gadget: nokia: convert to new interface of f_ecm

this will let us deprecate (and remove) the old interface.
Signed-off-by: NAndrzej Pietrasiewicz <andrzej.p@samsung.com>
Signed-off-by: NKyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: NFelipe Balbi <balbi@ti.com>
上级 0383070e
...@@ -862,6 +862,7 @@ config USB_G_NOKIA ...@@ -862,6 +862,7 @@ config USB_G_NOKIA
select USB_F_ACM select USB_F_ACM
select USB_F_OBEX select USB_F_OBEX
select USB_F_PHONET select USB_F_PHONET
select USB_F_ECM
help help
The Nokia composite gadget provides support for acm, obex The Nokia composite gadget provides support for acm, obex
and phonet in only one composite gadget driver. and phonet in only one composite gadget driver.
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "u_serial.h" #include "u_serial.h"
#include "u_ether.h" #include "u_ether.h"
#include "u_phonet.h" #include "u_phonet.h"
#include "u_ecm.h"
#include "gadget_chips.h" #include "gadget_chips.h"
/* Defines */ /* Defines */
...@@ -29,20 +30,6 @@ ...@@ -29,20 +30,6 @@
#define NOKIA_VERSION_NUM 0x0211 #define NOKIA_VERSION_NUM 0x0211
#define NOKIA_LONG_NAME "N900 (PC-Suite Mode)" #define NOKIA_LONG_NAME "N900 (PC-Suite Mode)"
/*-------------------------------------------------------------------------*/
/*
* Kbuild is not very cooperative with respect to linking separately
* compiled library objects into one module. So for now we won't use
* separate compilation ... ensuring init/exit sections work to shrink
* the runtime footprint, and giving us at least some parts of what
* a "gcc --combine ... part1.c part2.c part3.c ... " build would.
*/
#define USBF_ECM_INCLUDED
#include "f_ecm.c"
#include "u_ether.h"
/*-------------------------------------------------------------------------*/
USB_GADGET_COMPOSITE_OPTIONS(); USB_GADGET_COMPOSITE_OPTIONS();
USB_ETHERNET_MODULE_PARAMETERS(); USB_ETHERNET_MODULE_PARAMETERS();
...@@ -99,14 +86,14 @@ MODULE_LICENSE("GPL"); ...@@ -99,14 +86,14 @@ MODULE_LICENSE("GPL");
/*-------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------*/
static struct usb_function *f_acm_cfg1; static struct usb_function *f_acm_cfg1;
static struct usb_function *f_acm_cfg2; static struct usb_function *f_acm_cfg2;
static u8 host_mac[ETH_ALEN]; static struct usb_function *f_ecm_cfg1;
static struct usb_function *f_ecm_cfg2;
static struct usb_function *f_obex1_cfg1; static struct usb_function *f_obex1_cfg1;
static struct usb_function *f_obex2_cfg1; static struct usb_function *f_obex2_cfg1;
static struct usb_function *f_obex1_cfg2; static struct usb_function *f_obex1_cfg2;
static struct usb_function *f_obex2_cfg2; static struct usb_function *f_obex2_cfg2;
static struct usb_function *f_phonet_cfg1; static struct usb_function *f_phonet_cfg1;
static struct usb_function *f_phonet_cfg2; static struct usb_function *f_phonet_cfg2;
static struct eth_dev *the_dev;
static struct usb_configuration nokia_config_500ma_driver = { static struct usb_configuration nokia_config_500ma_driver = {
...@@ -126,6 +113,7 @@ static struct usb_configuration nokia_config_100ma_driver = { ...@@ -126,6 +113,7 @@ static struct usb_configuration nokia_config_100ma_driver = {
}; };
static struct usb_function_instance *fi_acm; static struct usb_function_instance *fi_acm;
static struct usb_function_instance *fi_ecm;
static struct usb_function_instance *fi_obex1; static struct usb_function_instance *fi_obex1;
static struct usb_function_instance *fi_obex2; static struct usb_function_instance *fi_obex2;
static struct usb_function_instance *fi_phonet; static struct usb_function_instance *fi_phonet;
...@@ -135,6 +123,7 @@ static int __init nokia_bind_config(struct usb_configuration *c) ...@@ -135,6 +123,7 @@ static int __init nokia_bind_config(struct usb_configuration *c)
struct usb_function *f_acm; struct usb_function *f_acm;
struct usb_function *f_phonet = NULL; struct usb_function *f_phonet = NULL;
struct usb_function *f_obex1 = NULL; struct usb_function *f_obex1 = NULL;
struct usb_function *f_ecm;
struct usb_function *f_obex2 = NULL; struct usb_function *f_obex2 = NULL;
int status = 0; int status = 0;
int obex1_stat = 0; int obex1_stat = 0;
...@@ -165,6 +154,12 @@ static int __init nokia_bind_config(struct usb_configuration *c) ...@@ -165,6 +154,12 @@ static int __init nokia_bind_config(struct usb_configuration *c)
goto err_get_acm; goto err_get_acm;
} }
f_ecm = usb_get_function(fi_ecm);
if (IS_ERR(f_ecm)) {
status = PTR_ERR(f_ecm);
goto err_get_ecm;
}
if (!IS_ERR_OR_NULL(f_phonet)) { if (!IS_ERR_OR_NULL(f_phonet)) {
phonet_stat = usb_add_function(c, f_phonet); phonet_stat = usb_add_function(c, f_phonet);
if (phonet_stat) if (phonet_stat)
...@@ -187,18 +182,20 @@ static int __init nokia_bind_config(struct usb_configuration *c) ...@@ -187,18 +182,20 @@ static int __init nokia_bind_config(struct usb_configuration *c)
if (status) if (status)
goto err_conf; goto err_conf;
status = ecm_bind_config(c, host_mac, the_dev); status = usb_add_function(c, f_ecm);
if (status) { if (status) {
pr_debug("could not bind ecm config %d\n", status); pr_debug("could not bind ecm config %d\n", status);
goto err_ecm; goto err_ecm;
} }
if (c == &nokia_config_500ma_driver) { if (c == &nokia_config_500ma_driver) {
f_acm_cfg1 = f_acm; f_acm_cfg1 = f_acm;
f_ecm_cfg1 = f_ecm;
f_phonet_cfg1 = f_phonet; f_phonet_cfg1 = f_phonet;
f_obex1_cfg1 = f_obex1; f_obex1_cfg1 = f_obex1;
f_obex2_cfg1 = f_obex2; f_obex2_cfg1 = f_obex2;
} else { } else {
f_acm_cfg2 = f_acm; f_acm_cfg2 = f_acm;
f_ecm_cfg2 = f_ecm;
f_phonet_cfg2 = f_phonet; f_phonet_cfg2 = f_phonet;
f_obex1_cfg2 = f_obex1; f_obex1_cfg2 = f_obex1;
f_obex2_cfg2 = f_obex2; f_obex2_cfg2 = f_obex2;
...@@ -214,6 +211,8 @@ static int __init nokia_bind_config(struct usb_configuration *c) ...@@ -214,6 +211,8 @@ static int __init nokia_bind_config(struct usb_configuration *c)
usb_remove_function(c, f_obex1); usb_remove_function(c, f_obex1);
if (!phonet_stat) if (!phonet_stat)
usb_remove_function(c, f_phonet); usb_remove_function(c, f_phonet);
usb_put_function(f_ecm);
err_get_ecm:
usb_put_function(f_acm); usb_put_function(f_acm);
err_get_acm: err_get_acm:
if (!IS_ERR_OR_NULL(f_obex2)) if (!IS_ERR_OR_NULL(f_obex2))
...@@ -230,13 +229,6 @@ static int __init nokia_bind(struct usb_composite_dev *cdev) ...@@ -230,13 +229,6 @@ static int __init nokia_bind(struct usb_composite_dev *cdev)
struct usb_gadget *gadget = cdev->gadget; struct usb_gadget *gadget = cdev->gadget;
int status; int status;
the_dev = gether_setup(cdev->gadget, dev_addr, host_addr, host_mac,
qmult);
if (IS_ERR(the_dev)) {
status = PTR_ERR(the_dev);
goto err_ether;
}
status = usb_string_ids_tab(cdev, strings_dev); status = usb_string_ids_tab(cdev, strings_dev);
if (status < 0) if (status < 0)
goto err_usb; goto err_usb;
...@@ -246,8 +238,10 @@ static int __init nokia_bind(struct usb_composite_dev *cdev) ...@@ -246,8 +238,10 @@ static int __init nokia_bind(struct usb_composite_dev *cdev)
nokia_config_500ma_driver.iConfiguration = status; nokia_config_500ma_driver.iConfiguration = status;
nokia_config_100ma_driver.iConfiguration = status; nokia_config_100ma_driver.iConfiguration = status;
if (!gadget_supports_altsettings(gadget)) if (!gadget_supports_altsettings(gadget)) {
status = -ENODEV;
goto err_usb; goto err_usb;
}
fi_phonet = usb_get_function_instance("phonet"); fi_phonet = usb_get_function_instance("phonet");
if (IS_ERR(fi_phonet)) if (IS_ERR(fi_phonet))
...@@ -262,14 +256,22 @@ static int __init nokia_bind(struct usb_composite_dev *cdev) ...@@ -262,14 +256,22 @@ static int __init nokia_bind(struct usb_composite_dev *cdev)
pr_debug("could not find obex function 2\n"); pr_debug("could not find obex function 2\n");
fi_acm = usb_get_function_instance("acm"); fi_acm = usb_get_function_instance("acm");
if (IS_ERR(fi_acm)) if (IS_ERR(fi_acm)) {
status = PTR_ERR(fi_acm);
goto err_obex2_inst; goto err_obex2_inst;
}
fi_ecm = usb_get_function_instance("ecm");
if (IS_ERR(fi_ecm)) {
status = PTR_ERR(fi_ecm);
goto err_acm_inst;
}
/* finally register the configuration */ /* finally register the configuration */
status = usb_add_config(cdev, &nokia_config_500ma_driver, status = usb_add_config(cdev, &nokia_config_500ma_driver,
nokia_bind_config); nokia_bind_config);
if (status < 0) if (status < 0)
goto err_acm_inst; goto err_ecm_inst;
status = usb_add_config(cdev, &nokia_config_100ma_driver, status = usb_add_config(cdev, &nokia_config_100ma_driver,
nokia_bind_config); nokia_bind_config);
...@@ -289,6 +291,9 @@ static int __init nokia_bind(struct usb_composite_dev *cdev) ...@@ -289,6 +291,9 @@ static int __init nokia_bind(struct usb_composite_dev *cdev)
usb_put_function(f_obex2_cfg1); usb_put_function(f_obex2_cfg1);
if (!IS_ERR_OR_NULL(f_phonet_cfg1)) if (!IS_ERR_OR_NULL(f_phonet_cfg1))
usb_put_function(f_phonet_cfg1); usb_put_function(f_phonet_cfg1);
usb_put_function(f_ecm_cfg1);
err_ecm_inst:
usb_put_function_instance(fi_ecm);
err_acm_inst: err_acm_inst:
usb_put_function_instance(fi_acm); usb_put_function_instance(fi_acm);
err_obex2_inst: err_obex2_inst:
...@@ -299,8 +304,6 @@ static int __init nokia_bind(struct usb_composite_dev *cdev) ...@@ -299,8 +304,6 @@ static int __init nokia_bind(struct usb_composite_dev *cdev)
if (!IS_ERR(fi_phonet)) if (!IS_ERR(fi_phonet))
usb_put_function_instance(fi_phonet); usb_put_function_instance(fi_phonet);
err_usb: err_usb:
gether_cleanup(the_dev);
err_ether:
return status; return status;
} }
...@@ -320,7 +323,10 @@ static int __exit nokia_unbind(struct usb_composite_dev *cdev) ...@@ -320,7 +323,10 @@ static int __exit nokia_unbind(struct usb_composite_dev *cdev)
usb_put_function(f_phonet_cfg2); usb_put_function(f_phonet_cfg2);
usb_put_function(f_acm_cfg1); usb_put_function(f_acm_cfg1);
usb_put_function(f_acm_cfg2); usb_put_function(f_acm_cfg2);
usb_put_function(f_ecm_cfg1);
usb_put_function(f_ecm_cfg2);
usb_put_function_instance(fi_ecm);
if (!IS_ERR(fi_obex2)) if (!IS_ERR(fi_obex2))
usb_put_function_instance(fi_obex2); usb_put_function_instance(fi_obex2);
if (!IS_ERR(fi_obex1)) if (!IS_ERR(fi_obex1))
...@@ -329,8 +335,6 @@ static int __exit nokia_unbind(struct usb_composite_dev *cdev) ...@@ -329,8 +335,6 @@ static int __exit nokia_unbind(struct usb_composite_dev *cdev)
usb_put_function_instance(fi_phonet); usb_put_function_instance(fi_phonet);
usb_put_function_instance(fi_acm); usb_put_function_instance(fi_acm);
gether_cleanup(the_dev);
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册