From 1f9760dcfccc057c4f298bcad0319195525c5163 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=94=A1=E5=BB=BA=E6=B8=85?= Date: Tue, 29 Oct 2013 14:55:39 +0800 Subject: [PATCH] Set mass storage as virtural CDROM for driver install. --- arch/arm/configs/rk3188_ac_defconfig | 1 + drivers/usb/gadget/Kconfig | 8 +++++++- drivers/usb/gadget/android.c | 17 ++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) mode change 100755 => 100644 drivers/usb/gadget/android.c diff --git a/arch/arm/configs/rk3188_ac_defconfig b/arch/arm/configs/rk3188_ac_defconfig index baf2c1807497..e1d22889ee02 100644 --- a/arch/arm/configs/rk3188_ac_defconfig +++ b/arch/arm/configs/rk3188_ac_defconfig @@ -1,4 +1,5 @@ CONFIG_EXPERIMENTAL=y +CONFIG_UMS_AS_CDROM=y # CONFIG_LOCALVERSION_AUTO is not set CONFIG_KERNEL_LZO=y CONFIG_LOG_BUF_SHIFT=19 diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig index 49d5f1d2930d..40744b26855f 100644 --- a/drivers/usb/gadget/Kconfig +++ b/drivers/usb/gadget/Kconfig @@ -1086,5 +1086,11 @@ config BYPASS_INPUT_TO_HIDG help If say "y" there will create a new gadget HIDG and HID reports form HID devices will be bypass to PC - + +config UMS_AS_CDROM + bool "Set mass storage as a virtual CDROM" + default n + help + Set mass storage as a virtual CDROM for drivers install. + endif # USB_GADGET diff --git a/drivers/usb/gadget/android.c b/drivers/usb/gadget/android.c old mode 100755 new mode 100644 index ad057bf112a2..86a77dbd9655 --- a/drivers/usb/gadget/android.c +++ b/drivers/usb/gadget/android.c @@ -639,10 +639,19 @@ static int mass_storage_function_init(struct android_usb_function *f, GFP_KERNEL); if (!config) return -ENOMEM; - +#ifdef CONFIG_UMS_AS_CDROM + //printk(KERN_ERR "CONFIG_UMS_AS_CDROM is true++++++++++++++++++\n"); + config->fsg.nluns = 1; + config->fsg.luns[0].removable = 1; + config->fsg.luns[0].ro = 1; + config->fsg.luns[0].cdrom = 1; +#else + //printk(KERN_ERR "CONFIG_UMS_AS_CDROM is false -------------------\n"); config->fsg.nluns = 2; config->fsg.luns[0].removable = 1; config->fsg.luns[1].removable = 1; +#endif + common = fsg_common_init(NULL, cdev, &config->fsg); if (IS_ERR(common)) { @@ -653,12 +662,14 @@ static int mass_storage_function_init(struct android_usb_function *f, err = sysfs_create_link(&f->dev->kobj, &common->luns[0].dev.kobj, "lun"); - err = sysfs_create_link(&f->dev->kobj, &common->luns[1].dev.kobj,"lun1"); +#ifndef CONFIG_UMS_AS_CDROM + //printk(KERN_ERR "CONFIG_UMS_AS_CDROM is false -------------------\n"); + err = sysfs_create_link(&f->dev->kobj, &common->luns[1].dev.kobj,"lun1"); if (err) { kfree(config); return err; } - +#endif config->common = common; f->config = config; return 0; -- 2.34.1