cregit-Linux how code gets into the kernel

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

PersonTokensPropCommitsCommitProp
Arik Nemtsov4238.89%222.22%
Teemu Paasikivi3936.11%222.22%
Barak Bercovitz1917.59%111.11%
Ido Yariv65.56%333.33%
Felipe Balbi21.85%111.11%
Total108100.00%9100.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

PersonTokensPropCommitsCommitProp
Arik Nemtsov4238.89%222.22%
Teemu Paasikivi3936.11%222.22%
Barak Bercovitz1917.59%111.11%
Ido Yariv65.56%333.33%
Felipe Balbi21.85%111.11%
Total108100.00%9100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho4088.89%125.00%
Ido Yariv511.11%375.00%
Total45100.00%4100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho4088.89%125.00%
Ido Yariv511.11%375.00%
Total45100.00%4100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi3750.68%116.67%
Ido Yariv3345.21%466.67%
Juuso Oikarinen34.11%116.67%
Total73100.00%6100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi4078.43%116.67%
Ido Yariv815.69%466.67%
Juuso Oikarinen35.88%116.67%
Total51100.00%6100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi4586.54%233.33%
Ido Yariv611.54%350.00%
Luciano Coelho11.92%116.67%
Total52100.00%6100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi4586.54%233.33%
Ido Yariv611.54%350.00%
Luciano Coelho11.92%116.67%
Total52100.00%6100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho4088.89%133.33%
Ido Yariv511.11%266.67%
Total45100.00%3100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho4088.89%133.33%
Ido Yariv511.11%266.67%
Total45100.00%3100.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

PersonTokensPropCommitsCommitProp
Ido Yariv5884.06%466.67%
Igal Chernobelsky1014.49%116.67%
Luciano Coelho11.45%116.67%
Total69100.00%6100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi2468.57%240.00%
Ido Yariv1028.57%240.00%
Luciano Coelho12.86%120.00%
Total35100.00%5100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi2779.41%240.00%
Ido Yariv617.65%240.00%
Luciano Coelho12.94%120.00%
Total34100.00%5100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho3177.50%133.33%
Ido Yariv922.50%266.67%
Total40100.00%3100.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

PersonTokensPropCommitsCommitProp
Luciano Coelho3487.18%133.33%
Ido Yariv512.82%266.67%
Total39100.00%3100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi3347.83%125.00%
Ido Yariv2434.78%125.00%
Uri Mashiach1014.49%125.00%
Felipe Balbi22.90%125.00%
Total69100.00%4100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi3152.54%125.00%
Uri Mashiach1322.03%125.00%
Ohad Ben-Cohen1322.03%125.00%
Felipe Balbi23.39%125.00%
Total59100.00%4100.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

PersonTokensPropCommitsCommitProp
Teemu Paasikivi46140.69%718.42%
Luciano Coelho24721.80%37.89%
Ido Yariv21619.06%1436.84%
Arik Nemtsov847.41%25.26%
Barak Bercovitz383.35%12.63%
Uri Mashiach232.03%12.63%
Shahar Levi201.77%37.89%
Ohad Ben-Cohen131.15%12.63%
Igal Chernobelsky100.88%12.63%
Felipe Balbi90.79%25.26%
Juuso Oikarinen60.53%12.63%
Guy Mishol50.44%12.63%
Alexey Dobriyan10.09%12.63%
Total1133100.00%38100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.