You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge 'staging-next' to Linus's tree
This merges the staging-next tree to Linus's tree and resolves some conflicts that were present due to changes in other trees that were affected by files here. Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
What: /sys/block/zram<id>/disksize
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is read-write and specifies the disk size
|
||||
which represents the limit on the *uncompressed* worth of data
|
||||
that can be stored in this disk.
|
||||
|
||||
What: /sys/block/zram<id>/initstate
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is read-only and shows the initialization
|
||||
state of the device.
|
||||
|
||||
What: /sys/block/zram<id>/reset
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is write-only and allows resetting the
|
||||
device. The reset operation frees all the memory assocaited
|
||||
with this device.
|
||||
|
||||
What: /sys/block/zram<id>/num_reads
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The num_reads file is read-only and specifies the number of
|
||||
reads (failed or successful) done on this device.
|
||||
|
||||
What: /sys/block/zram<id>/num_writes
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The num_writes file is read-only and specifies the number of
|
||||
writes (failed or successful) done on this device.
|
||||
|
||||
What: /sys/block/zram<id>/invalid_io
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The invalid_io file is read-only and specifies the number of
|
||||
non-page-size-aligned I/O requests issued to this device.
|
||||
|
||||
What: /sys/block/zram<id>/notify_free
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The notify_free file is read-only and specifies the number of
|
||||
swap slot free notifications received by this device. These
|
||||
notifications are send to a swap block device when a swap slot
|
||||
is freed. This statistic is applicable only when this disk is
|
||||
being used as a swap disk.
|
||||
|
||||
What: /sys/block/zram<id>/discard
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The discard file is read-only and specifies the number of
|
||||
discard requests received by this device. These requests
|
||||
provide information to block device regarding blocks which are
|
||||
no longer used by filesystem.
|
||||
|
||||
What: /sys/block/zram<id>/zero_pages
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The zero_pages file is read-only and specifies number of zero
|
||||
filled pages written to this disk. No memory is allocated for
|
||||
such pages.
|
||||
|
||||
What: /sys/block/zram<id>/orig_data_size
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The orig_data_size file is read-only and specifies uncompressed
|
||||
size of data stored in this disk. This excludes zero-filled
|
||||
pages (zero_pages) since no memory is allocated for them.
|
||||
Unit: bytes
|
||||
|
||||
What: /sys/block/zram<id>/compr_data_size
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The compr_data_size file is read-only and specifies compressed
|
||||
size of data stored in this disk. So, compression ratio can be
|
||||
calculated using orig_data_size and this statistic.
|
||||
Unit: bytes
|
||||
|
||||
What: /sys/block/zram<id>/mem_used_total
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The mem_used_total file is read-only and specifies the amount
|
||||
of memory, including allocator fragmentation and metadata
|
||||
overhead, allocated for this disk. So, allocator space
|
||||
efficiency can be calculated using compr_data_size and this
|
||||
statistic.
|
||||
Unit: bytes
|
||||
@@ -96,8 +96,6 @@ seq_file.txt
|
||||
- how to use the seq_file API
|
||||
sharedsubtree.txt
|
||||
- a description of shared subtrees for namespaces.
|
||||
smbfs.txt
|
||||
- info on using filesystems with the SMB protocol (Win 3.11 and NT).
|
||||
spufs.txt
|
||||
- info and mount options for the SPU filesystem used on Cell.
|
||||
sysfs-pci.txt
|
||||
|
||||
@@ -259,7 +259,7 @@ Code Seq#(hex) Include File Comments
|
||||
't' 00-7F linux/if_ppp.h
|
||||
't' 80-8F linux/isdn_ppp.h
|
||||
't' 90 linux/toshiba.h
|
||||
'u' 00-1F linux/smb_fs.h
|
||||
'u' 00-1F linux/smb_fs.h gone
|
||||
'v' all linux/videodev.h conflict!
|
||||
'v' 00-1F linux/ext2_fs.h conflict!
|
||||
'v' 00-1F linux/fs.h conflict!
|
||||
|
||||
+11
-3
@@ -1391,6 +1391,14 @@ L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/net/tg3.*
|
||||
|
||||
BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
|
||||
M: Brett Rudley <brudley@broadcom.com>
|
||||
M: Henry Ptasinski <henryp@broadcom.com>
|
||||
M: Nohee Ko <noheek@broadcom.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Supported
|
||||
F: drivers/staging/brcm80211/
|
||||
|
||||
BROCADE BFA FC SCSI DRIVER
|
||||
M: Jing Huang <huangj@brocade.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
@@ -3383,8 +3391,8 @@ F: Documentation/kdump/
|
||||
KERNEL AUTOMOUNTER (AUTOFS)
|
||||
M: "H. Peter Anvin" <hpa@zytor.com>
|
||||
L: autofs@linux.kernel.org
|
||||
S: Odd Fixes
|
||||
F: fs/autofs/
|
||||
S: Obsolete
|
||||
F: drivers/staging/autofs/
|
||||
|
||||
KERNEL AUTOMOUNTER v4 (AUTOFS4)
|
||||
M: Ian Kent <raven@themaw.net>
|
||||
@@ -5667,7 +5675,7 @@ S: Maintained
|
||||
|
||||
STAGING SUBSYSTEM
|
||||
M: Greg Kroah-Hartman <gregkh@suse.de>
|
||||
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-next-2.6.git
|
||||
L: devel@driverdev.osuosl.org
|
||||
S: Maintained
|
||||
F: drivers/staging/
|
||||
|
||||
@@ -108,6 +108,10 @@ obj-y += $(iommu-m) $(iommu-y)
|
||||
i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
|
||||
obj-y += $(i2c-omap-m) $(i2c-omap-y)
|
||||
|
||||
ifneq ($(CONFIG_TIDSPBRIDGE),)
|
||||
obj-y += dsp.o
|
||||
endif
|
||||
|
||||
# Specific board support
|
||||
obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o
|
||||
obj-$(CONFIG_MACH_OMAP_H4) += board-h4.o
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* TI's OMAP DSP platform device registration
|
||||
*
|
||||
* Copyright (C) 2005-2006 Texas Instruments, Inc.
|
||||
* Copyright (C) 2009 Nokia Corporation
|
||||
*
|
||||
* Written by Hiroshi DOYU <Hiroshi.DOYU@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.
|
||||
*/
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include "prm.h"
|
||||
#include "cm.h"
|
||||
#ifdef CONFIG_BRIDGE_DVFS
|
||||
#include <plat/omap-pm.h>
|
||||
#endif
|
||||
|
||||
#include <plat/dsp.h>
|
||||
|
||||
extern phys_addr_t omap_dsp_get_mempool_base(void);
|
||||
|
||||
static struct platform_device *omap_dsp_pdev;
|
||||
|
||||
static struct omap_dsp_platform_data omap_dsp_pdata __initdata = {
|
||||
#ifdef CONFIG_BRIDGE_DVFS
|
||||
.dsp_set_min_opp = omap_pm_dsp_set_min_opp,
|
||||
.dsp_get_opp = omap_pm_dsp_get_opp,
|
||||
.cpu_set_freq = omap_pm_cpu_set_freq,
|
||||
.cpu_get_freq = omap_pm_cpu_get_freq,
|
||||
#endif
|
||||
.dsp_prm_read = prm_read_mod_reg,
|
||||
.dsp_prm_write = prm_write_mod_reg,
|
||||
.dsp_prm_rmw_bits = prm_rmw_mod_reg_bits,
|
||||
.dsp_cm_read = cm_read_mod_reg,
|
||||
.dsp_cm_write = cm_write_mod_reg,
|
||||
.dsp_cm_rmw_bits = cm_rmw_mod_reg_bits,
|
||||
};
|
||||
|
||||
static int __init omap_dsp_init(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
int err = -ENOMEM;
|
||||
struct omap_dsp_platform_data *pdata = &omap_dsp_pdata;
|
||||
|
||||
pdata->phys_mempool_base = omap_dsp_get_mempool_base();
|
||||
|
||||
if (pdata->phys_mempool_base) {
|
||||
pdata->phys_mempool_size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE;
|
||||
pr_info("%s: %x bytes @ %x\n", __func__,
|
||||
pdata->phys_mempool_size, pdata->phys_mempool_base);
|
||||
}
|
||||
|
||||
pdev = platform_device_alloc("omap-dsp", -1);
|
||||
if (!pdev)
|
||||
goto err_out;
|
||||
|
||||
err = platform_device_add_data(pdev, pdata, sizeof(*pdata));
|
||||
if (err)
|
||||
goto err_out;
|
||||
|
||||
err = platform_device_add(pdev);
|
||||
if (err)
|
||||
goto err_out;
|
||||
|
||||
omap_dsp_pdev = pdev;
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
platform_device_put(pdev);
|
||||
return err;
|
||||
}
|
||||
module_init(omap_dsp_init);
|
||||
|
||||
static void __exit omap_dsp_exit(void)
|
||||
{
|
||||
platform_device_unregister(omap_dsp_pdev);
|
||||
}
|
||||
module_exit(omap_dsp_exit);
|
||||
|
||||
MODULE_AUTHOR("Hiroshi DOYU");
|
||||
MODULE_DESCRIPTION("TI's OMAP DSP platform device registration");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <plat/common.h>
|
||||
#include <plat/board.h>
|
||||
#include <plat/vram.h>
|
||||
#include <plat/dsp.h>
|
||||
|
||||
|
||||
#define NO_LENGTH_CHECK 0xffffffff
|
||||
@@ -64,4 +65,5 @@ void __init omap_reserve(void)
|
||||
{
|
||||
omapfb_reserve_sdram_memblock();
|
||||
omap_vram_reserve_sdram_memblock();
|
||||
omap_dsp_reserve_sdram_memblock();
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/memblock.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/mach-types.h>
|
||||
@@ -231,6 +232,75 @@ static void omap_init_uwire(void)
|
||||
static inline void omap_init_uwire(void) {}
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#if defined(CONFIG_OMAP_WATCHDOG) || defined(CONFIG_OMAP_WATCHDOG_MODULE)
|
||||
|
||||
static struct resource wdt_resources[] = {
|
||||
{
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device omap_wdt_device = {
|
||||
.name = "omap_wdt",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(wdt_resources),
|
||||
.resource = wdt_resources,
|
||||
};
|
||||
|
||||
static void omap_init_wdt(void)
|
||||
{
|
||||
if (cpu_is_omap16xx())
|
||||
wdt_resources[0].start = 0xfffeb000;
|
||||
else if (cpu_is_omap2420())
|
||||
wdt_resources[0].start = 0x48022000; /* WDT2 */
|
||||
else if (cpu_is_omap2430())
|
||||
wdt_resources[0].start = 0x49016000; /* WDT2 */
|
||||
else if (cpu_is_omap343x())
|
||||
wdt_resources[0].start = 0x48314000; /* WDT2 */
|
||||
else if (cpu_is_omap44xx())
|
||||
wdt_resources[0].start = 0x4a314000;
|
||||
else
|
||||
return;
|
||||
|
||||
wdt_resources[0].end = wdt_resources[0].start + 0x4f;
|
||||
|
||||
(void) platform_device_register(&omap_wdt_device);
|
||||
}
|
||||
#else
|
||||
static inline void omap_init_wdt(void) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_TIDSPBRIDGE) || defined(CONFIG_TIDSPBRIDGE_MODULE)
|
||||
|
||||
static phys_addr_t omap_dsp_phys_mempool_base;
|
||||
|
||||
void __init omap_dsp_reserve_sdram_memblock(void)
|
||||
{
|
||||
phys_addr_t size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE;
|
||||
phys_addr_t paddr;
|
||||
|
||||
if (!size)
|
||||
return;
|
||||
|
||||
paddr = __memblock_alloc_base(size, SZ_1M, MEMBLOCK_REAL_LIMIT);
|
||||
if (!paddr) {
|
||||
pr_err("%s: failed to reserve %x bytes\n",
|
||||
__func__, size);
|
||||
return;
|
||||
}
|
||||
|
||||
omap_dsp_phys_mempool_base = paddr;
|
||||
}
|
||||
|
||||
phys_addr_t omap_dsp_get_mempool_base(void)
|
||||
{
|
||||
return omap_dsp_phys_mempool_base;
|
||||
}
|
||||
EXPORT_SYMBOL(omap_dsp_get_mempool_base);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This gets called after board-specific INIT_MACHINE, and initializes most
|
||||
* on-chip peripherals accessible on this board (except for few like USB):
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef __OMAP_DSP_H__
|
||||
#define __OMAP_DSP_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct omap_dsp_platform_data {
|
||||
void (*dsp_set_min_opp) (u8 opp_id);
|
||||
u8 (*dsp_get_opp) (void);
|
||||
void (*cpu_set_freq) (unsigned long f);
|
||||
unsigned long (*cpu_get_freq) (void);
|
||||
unsigned long mpu_speed[6];
|
||||
|
||||
/* functions to write and read PRCM registers */
|
||||
void (*dsp_prm_write)(u32, s16 , u16);
|
||||
u32 (*dsp_prm_read)(s16 , u16);
|
||||
u32 (*dsp_prm_rmw_bits)(u32, u32, s16, s16);
|
||||
void (*dsp_cm_write)(u32, s16 , u16);
|
||||
u32 (*dsp_cm_read)(s16 , u16);
|
||||
u32 (*dsp_cm_rmw_bits)(u32, u32, s16, s16);
|
||||
|
||||
phys_addr_t phys_mempool_base;
|
||||
phys_addr_t phys_mempool_size;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_TIDSPBRIDGE) || defined(CONFIG_TIDSPBRIDGE_MODULE)
|
||||
extern void omap_dsp_reserve_sdram_memblock(void);
|
||||
#else
|
||||
static inline void omap_dsp_reserve_sdram_memblock(void) { }
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -447,5 +447,6 @@ source "drivers/misc/c2port/Kconfig"
|
||||
source "drivers/misc/eeprom/Kconfig"
|
||||
source "drivers/misc/cb710/Kconfig"
|
||||
source "drivers/misc/iwmc3200top/Kconfig"
|
||||
source "drivers/misc/ti-st/Kconfig"
|
||||
|
||||
endif # MISC_DEVICES
|
||||
|
||||
@@ -40,3 +40,4 @@ obj-y += cb710/
|
||||
obj-$(CONFIG_VMWARE_BALLOON) += vmw_balloon.o
|
||||
obj-$(CONFIG_ARM_CHARLCD) += arm-charlcd.o
|
||||
obj-$(CONFIG_PCH_PHUB) += pch_phub.o
|
||||
obj-y += ti-st/
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
#
|
||||
# TI's shared transport line discipline and the protocol
|
||||
# drivers (BT, FM and GPS)
|
||||
#
|
||||
menu "Texas Instruments shared transport line discipline"
|
||||
config TI_ST
|
||||
tristate "Shared transport core driver"
|
||||
depends on RFKILL
|
||||
select FW_LOADER
|
||||
help
|
||||
This enables the shared transport core driver for TI
|
||||
BT / FM and GPS combo chips. This enables protocol drivers
|
||||
to register themselves with core and send data, the responses
|
||||
are returned to relevant protocol drivers based on their
|
||||
packet types.
|
||||
|
||||
endmenu
|
||||
@@ -0,0 +1,6 @@
|
||||
#
|
||||
# Makefile for TI's shared transport line discipline
|
||||
# and its protocol drivers (BT, FM, GPS)
|
||||
#
|
||||
obj-$(CONFIG_TI_ST) += st_drv.o
|
||||
st_drv-objs := st_core.o st_kim.o st_ll.o
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Shared Transport Line discipline driver Core
|
||||
* This hooks up ST KIM driver and ST LL driver
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
* Copyright (C) 2009-2010 Texas Instruments
|
||||
* Author: Pavan Savoy <pavan_savoy@ti.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
|
||||
@@ -28,25 +29,8 @@
|
||||
#include <net/bluetooth/bluetooth.h>
|
||||
#include <net/bluetooth/hci_core.h>
|
||||
#include <net/bluetooth/hci.h>
|
||||
#include "fm.h"
|
||||
/*
|
||||
* packet formats for fm and gps
|
||||
* #include "gps.h"
|
||||
*/
|
||||
#include "st_core.h"
|
||||
#include "st_kim.h"
|
||||
#include "st_ll.h"
|
||||
#include "st.h"
|
||||
#include <linux/ti_wilink_st.h>
|
||||
|
||||
/* strings to be used for rfkill entries and by
|
||||
* ST Core to be used for sysfs debug entry
|
||||
*/
|
||||
#define PROTO_ENTRY(type, name) name
|
||||
const unsigned char *protocol_strngs[] = {
|
||||
PROTO_ENTRY(ST_BT, "Bluetooth"),
|
||||
PROTO_ENTRY(ST_FM, "FM"),
|
||||
PROTO_ENTRY(ST_GPS, "GPS"),
|
||||
};
|
||||
/* function pointer pointing to either,
|
||||
* st_kim_recv during registration to receive fw download responses
|
||||
* st_int_recv after registration to receive proto stack responses
|
||||
@@ -151,7 +135,7 @@ void st_reg_complete(struct st_data_s *st_gdata, char err)
|
||||
static inline int st_check_data_len(struct st_data_s *st_gdata,
|
||||
int protoid, int len)
|
||||
{
|
||||
register int room = skb_tailroom(st_gdata->rx_skb);
|
||||
int room = skb_tailroom(st_gdata->rx_skb);
|
||||
|
||||
pr_debug("len %d room %d", len, room);
|
||||
|
||||
@@ -194,7 +178,7 @@ static inline int st_check_data_len(struct st_data_s *st_gdata,
|
||||
static inline void st_wakeup_ack(struct st_data_s *st_gdata,
|
||||
unsigned char cmd)
|
||||
{
|
||||
register struct sk_buff *waiting_skb;
|
||||
struct sk_buff *waiting_skb;
|
||||
unsigned long flags = 0;
|
||||
|
||||
spin_lock_irqsave(&st_gdata->lock, flags);
|
||||
@@ -223,13 +207,13 @@ static inline void st_wakeup_ack(struct st_data_s *st_gdata,
|
||||
void st_int_recv(void *disc_data,
|
||||
const unsigned char *data, long count)
|
||||
{
|
||||
register char *ptr;
|
||||
char *ptr;
|
||||
struct hci_event_hdr *eh;
|
||||
struct hci_acl_hdr *ah;
|
||||
struct hci_sco_hdr *sh;
|
||||
struct fm_event_hdr *fm;
|
||||
struct gps_event_hdr *gps;
|
||||
register int len = 0, type = 0, dlen = 0;
|
||||
int len = 0, type = 0, dlen = 0;
|
||||
static enum proto_type protoid = ST_MAX;
|
||||
struct st_data_s *st_gdata = (struct st_data_s *)disc_data;
|
||||
|
||||
@@ -685,9 +669,8 @@ long st_register(struct st_proto_s *new_proto)
|
||||
default:
|
||||
pr_err("%d protocol not supported",
|
||||
new_proto->type);
|
||||
err = -EPROTONOSUPPORT;
|
||||
/* something wrong */
|
||||
break;
|
||||
spin_unlock_irqrestore(&st_gdata->lock, flags);
|
||||
return -EPROTONOSUPPORT;
|
||||
}
|
||||
st_gdata->list[new_proto->type] = new_proto;
|
||||
st_gdata->protos_registered++;
|
||||
@@ -926,34 +909,27 @@ static void st_tty_flush_buffer(struct tty_struct *tty)
|
||||
return;
|
||||
}
|
||||
|
||||
static struct tty_ldisc_ops st_ldisc_ops = {
|
||||
.magic = TTY_LDISC_MAGIC,
|
||||
.name = "n_st",
|
||||
.open = st_tty_open,
|
||||
.close = st_tty_close,
|
||||
.receive_buf = st_tty_receive,
|
||||
.write_wakeup = st_tty_wakeup,
|
||||
.flush_buffer = st_tty_flush_buffer,
|
||||
.owner = THIS_MODULE
|
||||
};
|
||||
|
||||
/********************************************************************/
|
||||
int st_core_init(struct st_data_s **core_data)
|
||||
{
|
||||
struct st_data_s *st_gdata;
|
||||
long err;
|
||||
static struct tty_ldisc_ops *st_ldisc_ops;
|
||||
|
||||
/* populate and register to TTY line discipline */
|
||||
st_ldisc_ops = kzalloc(sizeof(*st_ldisc_ops), GFP_KERNEL);
|
||||
if (!st_ldisc_ops) {
|
||||
pr_err("no mem to allocate");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
st_ldisc_ops->magic = TTY_LDISC_MAGIC;
|
||||
st_ldisc_ops->name = "n_st"; /*"n_hci"; */
|
||||
st_ldisc_ops->open = st_tty_open;
|
||||
st_ldisc_ops->close = st_tty_close;
|
||||
st_ldisc_ops->receive_buf = st_tty_receive;
|
||||
st_ldisc_ops->write_wakeup = st_tty_wakeup;
|
||||
st_ldisc_ops->flush_buffer = st_tty_flush_buffer;
|
||||
st_ldisc_ops->owner = THIS_MODULE;
|
||||
|
||||
err = tty_register_ldisc(N_TI_WL, st_ldisc_ops);
|
||||
err = tty_register_ldisc(N_TI_WL, &st_ldisc_ops);
|
||||
if (err) {
|
||||
pr_err("error registering %d line discipline %ld",
|
||||
N_TI_WL, err);
|
||||
kfree(st_ldisc_ops);
|
||||
return err;
|
||||
}
|
||||
pr_debug("registered n_shared line discipline");
|
||||
@@ -964,7 +940,6 @@ int st_core_init(struct st_data_s **core_data)
|
||||
err = tty_unregister_ldisc(N_TI_WL);
|
||||
if (err)
|
||||
pr_err("unable to un-register ldisc %ld", err);
|
||||
kfree(st_ldisc_ops);
|
||||
err = -ENOMEM;
|
||||
return err;
|
||||
}
|
||||
@@ -978,22 +953,6 @@ int st_core_init(struct st_data_s **core_data)
|
||||
/* Locking used in st_int_enqueue() to avoid multiple execution */
|
||||
spin_lock_init(&st_gdata->lock);
|
||||
|
||||
/* ldisc_ops ref to be only used in __exit of module */
|
||||
st_gdata->ldisc_ops = st_ldisc_ops;
|
||||
|
||||
#if 0
|
||||
err = st_kim_init();
|
||||
if (err) {
|
||||
pr_err("error during kim initialization(%ld)", err);
|
||||
kfree(st_gdata);
|
||||
err = tty_unregister_ldisc(N_TI_WL);
|
||||
if (err)
|
||||
pr_err("unable to un-register ldisc");
|
||||
kfree(st_ldisc_ops);
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
err = st_ll_init(st_gdata);
|
||||
if (err) {
|
||||
pr_err("error during st_ll initialization(%ld)", err);
|
||||
@@ -1001,7 +960,6 @@ int st_core_init(struct st_data_s **core_data)
|
||||
err = tty_unregister_ldisc(N_TI_WL);
|
||||
if (err)
|
||||
pr_err("unable to un-register ldisc");
|
||||
kfree(st_ldisc_ops);
|
||||
return -1;
|
||||
}
|
||||
*core_data = st_gdata;
|
||||
@@ -1015,11 +973,7 @@ void st_core_exit(struct st_data_s *st_gdata)
|
||||
err = st_ll_deinit(st_gdata);
|
||||
if (err)
|
||||
pr_err("error during deinit of ST LL %ld", err);
|
||||
#if 0
|
||||
err = st_kim_deinit();
|
||||
if (err)
|
||||
pr_err("error during deinit of ST KIM %ld", err);
|
||||
#endif
|
||||
|
||||
if (st_gdata != NULL) {
|
||||
/* Free ST Tx Qs and skbs */
|
||||
skb_queue_purge(&st_gdata->txq);
|
||||
@@ -1030,7 +984,6 @@ void st_core_exit(struct st_data_s *st_gdata)
|
||||
err = tty_unregister_ldisc(N_TI_WL);
|
||||
if (err)
|
||||
pr_err("unable to un-register ldisc %ld", err);
|
||||
kfree(st_gdata->ldisc_ops);
|
||||
/* free the global data pointer */
|
||||
kfree(st_gdata);
|
||||
}
|
||||
@@ -2,7 +2,8 @@
|
||||
* Shared Transport Line discipline driver Core
|
||||
* Init Manager module responsible for GPIO control
|
||||
* and firmware download
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
* Copyright (C) 2009-2010 Texas Instruments
|
||||
* Author: Pavan Savoy <pavan_savoy@ti.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
|
||||
@@ -28,15 +29,16 @@
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/seq_file.h>
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <linux/rfkill.h>
|
||||
|
||||
#include "st_kim.h"
|
||||
/* understand BT events for fw response */
|
||||
#include <net/bluetooth/bluetooth.h>
|
||||
#include <net/bluetooth/hci_core.h>
|
||||
#include <net/bluetooth/hci.h>
|
||||
|
||||
#include <linux/ti_wilink_st.h>
|
||||
|
||||
|
||||
static int kim_probe(struct platform_device *pdev);
|
||||
static int kim_remove(struct platform_device *pdev);
|
||||
@@ -73,7 +75,7 @@ const unsigned char *protocol_names[] = {
|
||||
};
|
||||
|
||||
#define MAX_ST_DEVICES 3 /* Imagine 1 on each UART for now */
|
||||
struct platform_device *st_kim_devices[MAX_ST_DEVICES];
|
||||
static struct platform_device *st_kim_devices[MAX_ST_DEVICES];
|
||||
|
||||
/**********************************************************************/
|
||||
/* internal functions */
|
||||
@@ -155,17 +157,18 @@ static inline int kim_check_data_len(struct kim_data_s *kim_gdata, int len)
|
||||
void kim_int_recv(struct kim_data_s *kim_gdata,
|
||||
const unsigned char *data, long count)
|
||||
{
|
||||
register char *ptr;
|
||||
const unsigned char *ptr;
|
||||
struct hci_event_hdr *eh;
|
||||
register int len = 0, type = 0;
|
||||
int len = 0, type = 0;
|
||||
|
||||
pr_debug("%s", __func__);
|
||||
/* Decode received bytes here */
|
||||
ptr = (char *)data;
|
||||
ptr = data;
|
||||
if (unlikely(ptr == NULL)) {
|
||||
pr_err(" received null from TTY ");
|
||||
return;
|
||||
}
|
||||
|
||||
while (count) {
|
||||
if (kim_gdata->rx_count) {
|
||||
len = min_t(unsigned int, kim_gdata->rx_count, count);
|
||||
@@ -229,7 +232,7 @@ void kim_int_recv(struct kim_data_s *kim_gdata,
|
||||
static long read_local_version(struct kim_data_s *kim_gdata, char *bts_scr_name)
|
||||
{
|
||||
unsigned short version = 0, chip = 0, min_ver = 0, maj_ver = 0;
|
||||
char read_ver_cmd[] = { 0x01, 0x01, 0x10, 0x00 };
|
||||
const char read_ver_cmd[] = { 0x01, 0x01, 0x10, 0x00 };
|
||||
|
||||
pr_debug("%s", __func__);
|
||||
|
||||
@@ -276,8 +279,8 @@ static long download_firmware(struct kim_data_s *kim_gdata)
|
||||
{
|
||||
long err = 0;
|
||||
long len = 0;
|
||||
register unsigned char *ptr = NULL;
|
||||
register unsigned char *action_ptr = NULL;
|
||||
unsigned char *ptr = NULL;
|
||||
unsigned char *action_ptr = NULL;
|
||||
unsigned char bts_scr_name[30] = { 0 }; /* 30 char long bts scr name? */
|
||||
|
||||
err = read_local_version(kim_gdata, bts_scr_name);
|
||||
@@ -638,7 +641,14 @@ static int kim_probe(struct platform_device *pdev)
|
||||
long *gpios = pdev->dev.platform_data;
|
||||
struct kim_data_s *kim_gdata;
|
||||
|
||||
if ((pdev->id != -1) && (pdev->id < MAX_ST_DEVICES)) {
|
||||
/* multiple devices could exist */
|
||||
st_kim_devices[pdev->id] = pdev;
|
||||
} else {
|
||||
/* platform's sure about existance of 1 device */
|
||||
st_kim_devices[0] = pdev;
|
||||
}
|
||||
|
||||
kim_gdata = kzalloc(sizeof(struct kim_data_s), GFP_ATOMIC);
|
||||
if (!kim_gdata) {
|
||||
pr_err("no mem to allocate");
|
||||
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* Shared Transport driver
|
||||
* HCI-LL module responsible for TI proprietary HCI_LL protocol
|
||||
* Copyright (C) 2009 Texas Instruments
|
||||
* Copyright (C) 2009-2010 Texas Instruments
|
||||
* Author: Pavan Savoy <pavan_savoy@ti.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
|
||||
@@ -19,7 +20,9 @@
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "(stll) :" fmt
|
||||
#include "st_ll.h"
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/ti_wilink_st.h>
|
||||
|
||||
/**********************************************************************/
|
||||
/* internal functions */
|
||||
+25
-3
@@ -59,7 +59,7 @@ source "drivers/staging/wlan-ng/Kconfig"
|
||||
|
||||
source "drivers/staging/echo/Kconfig"
|
||||
|
||||
source "drivers/staging/otus/Kconfig"
|
||||
source "drivers/staging/brcm80211/Kconfig"
|
||||
|
||||
source "drivers/staging/rt2860/Kconfig"
|
||||
|
||||
@@ -67,24 +67,28 @@ source "drivers/staging/rt2870/Kconfig"
|
||||
|
||||
source "drivers/staging/comedi/Kconfig"
|
||||
|
||||
source "drivers/staging/olpc_dcon/Kconfig"
|
||||
|
||||
source "drivers/staging/asus_oled/Kconfig"
|
||||
|
||||
source "drivers/staging/panel/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8187se/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8192su/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8192u/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8192e/Kconfig"
|
||||
|
||||
source "drivers/staging/rtl8712/Kconfig"
|
||||
|
||||
source "drivers/staging/frontier/Kconfig"
|
||||
|
||||
source "drivers/staging/dream/Kconfig"
|
||||
|
||||
source "drivers/staging/pohmelfs/Kconfig"
|
||||
|
||||
source "drivers/staging/autofs/Kconfig"
|
||||
|
||||
source "drivers/staging/phison/Kconfig"
|
||||
|
||||
source "drivers/staging/line6/Kconfig"
|
||||
@@ -143,6 +147,8 @@ source "drivers/staging/msm/Kconfig"
|
||||
|
||||
source "drivers/staging/lirc/Kconfig"
|
||||
|
||||
source "drivers/staging/smbfs/Kconfig"
|
||||
|
||||
source "drivers/staging/easycap/Kconfig"
|
||||
|
||||
source "drivers/staging/solo6x10/Kconfig"
|
||||
@@ -151,5 +157,21 @@ source "drivers/staging/tidspbridge/Kconfig"
|
||||
|
||||
source "drivers/staging/quickstart/Kconfig"
|
||||
|
||||
source "drivers/staging/westbridge/Kconfig"
|
||||
|
||||
source "drivers/staging/sbe-2t3e3/Kconfig"
|
||||
|
||||
source "drivers/staging/ath6kl/Kconfig"
|
||||
|
||||
source "drivers/staging/keucr/Kconfig"
|
||||
|
||||
source "drivers/staging/bcm/Kconfig"
|
||||
|
||||
source "drivers/staging/ft1000/Kconfig"
|
||||
|
||||
source "drivers/staging/intel_sst/Kconfig"
|
||||
|
||||
source "drivers/staging/speakup/Kconfig"
|
||||
|
||||
endif # !STAGING_EXCLUDE_BUILD
|
||||
endif # STAGING
|
||||
|
||||
@@ -13,23 +13,26 @@ obj-$(CONFIG_USB_IP_COMMON) += usbip/
|
||||
obj-$(CONFIG_W35UND) += winbond/
|
||||
obj-$(CONFIG_PRISM2_USB) += wlan-ng/
|
||||
obj-$(CONFIG_ECHO) += echo/
|
||||
obj-$(CONFIG_OTUS) += otus/
|
||||
obj-$(CONFIG_BRCM80211) += brcm80211/
|
||||
obj-$(CONFIG_RT2860) += rt2860/
|
||||
obj-$(CONFIG_RT2870) += rt2870/
|
||||
obj-$(CONFIG_COMEDI) += comedi/
|
||||
obj-$(CONFIG_FB_OLPC_DCON) += olpc_dcon/
|
||||
obj-$(CONFIG_ASUS_OLED) += asus_oled/
|
||||
obj-$(CONFIG_PANEL) += panel/
|
||||
obj-$(CONFIG_R8187SE) += rtl8187se/
|
||||
obj-$(CONFIG_RTL8192SU) += rtl8192su/
|
||||
obj-$(CONFIG_RTL8192U) += rtl8192u/
|
||||
obj-$(CONFIG_RTL8192E) += rtl8192e/
|
||||
obj-$(CONFIG_R8712U) += rtl8712/
|
||||
obj-$(CONFIG_SPECTRA) += spectra/
|
||||
obj-$(CONFIG_TRANZPORT) += frontier/
|
||||
obj-$(CONFIG_DREAM) += dream/
|
||||
obj-$(CONFIG_POHMELFS) += pohmelfs/
|
||||
obj-$(CONFIG_AUTOFS_FS) += autofs/
|
||||
obj-$(CONFIG_IDE_PHISON) += phison/
|
||||
obj-$(CONFIG_LINE6_USB) += line6/
|
||||
obj-$(CONFIG_USB_SERIAL_QUATECH2) += serqt_usb2/
|
||||
obj-$(CONFIG_SMB_FS) += smbfs/
|
||||
obj-$(CONFIG_USB_SERIAL_QUATECH_USB2) += quatech_usb2/
|
||||
obj-$(CONFIG_OCTEON_ETHERNET) += octeon/
|
||||
obj-$(CONFIG_VT6655) += vt6655/
|
||||
@@ -56,3 +59,11 @@ obj-$(CONFIG_EASYCAP) += easycap/
|
||||
obj-$(CONFIG_SOLO6X10) += solo6x10/
|
||||
obj-$(CONFIG_TIDSPBRIDGE) += tidspbridge/
|
||||
obj-$(CONFIG_ACPI_QUICKSTART) += quickstart/
|
||||
obj-$(CONFIG_WESTBRIDGE_ASTORIA) += westbridge/astoria/
|
||||
obj-$(CONFIG_SBE_2T3E3) += sbe-2t3e3/
|
||||
obj-$(CONFIG_ATH6K_LEGACY) += ath6kl/
|
||||
obj-$(CONFIG_USB_ENESTORAGE) += keucr/
|
||||
obj-$(CONFIG_BCM_WIMAX) += bcm/
|
||||
obj-$(CONFIG_FT1000) += ft1000/
|
||||
obj-$(CONFIG_SND_INTEL_SST) += intel_sst/
|
||||
obj-$(CONFIG_SPEAKUP) += speakup/
|
||||
|
||||
@@ -406,12 +406,14 @@ static int __devinit spi_adis16255_probe(struct spi_device *spi)
|
||||
|
||||
status = spi_adis16255_bringup(spiadis);
|
||||
if (status != 0)
|
||||
goto irq_err;
|
||||
goto sysfs_err;
|
||||
|
||||
dev_info(&spi->dev, "spi_adis16255 driver added!\n");
|
||||
|
||||
return status;
|
||||
|
||||
sysfs_err:
|
||||
sysfs_remove_group(&spiadis->spi->dev.kobj, &adis16255_attr_group);
|
||||
irq_err:
|
||||
free_irq(spiadis->irq, spiadis);
|
||||
gpio_err:
|
||||
|
||||
@@ -0,0 +1,163 @@
|
||||
config ATH6K_LEGACY
|
||||
tristate "Atheros AR6003 support (non mac80211)"
|
||||
depends on MMC && WLAN
|
||||
select WIRELESS_EXT
|
||||
select WEXT_PRIV
|
||||
help
|
||||
This module adds support for wireless adapters based on Atheros AR6003 chipset running over SDIO. If you choose to build it as a module, it will be called ath6kl. Pls note that AR6002 and AR6001 are not supported by this driver.
|
||||
|
||||
choice
|
||||
prompt "AR6003 Board Data Configuration"
|
||||
depends on ATH6K_LEGACY
|
||||
default AR600x_SD31_XXX
|
||||
help
|
||||
Select the appropriate board data template from the list below that matches your AR6003 based reference design.
|
||||
|
||||
config AR600x_SD31_XXX
|
||||
bool "SD31-xxx"
|
||||
help
|
||||
Board Data file for a standard SD31 reference design (File: bdata.SD31.bin)
|
||||
|
||||
config AR600x_WB31_XXX
|
||||
bool "WB31-xxx"
|
||||
help
|
||||
Board Data file for a standard WB31 (BT/WiFi) reference design (File: bdata.WB31.bin)
|
||||
|
||||
config AR600x_SD32_XXX
|
||||
bool "SD32-xxx"
|
||||
help
|
||||
Board Data file for a standard SD32 (5GHz) reference design (File: bdata.SD32.bin)
|
||||
|
||||
config AR600x_CUSTOM_XXX
|
||||
bool "CUSTOM-xxx"
|
||||
help
|
||||
Board Data file for a custom reference design (File: should be named as bdata.CUSTOM.bin)
|
||||
endchoice
|
||||
|
||||
config ATH6KL_ENABLE_COEXISTENCE
|
||||
bool "BT Coexistence support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables WLAN/BT coexistence support. Select the apprpriate configuration from below.
|
||||
|
||||
choice
|
||||
prompt "Front-End Antenna Configuration"
|
||||
depends on ATH6KL_ENABLE_COEXISTENCE
|
||||
default AR600x_DUAL_ANTENNA
|
||||
help
|
||||
Indicates the number of antennas being used by BT and WLAN. Select the appropriate configuration from the list below that matches your AR6003 based reference design.
|
||||
|
||||
config AR600x_DUAL_ANTENNA
|
||||
bool "Dual Antenna"
|
||||
help
|
||||
Dual Antenna Design
|
||||
|
||||
config AR600x_SINGLE_ANTENNA
|
||||
bool "Single Antenna"
|
||||
help
|
||||
Single Antenna Design
|
||||
endchoice
|
||||
|
||||
choice
|
||||
prompt "Collocated Bluetooth Type"
|
||||
depends on ATH6KL_ENABLE_COEXISTENCE
|
||||
default AR600x_BT_AR3001
|
||||
help
|
||||
Select the appropriate configuration from the list below that matches your AR6003 based reference design.
|
||||
|
||||
config AR600x_BT_QCOM
|
||||
bool "Qualcomm BTS4020X"
|
||||
help
|
||||
Qualcomm BT (3 Wire PTA)
|
||||
|
||||
config AR600x_BT_CSR
|
||||
bool "CSR BC06"
|
||||
help
|
||||
CSR BT (3 Wire PTA)
|
||||
|
||||
config AR600x_BT_AR3001
|
||||
bool "Atheros AR3001"
|
||||
help
|
||||
Atheros BT (3 Wire PTA)
|
||||
endchoice
|
||||
|
||||
config ATH6KL_HCI_BRIDGE
|
||||
bool "HCI over SDIO support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables BT over SDIO. Applicable only for combo designs (eg: WB31)
|
||||
|
||||
config ATH6KL_CONFIG_GPIO_BT_RESET
|
||||
bool "Configure BT Reset GPIO"
|
||||
depends on ATH6KL_HCI_BRIDGE
|
||||
help
|
||||
Configure a WLAN GPIO for use with BT.
|
||||
|
||||
config AR600x_BT_RESET_PIN
|
||||
int "GPIO"
|
||||
depends on ATH6KL_CONFIG_GPIO_BT_RESET
|
||||
default 22
|
||||
help
|
||||
WLAN GPIO to be used for resetting BT
|
||||
|
||||
config ATH6KL_CFG80211
|
||||
bool "CFG80211 support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables support for CFG80211 APIs. The default option is to use WEXT. Even with this option enabled, WEXT is not explicitly disabled and the onus of not exercising WEXT lies on the application(s) running in the user space.
|
||||
|
||||
config ATH6KL_HTC_RAW_INTERFACE
|
||||
bool "RAW HTC support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables raw HTC interface. Allows application to directly talk to the HTC interface via the ioctl interface
|
||||
|
||||
config ATH6KL_VIRTUAL_SCATTER_GATHER
|
||||
bool "Virtual Scatter-Gather support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables virtual scatter gather support for the hardware that does not support it natively.
|
||||
|
||||
config ATH6KL_SKIP_ABI_VERSION_CHECK
|
||||
bool "Skip ABI version check support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Forces the driver to disable ABI version check. Caution: Incompatilbity between the host driver and target firmware may lead to unknown side effects.
|
||||
|
||||
config ATH6KL_BT_UART_FC_POLARITY
|
||||
int "UART Flow Control Polarity"
|
||||
depends on ATH6KL_LEGACY
|
||||
default 0
|
||||
help
|
||||
Configures the polarity of UART Flow Control. A value of 0 implies active low and is the default setting. Set it to 1 for active high.
|
||||
|
||||
config ATH6KL_DEBUG
|
||||
bool "Debug support"
|
||||
depends on ATH6K_LEGACY
|
||||
help
|
||||
Enables debug support
|
||||
|
||||
config ATH6KL_ENABLE_HOST_DEBUG
|
||||
bool "Host Debug support"
|
||||
depends on ATH6KL_DEBUG
|
||||
help
|
||||
Enables debug support in the driver
|
||||
|
||||
config ATH6KL_ENABLE_TARGET_DEBUG_PRINTS
|
||||
bool "Target Debug support - Enable UART prints"
|
||||
depends on ATH6KL_DEBUG
|
||||
help
|
||||
Enables uart prints
|
||||
|
||||
config AR600x_DEBUG_UART_TX_PIN
|
||||
int "GPIO"
|
||||
depends on ATH6KL_ENABLE_TARGET_DEBUG_PRINTS
|
||||
default 8
|
||||
help
|
||||
WLAN GPIO to be used for Debug UART (Tx)
|
||||
|
||||
config ATH6KL_DISABLE_TARGET_DBGLOGS
|
||||
bool "Target Debug support - Disable Debug logs"
|
||||
depends on ATH6KL_DEBUG
|
||||
help
|
||||
Enables debug logs
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user