cregit-Linux how code gets into the kernel

Release 4.11 drivers/staging/rtl8192u/r8180_93cx6.c

/*
 *  This files contains card eeprom (93c46 or 93c56) programming routines,
 *  memory is addressed by 16 bits words.
 *
 *  This is part of rtl8180 OpenSource driver.
 *  Copyright (C) Andrea Merello 2004  <andrea.merello@gmail.com>
 *  Released under the terms of GPL (General Public Licence)
 *
 *  Parts of this driver are based on the GPL part of the
 *  official realtek driver.
 *
 *  Parts of this driver are based on the rtl8180 driver skeleton
 *  from Patric Schenke & Andres Salomon.
 *
 *  Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver.
 *
 *  We want to thank the Authors of those projects and the Ndiswrapper
 *  project Authors.
 */

#include "r8180_93cx6.h"


static void eprom_cs(struct net_device *dev, short bit) { u8 cmdreg; int err; err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg); if (err) return; if (bit) /* enable EPROM */ write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CS_BIT); else /* disable EPROM */ write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_CS_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang4761.04%125.00%
Xenia Ragiadakou1924.68%125.00%
Salah Triki1012.99%125.00%
Ana Rey Botello11.30%125.00%
Total77100.00%4100.00%


static void eprom_ck_cycle(struct net_device *dev) { u8 cmdreg; int err; err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg); if (err) return; write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CK_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); read_nic_byte_E(dev, EPROM_CMD, &cmdreg); write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_CK_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang5462.07%125.00%
Xenia Ragiadakou2225.29%125.00%
Salah Triki1011.49%125.00%
Ana Rey Botello11.15%125.00%
Total87100.00%4100.00%


static void eprom_w(struct net_device *dev, short bit) { u8 cmdreg; int err; err = read_nic_byte_E(dev, EPROM_CMD, &cmdreg); if (err) return; if (bit) write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_W_BIT); else write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_W_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang4762.67%125.00%
Xenia Ragiadakou1722.67%125.00%
Salah Triki1013.33%125.00%
Ana Rey Botello11.33%125.00%
Total75100.00%4100.00%


static short eprom_r(struct net_device *dev) { u8 bit; int err; err = read_nic_byte_E(dev, EPROM_CMD, &bit); if (err) return err; udelay(EPROM_DELAY); if (bit & EPROM_R_BIT) return 1; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang3464.15%125.00%
Salah Triki1222.64%125.00%
Xenia Ragiadakou611.32%125.00%
Ana Rey Botello11.89%125.00%
Total53100.00%4100.00%


static void eprom_send_bits_string(struct net_device *dev, short b[], int len) { int i; for (i = 0; i < len; i++) { eprom_w(dev, b[i]); eprom_ck_cycle(dev); } }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang5098.04%150.00%
Ana Rey Botello11.96%150.00%
Total51100.00%2100.00%


int eprom_read(struct net_device *dev, u32 addr) { struct r8192_priv *priv = ieee80211_priv(dev); short read_cmd[] = {1, 1, 0}; short addr_str[8]; int i; int addr_len; u32 ret; int err; ret = 0; /* enable EPROM programming */ write_nic_byte_E(dev, EPROM_CMD, (EPROM_CMD_PROGRAM<<EPROM_CMD_OPERATING_MODE_SHIFT)); force_pci_posting(dev); udelay(EPROM_DELAY); if (priv->epromtype == EPROM_93c56) { addr_str[7] = addr & 1; addr_str[6] = addr & (1<<1); addr_str[5] = addr & (1<<2); addr_str[4] = addr & (1<<3); addr_str[3] = addr & (1<<4); addr_str[2] = addr & (1<<5); addr_str[1] = addr & (1<<6); addr_str[0] = addr & (1<<7); addr_len = 8; } else { addr_str[5] = addr & 1; addr_str[4] = addr & (1<<1); addr_str[3] = addr & (1<<2); addr_str[2] = addr & (1<<3); addr_str[1] = addr & (1<<4); addr_str[0] = addr & (1<<5); addr_len = 6; } eprom_cs(dev, 1); eprom_ck_cycle(dev); eprom_send_bits_string(dev, read_cmd, 3); eprom_send_bits_string(dev, addr_str, addr_len); /* * keep chip pin D to low state while reading. * I'm unsure if it is necessary, but anyway shouldn't hurt */ eprom_w(dev, 0); for (i = 0; i < 16; i++) { /* eeprom needs a clk cycle between writing opcode&adr * and reading data. (eeprom outs a dummy 0) */ eprom_ck_cycle(dev); err = eprom_r(dev); if (err < 0) return err; ret |= err<<(15-i); } eprom_cs(dev, 0); eprom_ck_cycle(dev); /* disable EPROM programming */ write_nic_byte_E(dev, EPROM_CMD, (EPROM_CMD_NORMAL<<EPROM_CMD_OPERATING_MODE_SHIFT)); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang36794.10%133.33%
Salah Triki194.87%133.33%
Sanjeev Sharma41.03%133.33%
Total390100.00%3100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Jerry Chuang60281.68%114.29%
Xenia Ragiadakou648.68%114.29%
Salah Triki618.28%228.57%
Ana Rey Botello50.68%114.29%
Sanjeev Sharma40.54%114.29%
Derek Robson10.14%114.29%
Total737100.00%7100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.