2008-03-25 16:33:36 -07:00
/******************************************************************************
*
2010-01-15 13:43:41 -08:00
* Copyright ( c ) 2003 - 2010 Intel Corporation . All rights reserved .
2008-03-25 16:33:36 -07:00
*
* 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 .
*
* You should have received a copy of the GNU General Public License along with
* this program ; if not , write to the Free Software Foundation , Inc . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 , USA
*
* The full GNU General Public License is included in this distribution in the
* file called LICENSE .
*
* Contact Information :
2008-12-09 11:28:58 -08:00
* Intel Linux Wireless < ilw @ linux . intel . com >
2008-03-25 16:33:36 -07:00
* Intel Corporation , 5200 N . E . Elam Young Parkway , Hillsboro , OR 97124 - 6497
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include <linux/kernel.h>
# include <linux/module.h>
# include <linux/init.h>
# include <linux/pci.h>
# include <linux/dma-mapping.h>
# include <linux/delay.h>
# include <linux/skbuff.h>
# include <linux/netdevice.h>
# include <linux/wireless.h>
# include <net/mac80211.h>
# include <linux/etherdevice.h>
# include <asm/unaligned.h>
2008-12-19 10:37:04 +08:00
# include "iwl-commands.h"
2008-03-25 16:33:36 -07:00
# include "iwl-3945.h"
2009-01-19 15:30:27 -08:00
# include "iwl-core.h"
# include "iwl-dev.h"
2009-10-02 13:44:03 -07:00
# include "iwl-3945-led.h"
2008-03-25 16:33:36 -07:00
/* Send led command */
2009-10-02 13:44:03 -07:00
static int iwl3945_send_led_cmd ( struct iwl_priv * priv ,
struct iwl_led_cmd * led_cmd )
2008-03-25 16:33:36 -07:00
{
2008-12-19 10:37:34 +08:00
struct iwl_host_cmd cmd = {
2008-03-25 16:33:36 -07:00
. id = REPLY_LEDS_CMD ,
2008-12-19 10:37:05 +08:00
. len = sizeof ( struct iwl_led_cmd ) ,
2008-03-25 16:33:36 -07:00
. data = led_cmd ,
2009-07-24 11:13:05 -07:00
. flags = CMD_ASYNC ,
2009-10-02 13:44:03 -07:00
. callback = NULL ,
2008-03-25 16:33:36 -07:00
} ;
2009-01-19 15:30:27 -08:00
return iwl_send_cmd ( priv , & cmd ) ;
2008-03-25 16:33:36 -07:00
}
/* Set led on command */
2009-10-02 13:44:03 -07:00
static int iwl3945_led_on ( struct iwl_priv * priv )
2008-03-25 16:33:36 -07:00
{
2008-12-19 10:37:05 +08:00
struct iwl_led_cmd led_cmd = {
2009-10-02 13:44:03 -07:00
. id = IWL_LED_LINK ,
2008-07-11 11:53:41 +08:00
. on = IWL_LED_SOLID ,
. off = 0 ,
2008-03-25 16:33:36 -07:00
. interval = IWL_DEF_LED_INTRVL
} ;
2009-10-02 13:44:03 -07:00
return iwl3945_send_led_cmd ( priv , & led_cmd ) ;
2008-03-25 16:33:36 -07:00
}
/* Set led off command */
2009-10-02 13:44:03 -07:00
static int iwl3945_led_off ( struct iwl_priv * priv )
2008-03-25 16:33:36 -07:00
{
2008-12-19 10:37:05 +08:00
struct iwl_led_cmd led_cmd = {
2009-10-02 13:44:03 -07:00
. id = IWL_LED_LINK ,
2008-03-25 16:33:36 -07:00
. on = 0 ,
. off = 0 ,
. interval = IWL_DEF_LED_INTRVL
} ;
2009-10-02 13:44:03 -07:00
IWL_DEBUG_LED ( priv , " led off \n " ) ;
return iwl3945_send_led_cmd ( priv , & led_cmd ) ;
2008-03-25 16:33:36 -07:00
}
2009-10-02 13:44:03 -07:00
const struct iwl_led_ops iwl3945_led_ops = {
. cmd = iwl3945_send_led_cmd ,
. on = iwl3945_led_on ,
. off = iwl3945_led_off ,
} ;