mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-19 16:17:40 +00:00
[ARM] pxa/em-x270: add libertas device registration
Signed-off-by: Mike Rapoport <mike@compulab.co.il> Signed-off-by: Eric Miao <eric.miao@marvell.com>
This commit is contained in:
parent
eb650b9ed0
commit
c9be0e3961
@ -25,8 +25,10 @@
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/tdo24m.h>
|
||||
#include <linux/spi/libertas_spi.h>
|
||||
#include <linux/power_supply.h>
|
||||
#include <linux/apm-emulation.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <media/soc_camera.h>
|
||||
|
||||
@ -62,6 +64,8 @@
|
||||
#define GPIO93_CAM_RESET (93)
|
||||
#define GPIO41_ETHIRQ (41)
|
||||
#define EM_X270_ETHIRQ IRQ_GPIO(GPIO41_ETHIRQ)
|
||||
#define GPIO115_WLAN_PWEN (115)
|
||||
#define GPIO19_WLAN_STRAP (19)
|
||||
|
||||
static int mmc_cd;
|
||||
static int nand_rb;
|
||||
@ -159,8 +163,8 @@ static unsigned long common_pin_config[] = {
|
||||
GPIO57_SSP1_TXD,
|
||||
|
||||
/* SSP2 */
|
||||
GPIO19_SSP2_SCLK,
|
||||
GPIO14_SSP2_SFRM,
|
||||
GPIO19_GPIO, /* SSP2 clock is used as GPIO for Libertas pin-strap */
|
||||
GPIO14_GPIO,
|
||||
GPIO89_SSP2_TXD,
|
||||
GPIO88_SSP2_RXD,
|
||||
|
||||
@ -648,20 +652,86 @@ static struct tdo24m_platform_data em_x270_tdo24m_pdata = {
|
||||
.model = TDO35S,
|
||||
};
|
||||
|
||||
static struct pxa2xx_spi_master em_x270_spi_2_info = {
|
||||
.num_chipselect = 1,
|
||||
.enable_dma = 1,
|
||||
};
|
||||
|
||||
static struct pxa2xx_spi_chip em_x270_libertas_chip = {
|
||||
.rx_threshold = 1,
|
||||
.tx_threshold = 1,
|
||||
.timeout = 1000,
|
||||
};
|
||||
|
||||
static unsigned long em_x270_libertas_pin_config[] = {
|
||||
/* SSP2 */
|
||||
GPIO19_SSP2_SCLK,
|
||||
GPIO14_GPIO,
|
||||
GPIO89_SSP2_TXD,
|
||||
GPIO88_SSP2_RXD,
|
||||
};
|
||||
|
||||
static int em_x270_libertas_setup(struct spi_device *spi)
|
||||
{
|
||||
int err = gpio_request(GPIO115_WLAN_PWEN, "WLAN PWEN");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
gpio_direction_output(GPIO19_WLAN_STRAP, 1);
|
||||
mdelay(100);
|
||||
|
||||
pxa2xx_mfp_config(ARRAY_AND_SIZE(em_x270_libertas_pin_config));
|
||||
|
||||
gpio_direction_output(GPIO115_WLAN_PWEN, 0);
|
||||
mdelay(100);
|
||||
gpio_set_value(GPIO115_WLAN_PWEN, 1);
|
||||
mdelay(100);
|
||||
|
||||
spi->bits_per_word = 16;
|
||||
spi_setup(spi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int em_x270_libertas_teardown(struct spi_device *spi)
|
||||
{
|
||||
gpio_set_value(GPIO115_WLAN_PWEN, 0);
|
||||
gpio_free(GPIO115_WLAN_PWEN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct libertas_spi_platform_data em_x270_libertas_pdata = {
|
||||
.use_dummy_writes = 1,
|
||||
.gpio_cs = 14,
|
||||
.setup = em_x270_libertas_setup,
|
||||
.teardown = em_x270_libertas_teardown,
|
||||
};
|
||||
|
||||
static struct spi_board_info em_x270_spi_devices[] __initdata = {
|
||||
{
|
||||
.modalias = "tdo24m",
|
||||
.max_speed_hz = 1000000,
|
||||
.bus_num = 1,
|
||||
.chip_select = 0,
|
||||
.controller_data = &em_x270_tdo24m_chip,
|
||||
.platform_data = &em_x270_tdo24m_pdata,
|
||||
.modalias = "tdo24m",
|
||||
.max_speed_hz = 1000000,
|
||||
.bus_num = 1,
|
||||
.chip_select = 0,
|
||||
.controller_data = &em_x270_tdo24m_chip,
|
||||
.platform_data = &em_x270_tdo24m_pdata,
|
||||
},
|
||||
{
|
||||
.modalias = "libertas_spi",
|
||||
.max_speed_hz = 13000000,
|
||||
.bus_num = 2,
|
||||
.irq = IRQ_GPIO(116),
|
||||
.chip_select = 0,
|
||||
.controller_data = &em_x270_libertas_chip,
|
||||
.platform_data = &em_x270_libertas_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static void __init em_x270_init_spi(void)
|
||||
{
|
||||
pxa2xx_set_spi_info(1, &em_x270_spi_info);
|
||||
pxa2xx_set_spi_info(2, &em_x270_spi_2_info);
|
||||
spi_register_board_info(ARRAY_AND_SIZE(em_x270_spi_devices));
|
||||
}
|
||||
#else
|
||||
|
Loading…
x
Reference in New Issue
Block a user