@ -11,11 +11,6 @@
/* #undef DEBUG */
/* #undef VERBOSE_DEBUG */
# if defined(CONFIG_USB_LANGWELL_OTG)
# define OTG_TRANSCEIVER
# endif
# include <linux/module.h>
# include <linux/pci.h>
# include <linux/dma-mapping.h>
@ -2315,13 +2310,9 @@ static void handle_setup_packet(struct langwell_udc *dev,
if ( ! gadget_is_otg ( & dev - > gadget ) )
break ;
else if ( setup - > bRequest = = USB_DEVICE_B_HNP_ENABLE ) {
else if ( setup - > bRequest = = USB_DEVICE_B_HNP_ENABLE )
dev - > gadget . b_hnp_enable = 1 ;
# ifdef OTG_TRANSCEIVER
if ( ! dev - > lotg - > otg . default_a )
dev - > lotg - > hsm . b_hnp_enable = 1 ;
# endif
} else if ( setup - > bRequest = = USB_DEVICE_A_HNP_SUPPORT )
else if ( setup - > bRequest = = USB_DEVICE_A_HNP_SUPPORT )
dev - > gadget . a_hnp_support = 1 ;
else if ( setup - > bRequest = =
USB_DEVICE_A_ALT_HNP_SUPPORT )
@ -2752,12 +2743,6 @@ static void handle_usb_reset(struct langwell_udc *dev)
dev - > usb_state = USB_STATE_ATTACHED ;
}
# ifdef OTG_TRANSCEIVER
/* refer to USB OTG 6.6.2.3 b_hnp_en is cleared */
if ( ! dev - > lotg - > otg . default_a )
dev - > lotg - > hsm . b_hnp_enable = 0 ;
# endif
dev_vdbg ( & dev - > pdev - > dev , " <--- %s() \n " , __func__ ) ;
}
@ -2770,29 +2755,6 @@ static void handle_bus_suspend(struct langwell_udc *dev)
dev - > resume_state = dev - > usb_state ;
dev - > usb_state = USB_STATE_SUSPENDED ;
# ifdef OTG_TRANSCEIVER
if ( dev - > lotg - > otg . default_a ) {
if ( dev - > lotg - > hsm . b_bus_suspend_vld = = 1 ) {
dev - > lotg - > hsm . b_bus_suspend = 1 ;
/* notify transceiver the state changes */
if ( spin_trylock ( & dev - > lotg - > wq_lock ) ) {
langwell_update_transceiver ( ) ;
spin_unlock ( & dev - > lotg - > wq_lock ) ;
}
}
dev - > lotg - > hsm . b_bus_suspend_vld + + ;
} else {
if ( ! dev - > lotg - > hsm . a_bus_suspend ) {
dev - > lotg - > hsm . a_bus_suspend = 1 ;
/* notify transceiver the state changes */
if ( spin_trylock ( & dev - > lotg - > wq_lock ) ) {
langwell_update_transceiver ( ) ;
spin_unlock ( & dev - > lotg - > wq_lock ) ;
}
}
}
# endif
/* report suspend to the driver */
if ( dev - > driver ) {
if ( dev - > driver - > suspend ) {
@ -2823,11 +2785,6 @@ static void handle_bus_resume(struct langwell_udc *dev)
if ( dev - > pdev - > device ! = 0x0829 )
langwell_phy_low_power ( dev , 0 ) ;
# ifdef OTG_TRANSCEIVER
if ( dev - > lotg - > otg . default_a = = 0 )
dev - > lotg - > hsm . a_bus_suspend = 0 ;
# endif
/* report resume to the driver */
if ( dev - > driver ) {
if ( dev - > driver - > resume ) {
@ -3020,7 +2977,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
dev - > done = & done ;
# ifndef OTG_TRANSCEIVER
/* free dTD dma_pool and dQH */
if ( dev - > dtd_pool )
dma_pool_destroy ( dev - > dtd_pool ) ;
@ -3032,7 +2988,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
/* release SRAM caching */
if ( dev - > has_sram & & dev - > got_sram )
sram_deinit ( dev ) ;
# endif
if ( dev - > status_req ) {
kfree ( dev - > status_req - > req . buf ) ;
@ -3045,7 +3000,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
if ( dev - > got_irq )
free_irq ( pdev - > irq , dev ) ;
# ifndef OTG_TRANSCEIVER
if ( dev - > cap_regs )
iounmap ( dev - > cap_regs ) ;
@ -3055,13 +3009,6 @@ static void langwell_udc_remove(struct pci_dev *pdev)
if ( dev - > enabled )
pci_disable_device ( pdev ) ;
# else
if ( dev - > transceiver ) {
otg_put_transceiver ( dev - > transceiver ) ;
dev - > transceiver = NULL ;
dev - > lotg = NULL ;
}
# endif
dev - > cap_regs = NULL ;
@ -3072,9 +3019,7 @@ static void langwell_udc_remove(struct pci_dev *pdev)
device_remove_file ( & pdev - > dev , & dev_attr_langwell_udc ) ;
device_remove_file ( & pdev - > dev , & dev_attr_remote_wakeup ) ;
# ifndef OTG_TRANSCEIVER
pci_set_drvdata ( pdev , NULL ) ;
# endif
/* free dev, wait for the release() finished */
wait_for_completion ( & done ) ;
@ -3089,9 +3034,7 @@ static int langwell_udc_probe(struct pci_dev *pdev,
const struct pci_device_id * id )
{
struct langwell_udc * dev ;
# ifndef OTG_TRANSCEIVER
unsigned long resource , len ;
# endif
void __iomem * base = NULL ;
size_t size ;
int retval ;
@ -3109,16 +3052,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
dev - > pdev = pdev ;
dev_dbg ( & dev - > pdev - > dev , " ---> %s() \n " , __func__ ) ;
# ifdef OTG_TRANSCEIVER
/* PCI device is already enabled by otg_transceiver driver */
dev - > enabled = 1 ;
/* mem region and register base */
dev - > region = 1 ;
dev - > transceiver = otg_get_transceiver ( ) ;
dev - > lotg = otg_to_langwell ( dev - > transceiver ) ;
base = dev - > lotg - > regs ;
# else
pci_set_drvdata ( pdev , dev ) ;
/* now all the pci goodies ... */
@ -3139,7 +3072,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
dev - > region = 1 ;
base = ioremap_nocache ( resource , len ) ;
# endif
if ( base = = NULL ) {
dev_err ( & dev - > pdev - > dev , " can't map memory \n " ) ;
retval = - EFAULT ;
@ -3163,7 +3095,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
dev - > got_sram = 0 ;
dev_vdbg ( & dev - > pdev - > dev , " dev->has_sram: %d \n " , dev - > has_sram ) ;
# ifndef OTG_TRANSCEIVER
/* enable SRAM caching if detected */
if ( dev - > has_sram & & ! dev - > got_sram )
sram_init ( dev ) ;
@ -3182,7 +3113,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
goto error ;
}
dev - > got_irq = 1 ;
# endif
/* set stopped bit */
dev - > stopped = 1 ;
@ -3257,10 +3187,8 @@ static int langwell_udc_probe(struct pci_dev *pdev,
dev - > remote_wakeup = 0 ;
dev - > dev_status = 1 < < USB_DEVICE_SELF_POWERED ;
# ifndef OTG_TRANSCEIVER
/* reset device controller */
langwell_udc_reset ( dev ) ;
# endif
/* initialize gadget structure */
dev - > gadget . ops = & langwell_ops ; /* usb_gadget_ops */
@ -3268,9 +3196,6 @@ static int langwell_udc_probe(struct pci_dev *pdev,
INIT_LIST_HEAD ( & dev - > gadget . ep_list ) ; /* ep_list */
dev - > gadget . speed = USB_SPEED_UNKNOWN ; /* speed */
dev - > gadget . max_speed = USB_SPEED_HIGH ; /* support dual speed */
# ifdef OTG_TRANSCEIVER
dev - > gadget . is_otg = 1 ; /* support otg mode */
# endif
/* the "gadget" abstracts/virtualizes the controller */
dev_set_name ( & dev - > gadget . dev , " gadget " ) ;
@ -3282,10 +3207,8 @@ static int langwell_udc_probe(struct pci_dev *pdev,
/* controller endpoints reinit */
eps_reinit ( dev ) ;
# ifndef OTG_TRANSCEIVER
/* reset ep0 dQH and endptctrl */
ep0_reset ( dev ) ;
# endif
/* create dTD dma_pool resource */
dev - > dtd_pool = dma_pool_create ( " langwell_dtd " ,
@ -3525,22 +3448,14 @@ static struct pci_driver langwell_pci_driver = {
static int __init init ( void )
{
# ifdef OTG_TRANSCEIVER
return langwell_register_peripheral ( & langwell_pci_driver ) ;
# else
return pci_register_driver ( & langwell_pci_driver ) ;
# endif
}
module_init ( init ) ;
static void __exit cleanup ( void )
{
# ifdef OTG_TRANSCEIVER
return langwell_unregister_peripheral ( & langwell_pci_driver ) ;
# else
pci_unregister_driver ( & langwell_pci_driver ) ;
# endif
}
module_exit ( cleanup ) ;