mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6: (50 commits) pcmcia: rework the irq_req_t typedef pcmcia: remove deprecated handle_to_dev() macro pcmcia: pcmcia_request_window() doesn't need a pointer to a pointer pcmcia: remove unused "window_t" typedef pcmcia: move some window-related code to pcmcia_ioctl.c pcmcia: Change window_handle_t logic to unsigned long pcmcia: Pass struct pcmcia_socket to pcmcia_get_mem_page() pcmcia: Pass struct pcmcia_device to pcmcia_map_mem_page() pcmcia: Pass struct pcmcia_device to pcmcia_release_window() drivers/pcmcia: remove unnecessary kzalloc pcmcia: correct handling for Zoomed Video registers in topic.h pcmcia: fix printk formats pcmcia: autoload module pcmcia pcmcia/staging: update comedi drivers PCMCIA: stop duplicating pci_irq in soc_pcmcia_socket PCMCIA: ss: allow PCI IRQs > 255 PCMCIA: soc_common: remove 'dev' member from soc_pcmcia_socket PCMCIA: soc_common: constify soc_pcmcia_socket ops member PCMCIA: sa1111: remove duplicated initializers PCMCIA: sa1111: wrap soc_pcmcia_socket to contain sa1111 specific data ...
This commit is contained in:
commit
d9b2c4d0b0
110 changed files with 3057 additions and 4579 deletions
|
|
@ -15,6 +15,10 @@
|
|||
#ifndef _LINUX_CS_H
|
||||
#define _LINUX_CS_H
|
||||
|
||||
#ifdef __KERNEL__
|
||||
#include <linux/interrupt.h>
|
||||
#endif
|
||||
|
||||
/* For AccessConfigurationRegister */
|
||||
typedef struct conf_reg_t {
|
||||
u_char Function;
|
||||
|
|
@ -111,11 +115,9 @@ typedef struct io_req_t {
|
|||
|
||||
/* For RequestIRQ and ReleaseIRQ */
|
||||
typedef struct irq_req_t {
|
||||
u_int Attributes;
|
||||
u_int AssignedIRQ;
|
||||
u_int IRQInfo1, IRQInfo2; /* IRQInfo2 is ignored */
|
||||
void *Handler;
|
||||
void *Instance;
|
||||
u_int Attributes;
|
||||
u_int AssignedIRQ;
|
||||
irq_handler_t Handler;
|
||||
} irq_req_t;
|
||||
|
||||
/* Attributes for RequestIRQ and ReleaseIRQ */
|
||||
|
|
@ -125,7 +127,7 @@ typedef struct irq_req_t {
|
|||
#define IRQ_TYPE_DYNAMIC_SHARING 0x02
|
||||
#define IRQ_FORCED_PULSE 0x04
|
||||
#define IRQ_FIRST_SHARED 0x08
|
||||
#define IRQ_HANDLE_PRESENT 0x10
|
||||
//#define IRQ_HANDLE_PRESENT 0x10
|
||||
#define IRQ_PULSE_ALLOCATED 0x100
|
||||
|
||||
/* Bits in IRQInfo1 field */
|
||||
|
|
|
|||
|
|
@ -26,8 +26,7 @@ typedef u_int event_t;
|
|||
typedef u_char cisdata_t;
|
||||
typedef u_short page_t;
|
||||
|
||||
struct window_t;
|
||||
typedef struct window_t *window_handle_t;
|
||||
typedef unsigned long window_handle_t;
|
||||
|
||||
struct region_t;
|
||||
typedef struct region_t *memory_handle_t;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
struct pcmcia_socket;
|
||||
struct pcmcia_device;
|
||||
struct config_t;
|
||||
struct net_device;
|
||||
|
||||
/* dynamic device IDs for PCMCIA device drivers. See
|
||||
* Documentation/pcmcia/driver.txt for details.
|
||||
|
|
@ -137,65 +138,39 @@ struct pcmcia_device {
|
|||
#define to_pcmcia_dev(n) container_of(n, struct pcmcia_device, dev)
|
||||
#define to_pcmcia_drv(n) container_of(n, struct pcmcia_driver, drv)
|
||||
|
||||
/* deprecated -- don't use! */
|
||||
#define handle_to_dev(handle) (handle->dev)
|
||||
|
||||
|
||||
/* (deprecated) error reporting by PCMCIA devices. Use dev_printk()
|
||||
* or dev_dbg() directly in the driver, without referring to pcmcia_error_func()
|
||||
* and/or pcmcia_error_ret() for those functions will go away soon.
|
||||
/*
|
||||
* CIS access.
|
||||
*
|
||||
* Please use the following functions to access CIS tuples:
|
||||
* - pcmcia_get_tuple()
|
||||
* - pcmcia_loop_tuple()
|
||||
* - pcmcia_get_mac_from_cis()
|
||||
*
|
||||
* To parse a tuple_t, pcmcia_parse_tuple() exists. Its interface
|
||||
* might change in future.
|
||||
*/
|
||||
enum service {
|
||||
AccessConfigurationRegister, AddSocketServices,
|
||||
AdjustResourceInfo, CheckEraseQueue, CloseMemory, CopyMemory,
|
||||
DeregisterClient, DeregisterEraseQueue, GetCardServicesInfo,
|
||||
GetClientInfo, GetConfigurationInfo, GetEventMask,
|
||||
GetFirstClient, GetFirstPartion, GetFirstRegion, GetFirstTuple,
|
||||
GetNextClient, GetNextPartition, GetNextRegion, GetNextTuple,
|
||||
GetStatus, GetTupleData, MapLogSocket, MapLogWindow, MapMemPage,
|
||||
MapPhySocket, MapPhyWindow, ModifyConfiguration, ModifyWindow,
|
||||
OpenMemory, ParseTuple, ReadMemory, RegisterClient,
|
||||
RegisterEraseQueue, RegisterMTD, RegisterTimer,
|
||||
ReleaseConfiguration, ReleaseExclusive, ReleaseIO, ReleaseIRQ,
|
||||
ReleaseSocketMask, ReleaseWindow, ReplaceSocketServices,
|
||||
RequestConfiguration, RequestExclusive, RequestIO, RequestIRQ,
|
||||
RequestSocketMask, RequestWindow, ResetCard, ReturnSSEntry,
|
||||
SetEventMask, SetRegion, ValidateCIS, VendorSpecific,
|
||||
WriteMemory, BindDevice, BindMTD, ReportError,
|
||||
SuspendCard, ResumeCard, EjectCard, InsertCard, ReplaceCIS,
|
||||
GetFirstWindow, GetNextWindow, GetMemPage
|
||||
};
|
||||
const char *pcmcia_error_func(int func);
|
||||
const char *pcmcia_error_ret(int ret);
|
||||
|
||||
#define cs_error(p_dev, func, ret) \
|
||||
{ \
|
||||
dev_printk(KERN_NOTICE, &p_dev->dev, \
|
||||
"%s : %s\n", \
|
||||
pcmcia_error_func(func), \
|
||||
pcmcia_error_ret(ret)); \
|
||||
}
|
||||
/* get the very first CIS entry of type @code. Note that buf is pointer
|
||||
* to u8 *buf; and that you need to kfree(buf) afterwards. */
|
||||
size_t pcmcia_get_tuple(struct pcmcia_device *p_dev, cisdata_t code,
|
||||
u8 **buf);
|
||||
|
||||
/* CIS access.
|
||||
* Use the pcmcia_* versions in PCMCIA drivers
|
||||
*/
|
||||
/* loop over CIS entries */
|
||||
int pcmcia_loop_tuple(struct pcmcia_device *p_dev, cisdata_t code,
|
||||
int (*loop_tuple) (struct pcmcia_device *p_dev,
|
||||
tuple_t *tuple,
|
||||
void *priv_data),
|
||||
void *priv_data);
|
||||
|
||||
/* get the MAC address from CISTPL_FUNCE */
|
||||
int pcmcia_get_mac_from_cis(struct pcmcia_device *p_dev,
|
||||
struct net_device *dev);
|
||||
|
||||
|
||||
/* parse a tuple_t */
|
||||
int pcmcia_parse_tuple(tuple_t *tuple, cisparse_t *parse);
|
||||
|
||||
int pccard_get_first_tuple(struct pcmcia_socket *s, unsigned int function,
|
||||
tuple_t *tuple);
|
||||
#define pcmcia_get_first_tuple(p_dev, tuple) \
|
||||
pccard_get_first_tuple(p_dev->socket, p_dev->func, tuple)
|
||||
|
||||
int pccard_get_next_tuple(struct pcmcia_socket *s, unsigned int function,
|
||||
tuple_t *tuple);
|
||||
#define pcmcia_get_next_tuple(p_dev, tuple) \
|
||||
pccard_get_next_tuple(p_dev->socket, p_dev->func, tuple)
|
||||
|
||||
int pccard_get_tuple_data(struct pcmcia_socket *s, tuple_t *tuple);
|
||||
#define pcmcia_get_tuple_data(p_dev, tuple) \
|
||||
pccard_get_tuple_data(p_dev->socket, tuple)
|
||||
|
||||
|
||||
/* loop CIS entries for valid configuration */
|
||||
int pcmcia_loop_config(struct pcmcia_device *p_dev,
|
||||
int (*conf_check) (struct pcmcia_device *p_dev,
|
||||
|
|
@ -221,12 +196,11 @@ int pcmcia_request_irq(struct pcmcia_device *p_dev, irq_req_t *req);
|
|||
int pcmcia_request_configuration(struct pcmcia_device *p_dev,
|
||||
config_req_t *req);
|
||||
|
||||
int pcmcia_request_window(struct pcmcia_device **p_dev, win_req_t *req,
|
||||
int pcmcia_request_window(struct pcmcia_device *p_dev, win_req_t *req,
|
||||
window_handle_t *wh);
|
||||
int pcmcia_release_window(window_handle_t win);
|
||||
|
||||
int pcmcia_get_mem_page(window_handle_t win, memreq_t *req);
|
||||
int pcmcia_map_mem_page(window_handle_t win, memreq_t *req);
|
||||
int pcmcia_release_window(struct pcmcia_device *p_dev, window_handle_t win);
|
||||
int pcmcia_map_mem_page(struct pcmcia_device *p_dev, window_handle_t win,
|
||||
memreq_t *req);
|
||||
|
||||
int pcmcia_modify_configuration(struct pcmcia_device *p_dev, modconf_t *mod);
|
||||
void pcmcia_disable_device(struct pcmcia_device *p_dev);
|
||||
|
|
|
|||
|
|
@ -107,15 +107,6 @@ typedef struct io_window_t {
|
|||
struct resource *res;
|
||||
} io_window_t;
|
||||
|
||||
#define WINDOW_MAGIC 0xB35C
|
||||
typedef struct window_t {
|
||||
u_short magic;
|
||||
u_short index;
|
||||
struct pcmcia_device *handle;
|
||||
struct pcmcia_socket *sock;
|
||||
pccard_mem_map ctl;
|
||||
} window_t;
|
||||
|
||||
/* Maximum number of IO windows per socket */
|
||||
#define MAX_IO_WIN 2
|
||||
|
||||
|
|
@ -155,7 +146,7 @@ struct pcmcia_socket {
|
|||
u_int Config;
|
||||
} irq;
|
||||
io_window_t io[MAX_IO_WIN];
|
||||
window_t win[MAX_WIN];
|
||||
pccard_mem_map win[MAX_WIN];
|
||||
struct list_head cis_cache;
|
||||
size_t fake_cis_len;
|
||||
u8 *fake_cis;
|
||||
|
|
@ -172,7 +163,7 @@ struct pcmcia_socket {
|
|||
u_int irq_mask;
|
||||
u_int map_size;
|
||||
u_int io_offset;
|
||||
u_char pci_irq;
|
||||
u_int pci_irq;
|
||||
struct pci_dev * cb_dev;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue