2016-04-15 20:37:58 +03:00
/*
This file is provided under a dual BSD / GPLv2 license . When using or
redistributing this file , you may do so under either license .
GPL LICENSE SUMMARY
Copyright ( c ) 2015 Intel Corporation .
This program is free software ; you can redistribute it and / or modify
it under the terms of version 2 of the GNU General Public License as
published by the Free Software Foundation .
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 .
Contact Information :
qat - linux @ intel . com
BSD LICENSE
Copyright ( c ) 2015 Intel Corporation .
Redistribution and use in source and binary forms , with or without
modification , are permitted provided that the following conditions
are met :
* Redistributions of source code must retain the above copyright
notice , this list of conditions and the following disclaimer .
* Redistributions in binary form must reproduce the above copyright
notice , this list of conditions and the following disclaimer in
the documentation and / or other materials provided with the
distribution .
* Neither the name of Intel Corporation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission .
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
" AS IS " AND ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT
LIMITED TO , THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT NOT
LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ; LOSS OF USE ,
DATA , OR PROFITS ; OR BUSINESS INTERRUPTION ) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT LIABILITY , OR TORT
( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
*/
# include "adf_accel_devices.h"
# include "adf_common_drv.h"
# include "adf_pf2vf_msg.h"
/**
* adf_vf2pf_init ( ) - send init msg to PF
* @ accel_dev : Pointer to acceleration VF device .
*
* Function sends an init messge from the VF to a PF
*
* Return : 0 on success , error code otherwise .
*/
int adf_vf2pf_init ( struct adf_accel_dev * accel_dev )
{
u32 msg = ( ADF_VF2PF_MSGORIGIN_SYSTEM |
( ADF_VF2PF_MSGTYPE_INIT < < ADF_VF2PF_MSGTYPE_SHIFT ) ) ;
if ( adf_iov_putmsg ( accel_dev , msg , 0 ) ) {
dev_err ( & GET_DEV ( accel_dev ) ,
" Failed to send Init event to PF \n " ) ;
return - EFAULT ;
}
2016-04-15 20:37:59 +03:00
set_bit ( ADF_STATUS_PF_RUNNING , & accel_dev - > status ) ;
2016-04-15 20:37:58 +03:00
return 0 ;
}
EXPORT_SYMBOL_GPL ( adf_vf2pf_init ) ;
/**
* adf_vf2pf_shutdown ( ) - send shutdown msg to PF
* @ accel_dev : Pointer to acceleration VF device .
*
* Function sends a shutdown messge from the VF to a PF
*
* Return : void
*/
void adf_vf2pf_shutdown ( struct adf_accel_dev * accel_dev )
{
u32 msg = ( ADF_VF2PF_MSGORIGIN_SYSTEM |
( ADF_VF2PF_MSGTYPE_SHUTDOWN < < ADF_VF2PF_MSGTYPE_SHIFT ) ) ;
2016-04-15 20:37:59 +03:00
if ( test_bit ( ADF_STATUS_PF_RUNNING , & accel_dev - > status ) )
if ( adf_iov_putmsg ( accel_dev , msg , 0 ) )
dev_err ( & GET_DEV ( accel_dev ) ,
" Failed to send Shutdown event to PF \n " ) ;
2016-04-15 20:37:58 +03:00
}
EXPORT_SYMBOL_GPL ( adf_vf2pf_shutdown ) ;