2011-10-12 14:08:26 +03:00
/**
* host . c - DesignWare USB3 DRD Controller Host Glue
*
* Copyright ( C ) 2011 Texas Instruments Incorporated - http : //www.ti.com
*
* Authors : Felipe Balbi < balbi @ ti . com > ,
*
2013-06-30 14:15:11 +03:00
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 of
* the License as published by the Free Software Foundation .
2011-10-12 14:08:26 +03:00
*
2013-06-30 14:15:11 +03:00
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
2011-10-12 14:08:26 +03:00
*/
# include <linux/platform_device.h>
# include "core.h"
int dwc3_host_init ( struct dwc3 * dwc )
{
struct platform_device * xhci ;
int ret ;
2013-01-25 16:52:02 +05:30
xhci = platform_device_alloc ( " xhci-hcd " , PLATFORM_DEVID_AUTO ) ;
2011-10-12 14:08:26 +03:00
if ( ! xhci ) {
dev_err ( dwc - > dev , " couldn't allocate xHCI device \n " ) ;
ret = - ENOMEM ;
goto err0 ;
}
dma_set_coherent_mask ( & xhci - > dev , dwc - > dev - > coherent_dma_mask ) ;
xhci - > dev . parent = dwc - > dev ;
xhci - > dev . dma_mask = dwc - > dev - > dma_mask ;
xhci - > dev . dma_parms = dwc - > dev - > dma_parms ;
dwc - > xhci = xhci ;
2012-04-24 14:18:39 +03:00
ret = platform_device_add_resources ( xhci , dwc - > xhci_resources ,
DWC3_XHCI_RESOURCES_NUM ) ;
2011-10-12 14:08:26 +03:00
if ( ret ) {
dev_err ( dwc - > dev , " couldn't add resources to xHCI device \n " ) ;
goto err1 ;
}
ret = platform_device_add ( xhci ) ;
if ( ret ) {
dev_err ( dwc - > dev , " failed to register xHCI device \n " ) ;
goto err1 ;
}
return 0 ;
err1 :
platform_device_put ( xhci ) ;
err0 :
return ret ;
}
void dwc3_host_exit ( struct dwc3 * dwc )
{
platform_device_unregister ( dwc - > xhci ) ;
}