Release 4.11 drivers/net/wireless/ti/wlcore/io.h
/*
* This file is part of wl1271
*
* Copyright (C) 1998-2009 Texas Instruments. All rights reserved.
* Copyright (C) 2008-2010 Nokia Corporation
*
* Contact: Luciano Coelho <luciano.coelho@nokia.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* version 2 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 St, Fifth Floor, Boston, MA
* 02110-1301 USA
*
*/
#ifndef __IO_H__
#define __IO_H__
#include <linux/irqreturn.h>
#define HW_ACCESS_MEMORY_MAX_RANGE 0x1FFC0
#define HW_PARTITION_REGISTERS_ADDR 0x1FFC0
#define HW_PART0_SIZE_ADDR (HW_PARTITION_REGISTERS_ADDR)
#define HW_PART0_START_ADDR (HW_PARTITION_REGISTERS_ADDR + 4)
#define HW_PART1_SIZE_ADDR (HW_PARTITION_REGISTERS_ADDR + 8)
#define HW_PART1_START_ADDR (HW_PARTITION_REGISTERS_ADDR + 12)
#define HW_PART2_SIZE_ADDR (HW_PARTITION_REGISTERS_ADDR + 16)
#define HW_PART2_START_ADDR (HW_PARTITION_REGISTERS_ADDR + 20)
#define HW_PART3_SIZE_ADDR (HW_PARTITION_REGISTERS_ADDR + 24)
#define HW_PART3_START_ADDR (HW_PARTITION_REGISTERS_ADDR + 28)
#define HW_ACCESS_REGISTER_SIZE 4
#define HW_ACCESS_PRAM_MAX_RANGE 0x3c000
struct wl1271;
void wlcore_disable_interrupts(struct wl1271 *wl);
void wlcore_disable_interrupts_nosync(struct wl1271 *wl);
void wlcore_enable_interrupts(struct wl1271 *wl);
void wlcore_synchronize_interrupts(struct wl1271 *wl);
void wl1271_io_reset(struct wl1271 *wl);
void wl1271_io_init(struct wl1271 *wl);
int wlcore_translate_addr(struct wl1271 *wl, int addr);
/* Raw target IO, address is not translated */
static inline int __must_check wlcore_raw_write(struct wl1271 *wl, int addr,
void *buf, size_t len,
bool fixed)
{
int ret;
if (test_bit(WL1271_FLAG_IO_FAILED, &wl->flags) ||
WARN_ON((test_bit(WL1271_FLAG_IN_ELP, &wl->flags) &&
addr != HW_ACCESS_ELP_CTRL_REG)))
return -EIO;
ret = wl->if_ops->write(wl->dev, addr, buf, len, fixed);
if (ret && wl->state != WLCORE_STATE_OFF)
set_bit(WL1271_FLAG_IO_FAILED, &wl->flags);
return ret;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Arik Nemtsov | 42 | 38.89% | 2 | 22.22% |
Teemu Paasikivi | 39 | 36.11% | 2 | 22.22% |
Barak Bercovitz | 19 | 17.59% | 1 | 11.11% |
Ido Yariv | 6 | 5.56% | 3 | 33.33% |
Felipe Balbi | 2 | 1.85% | 1 | 11.11% |
Total | 108 | 100.00% | 9 | 100.00% |
static inline int __must_check wlcore_raw_read(struct wl1271 *wl, int addr,
void *buf, size_t len,
bool fixed)
{
int ret;
if (test_bit(WL1271_FLAG_IO_FAILED, &wl->flags) ||
WARN_ON((test_bit(WL1271_FLAG_IN_ELP, &wl->flags) &&
addr != HW_ACCESS_ELP_CTRL_REG)))
return -EIO;
ret = wl->if_ops->read(wl->dev, addr, buf, len, fixed);
if (ret && wl->state != WLCORE_STATE_OFF)
set_bit(WL1271_FLAG_IO_FAILED, &wl->flags);
return ret;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Arik Nemtsov | 42 | 38.89% | 2 | 22.22% |
Teemu Paasikivi | 39 | 36.11% | 2 | 22.22% |
Barak Bercovitz | 19 | 17.59% | 1 | 11.11% |
Ido Yariv | 6 | 5.56% | 3 | 33.33% |
Felipe Balbi | 2 | 1.85% | 1 | 11.11% |
Total | 108 | 100.00% | 9 | 100.00% |
static inline int __must_check wlcore_raw_read_data(struct wl1271 *wl, int reg,
void *buf, size_t len,
bool fixed)
{
return wlcore_raw_read(wl, wl->rtable[reg], buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 40 | 88.89% | 1 | 25.00% |
Ido Yariv | 5 | 11.11% | 3 | 75.00% |
Total | 45 | 100.00% | 4 | 100.00% |
static inline int __must_check wlcore_raw_write_data(struct wl1271 *wl, int reg,
void *buf, size_t len,
bool fixed)
{
return wlcore_raw_write(wl, wl->rtable[reg], buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 40 | 88.89% | 1 | 25.00% |
Ido Yariv | 5 | 11.11% | 3 | 75.00% |
Total | 45 | 100.00% | 4 | 100.00% |
static inline int __must_check wlcore_raw_read32(struct wl1271 *wl, int addr,
u32 *val)
{
int ret;
ret = wlcore_raw_read(wl, addr, wl->buffer_32,
sizeof(*wl->buffer_32), false);
if (ret < 0)
return ret;
if (val)
*val = le32_to_cpu(*wl->buffer_32);
return 0;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 37 | 50.68% | 1 | 16.67% |
Ido Yariv | 33 | 45.21% | 4 | 66.67% |
Juuso Oikarinen | 3 | 4.11% | 1 | 16.67% |
Total | 73 | 100.00% | 6 | 100.00% |
static inline int __must_check wlcore_raw_write32(struct wl1271 *wl, int addr,
u32 val)
{
*wl->buffer_32 = cpu_to_le32(val);
return wlcore_raw_write(wl, addr, wl->buffer_32,
sizeof(*wl->buffer_32), false);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 40 | 78.43% | 1 | 16.67% |
Ido Yariv | 8 | 15.69% | 4 | 66.67% |
Juuso Oikarinen | 3 | 5.88% | 1 | 16.67% |
Total | 51 | 100.00% | 6 | 100.00% |
static inline int __must_check wlcore_read(struct wl1271 *wl, int addr,
void *buf, size_t len, bool fixed)
{
int physical;
physical = wlcore_translate_addr(wl, addr);
return wlcore_raw_read(wl, physical, buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 45 | 86.54% | 2 | 33.33% |
Ido Yariv | 6 | 11.54% | 3 | 50.00% |
Luciano Coelho | 1 | 1.92% | 1 | 16.67% |
Total | 52 | 100.00% | 6 | 100.00% |
static inline int __must_check wlcore_write(struct wl1271 *wl, int addr,
void *buf, size_t len, bool fixed)
{
int physical;
physical = wlcore_translate_addr(wl, addr);
return wlcore_raw_write(wl, physical, buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 45 | 86.54% | 2 | 33.33% |
Ido Yariv | 6 | 11.54% | 3 | 50.00% |
Luciano Coelho | 1 | 1.92% | 1 | 16.67% |
Total | 52 | 100.00% | 6 | 100.00% |
static inline int __must_check wlcore_write_data(struct wl1271 *wl, int reg,
void *buf, size_t len,
bool fixed)
{
return wlcore_write(wl, wl->rtable[reg], buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 40 | 88.89% | 1 | 33.33% |
Ido Yariv | 5 | 11.11% | 2 | 66.67% |
Total | 45 | 100.00% | 3 | 100.00% |
static inline int __must_check wlcore_read_data(struct wl1271 *wl, int reg,
void *buf, size_t len,
bool fixed)
{
return wlcore_read(wl, wl->rtable[reg], buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 40 | 88.89% | 1 | 33.33% |
Ido Yariv | 5 | 11.11% | 2 | 66.67% |
Total | 45 | 100.00% | 3 | 100.00% |
static inline int __must_check wlcore_read_hwaddr(struct wl1271 *wl, int hwaddr,
void *buf, size_t len,
bool fixed)
{
int physical;
int addr;
/* Convert from FW internal address which is chip arch dependent */
addr = wl->ops->convert_hwaddr(wl, hwaddr);
physical = wlcore_translate_addr(wl, addr);
return wlcore_raw_read(wl, physical, buf, len, fixed);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Ido Yariv | 58 | 84.06% | 4 | 66.67% |
Igal Chernobelsky | 10 | 14.49% | 1 | 16.67% |
Luciano Coelho | 1 | 1.45% | 1 | 16.67% |
Total | 69 | 100.00% | 6 | 100.00% |
static inline int __must_check wlcore_read32(struct wl1271 *wl, int addr,
u32 *val)
{
return wlcore_raw_read32(wl, wlcore_translate_addr(wl, addr), val);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 24 | 68.57% | 2 | 40.00% |
Ido Yariv | 10 | 28.57% | 2 | 40.00% |
Luciano Coelho | 1 | 2.86% | 1 | 20.00% |
Total | 35 | 100.00% | 5 | 100.00% |
static inline int __must_check wlcore_write32(struct wl1271 *wl, int addr,
u32 val)
{
return wlcore_raw_write32(wl, wlcore_translate_addr(wl, addr), val);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 27 | 79.41% | 2 | 40.00% |
Ido Yariv | 6 | 17.65% | 2 | 40.00% |
Luciano Coelho | 1 | 2.94% | 1 | 20.00% |
Total | 34 | 100.00% | 5 | 100.00% |
static inline int __must_check wlcore_read_reg(struct wl1271 *wl, int reg,
u32 *val)
{
return wlcore_raw_read32(wl,
wlcore_translate_addr(wl, wl->rtable[reg]),
val);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 31 | 77.50% | 1 | 33.33% |
Ido Yariv | 9 | 22.50% | 2 | 66.67% |
Total | 40 | 100.00% | 3 | 100.00% |
static inline int __must_check wlcore_write_reg(struct wl1271 *wl, int reg,
u32 val)
{
return wlcore_raw_write32(wl,
wlcore_translate_addr(wl, wl->rtable[reg]),
val);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Luciano Coelho | 34 | 87.18% | 1 | 33.33% |
Ido Yariv | 5 | 12.82% | 2 | 66.67% |
Total | 39 | 100.00% | 3 | 100.00% |
static inline void wl1271_power_off(struct wl1271 *wl)
{
int ret = 0;
if (!test_bit(WL1271_FLAG_GPIO_POWER, &wl->flags))
return;
if (wl->if_ops->power)
ret = wl->if_ops->power(wl->dev, false);
if (!ret)
clear_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 33 | 47.83% | 1 | 25.00% |
Ido Yariv | 24 | 34.78% | 1 | 25.00% |
Uri Mashiach | 10 | 14.49% | 1 | 25.00% |
Felipe Balbi | 2 | 2.90% | 1 | 25.00% |
Total | 69 | 100.00% | 4 | 100.00% |
static inline int wl1271_power_on(struct wl1271 *wl)
{
int ret = 0;
if (wl->if_ops->power)
ret = wl->if_ops->power(wl->dev, true);
if (ret == 0)
set_bit(WL1271_FLAG_GPIO_POWER, &wl->flags);
return ret;
}
Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 31 | 52.54% | 1 | 25.00% |
Uri Mashiach | 13 | 22.03% | 1 | 25.00% |
Ohad Ben-Cohen | 13 | 22.03% | 1 | 25.00% |
Felipe Balbi | 2 | 3.39% | 1 | 25.00% |
Total | 59 | 100.00% | 4 | 100.00% |
int wlcore_set_partition(struct wl1271 *wl,
const struct wlcore_partition_set *p);
bool wl1271_set_block_size(struct wl1271 *wl);
/* Functions from wl1271_main.c */
int wl1271_tx_dummy_packet(struct wl1271 *wl);
#endif
Overall Contributors
Person | Tokens | Prop | Commits | CommitProp |
Teemu Paasikivi | 461 | 40.69% | 7 | 18.42% |
Luciano Coelho | 247 | 21.80% | 3 | 7.89% |
Ido Yariv | 216 | 19.06% | 14 | 36.84% |
Arik Nemtsov | 84 | 7.41% | 2 | 5.26% |
Barak Bercovitz | 38 | 3.35% | 1 | 2.63% |
Uri Mashiach | 23 | 2.03% | 1 | 2.63% |
Shahar Levi | 20 | 1.77% | 3 | 7.89% |
Ohad Ben-Cohen | 13 | 1.15% | 1 | 2.63% |
Igal Chernobelsky | 10 | 0.88% | 1 | 2.63% |
Felipe Balbi | 9 | 0.79% | 2 | 5.26% |
Juuso Oikarinen | 6 | 0.53% | 1 | 2.63% |
Guy Mishol | 5 | 0.44% | 1 | 2.63% |
Alexey Dobriyan | 1 | 0.09% | 1 | 2.63% |
Total | 1133 | 100.00% | 38 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.