* Unresolved symbols while inserting a module in linux
From: mahendra varman @ 2008-03-05 14:44 UTC (permalink / raw)
To: linuxppc-embedded, linux-kernel
Hi all
For a customised hdlc card we have written hdlc driver.
we need to compile it as a module in linux 2.4.25 version
Thru Config.in we have defined the customised driver as tristate and
selected 'M' in menuconfig for that driver
The other dependencies generic hdlc driver, cisco , framedelay , ppp
etc are compiled as configured within the kernel itself
By giving make modules we have produced driver.o file
When I insert the driver.o using insmod iam getting the following
unresolved symbols
Even though the dependencies have been configured with the kernel
itself iam getting these unresolved symbols
If we use modprobe driver.o (or) modprobe driver it is reporting
driver:applet not found..
Help me to produce a module with its dependencies also to solve the
unresolved symbols error
Thanks
---------------------------------------------------- unresolved
symbols after insmod
------------------------------------------------------
Using driver.o
insmod: unresolved symbol pci_write_config_byte
insmod: unresolved symbol __netdev_watchdog_up
insmod: unresolved symbol schedule_timeout
insmod: unresolved symbol __kfree_skb
insmod: unresolved symbol alloc_skb
insmod: unresolved symbol pci_register_driver
insmod: unresolved symbol register_hdlc_device
insmod: unresolved symbol unregister_hdlc_device
insmod: unresolved symbol __release_region
insmod: unresolved symbol kmalloc
insmod: unresolved symbol pci_free_consistent
insmod: unresolved symbol pci_free_consistent
insmod: unresolved symbol __save_flags_ptr
insmod: unresolved symbol ioremap
insmod: unresolved symbol cpu_raise_softirq
insmod: unresolved symbol free_irq
insmod: unresolved symbol __out_of_line_bug
insmod: unresolved symbol iounmap
insmod: unresolved symbol pci_alloc_consistent
insmod: unresolved symbol iomem_resource
insmod: unresolved symbol kfree
insmod: unresolved symbol strlen
insmod: unresolved symbol request_irq
insmod: unresolved symbol netif_rx
insmod: unresolved symbol pci_unregister_driver
insmod: unresolved symbol skb_over_panic
insmod: unresolved symbol pci_set_master
insmod: unresolved symbol hdlc_ioctl
insmod: unresolved symbol jiffies
insmod: unresolved symbol __copy_tofrom_user
insmod: unresolved symbol __restore_flags
insmod: unresolved symbol softnet_data
insmod: unresolved symbol __request_region
insmod: unresolved symbol printk
insmod: unresolved symbol __cli
^ permalink raw reply
* Re: [PATCH 3/4] Emerson KSI8560 device tree
From: Alexandr Smirnov @ 2008-03-05 14:45 UTC (permalink / raw)
To: David Gibson; +Cc: linuxppc-dev
In-Reply-To: <20080304232940.GB8399@localhost.localdomain>
Hi
David, could you please explain what do you mean by "old bindind"? I
looked through ppc_dev listing,
documentation, and how it's done for other boards, but didn't find any
difference with my code. Maybe
you're talking about future changes in ethernet driver registration?
Thanks,
Alexandr.
David Gibson wrote:
>> + device_type = "network";
>> + model = "TSEC";
>> + compatible = "gianfar";
>>
>
> This still looks like the old binding.
>
^ permalink raw reply
* Re: [BUG] 2.6.25-rc3-mm1 kernel panic while bootup on powerpc ()
From: Mel Gorman @ 2008-03-05 14:31 UTC (permalink / raw)
To: Christoph Lameter
Cc: linuxppc-dev, Kamalesh Babulal, linux-mm, Pekka J Enberg,
Andrew Morton
In-Reply-To: <Pine.LNX.4.64.0803041205370.18277@schroedinger.engr.sgi.com>
On (04/03/08 12:07), Christoph Lameter didst pronounce:
> I think this is the correct fix.
>
> The NUMA fallback logic should be passing local_flags to kmem_get_pages()
> and not simply the flags.
>
> Maybe a stable candidate since we are now simply
> passing on flags to the page allocator on the fallback path.
>
> Signed-off-by: Christoph Lameter <clameter@sgi.com>
Acked-by: Mel Gorman <mel@csn.ul.ie>
Thanks Christoph.
>
> ---
> mm/slab.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> Index: linux-2.6.25-rc3-mm1/mm/slab.c
> ===================================================================
> --- linux-2.6.25-rc3-mm1.orig/mm/slab.c 2008-03-04 12:01:07.430911920 -0800
> +++ linux-2.6.25-rc3-mm1/mm/slab.c 2008-03-04 12:04:54.449857145 -0800
> @@ -3277,7 +3277,7 @@ retry:
> if (local_flags & __GFP_WAIT)
> local_irq_enable();
> kmem_flagcheck(cache, flags);
> - obj = kmem_getpages(cache, flags, -1);
> + obj = kmem_getpages(cache, local_flags, -1);
> if (local_flags & __GFP_WAIT)
> local_irq_disable();
> if (obj) {
>
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
^ permalink raw reply
* Re: [BUG] 2.6.25-rc3-mm1 kernel panic while bootup on powerpc ()
From: Mel Gorman @ 2008-03-05 14:02 UTC (permalink / raw)
To: Andrew Morton
Cc: linuxppc-dev, kamalesh, linux-mm, penberg, stable,
Christoph Lameter
In-Reply-To: <20080304123459.364f879b.akpm@linux-foundation.org>
On (04/03/08 12:34), Andrew Morton didst pronounce:
> On Tue, 4 Mar 2008 12:07:39 -0800 (PST)
> Christoph Lameter <clameter@sgi.com> wrote:
>
> > I think this is the correct fix.
> >
> > The NUMA fallback logic should be passing local_flags to kmem_get_pages()
> > and not simply the flags.
> >
> > Maybe a stable candidate since we are now simply
> > passing on flags to the page allocator on the fallback path.
>
> Do we know why this is only reported in 2.6.25-rc3-mm1?
>
> Why does this need fixing in 2.6.24.x?
>
I don't believe it needs to be fixed in 2.6.24.3. The call-sites in
lib/radix-tree.c there look like
ret = kmem_cache_alloc(radix_tree_node_cachep,
set_migrateflags(gfp_mask, __GFP_RECLAIMABLE));
node = kmem_cache_alloc(radix_tree_node_cachep,
set_migrateflags(gfp_mask, __GFP_RECLAIMABLE));
and set_migrateflags() looks like
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE)
static inline gfp_t set_migrateflags(gfp_t gfp, gfp_t migrate_flags)
{
BUG_ON((gfp & GFP_MOVABLE_MASK) == GFP_MOVABLE_MASK);
return (gfp & ~(GFP_MOVABLE_MASK)) | migrate_flags;
}
so the flags were already getting cleared and the WARN_ON could not
trigger in this path. In 2.6.25-rc3-mm1, the patch
remove-set_migrateflags.patch gets rid of set_migateflags()
which led to this situation.
The surprise is that it didn't get caught in an earlier -mm but it could
be because it only affected slab.
--
Mel Gorman
Part-time Phd Student Linux Technology Center
University of Limerick IBM Dublin Software Lab
^ permalink raw reply
* HugeTLB on MPC 85xx ?
From: Fillod Stephane @ 2008-03-05 13:04 UTC (permalink / raw)
To: linuxppc-embedded
Hi,
Most of you know already about HugeTLB
(Documentation/vm/hugetlbpage.txt).
Is there any plan of HugeTLB support for the MPC 85xx platform?
This is IMO an important feature missing in Linux for those great SoC.
Would any 4K assumption in the kernel be a showstopper for HugeTLB?
On a similar SoC, is there any status about "Huge-page support for
ppc440"?
http://thread.gmane.org/gmane.linux.ports.ppc.embedded/14814
Thanks
--=20
Stephane
^ permalink raw reply
* RE: I2S driver
From: Pedro Luis D. L. @ 2008-03-05 12:36 UTC (permalink / raw)
To: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 504 bytes --]
Angelo wrote:
>
> Pedro wrote:
>>Which library do you mean? I don't understand, sorry.
>
> In your previous mail (with code), each lines with an "#include " don't show the name of header file.
>
> thanks
>
Ups! Sorry, I send the code as an attached file, then.
>
>
> ________________________________
> L'email della prossima generazione? Puoi averla con la Nuova Yahoo! Mail
_________________________________________________________________
MSN Video.
http://video.msn.com/?mkt=es-es
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: mpc52xx_spi.c --]
[-- Type: text/x-csrc, Size: 18977 bytes --]
/***************************************************************************
* Copyright (C) 2007 by Pedro L. Domínguez *
* pedro.dominguez@aed-engineering.com *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* 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., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
* *
* History *
* Original Version by Bernhard Kuhn <bkuhn@freescale.com> *
* for 2.6.16 kernel *
***************************************************************************/
#define SPI_DBG
#ifdef SPI_DBG
#define DBG(x...) printk("(debug) " x)
#else
#define DBG(x...)
#endif
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/proc_fs.h>
#include <linux/fcntl.h>
#include <linux/spinlock.h>
#include <linux/platform_device.h>
#include <asm/system.h>
#include <asm/uaccess.h>
#include <asm/io.h>
#include <linux/string.h>
#include <linux/autoconf.h>
#include <linux/timer.h>
#include <linux/init.h>
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/smp_lock.h>
#include <linux/miscdevice.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/ioport.h>
#include <linux/poll.h>
#include <asm/io.h>
#include <asm/uaccess.h>
#include <asm/system.h>
#include <asm/delay.h>
#include <asm/mpc52xx.h>
#include <asm/mpc52xx_psc.h>
#include <asm/of_platform.h>
#include <sysdev/bestcomm/bestcomm.h>
#include <sysdev/bestcomm/gen_bd.h>
#include <sysdev/bestcomm/bestcomm_priv.h>
#include <sound/pcm.h>
#include <sound/asound.h>
// #include <sound/typedefs.h>
#define BPF 2 // bytes per frame
#define SLOTS 2
#define SAMPLESIZE (BPF*SLOTS)
#define FPP 1024 // bytes per copy period
#define PERIODS 8 // periods
#define PERIODSIZE (SAMPLESIZE/2*FPP)
#define BUFSIZE (SAMPLESIZE*FPP*PERIODS)
#define FPP_HW 128
//512 // 10 ms
#define PERIODS_HW 8 // periods
#define PERIODSIZE_HW (SAMPLESIZE*FPP_HW)
#define FIFOSIZE 512
#define RX_GRAN 4
#define TX_GRAN 4
#define RX_ALARM 0x120
#define TX_ALARM FIFOSIZE - (TX_GRAN * 4) - 208
#define DELAY_TIME_SLOT 0x20000000
#define GEN_CLK_INT 0x00800000
#define MULTIWD_ENABLE 0x00400000
#define CLK_POL_RISING 0x00200000
#define PROCFS_NAME "MPC52xx_SPI"
#define MCLKEN_DIV 0x8001
#define DRV_NAME "mpc52xx-psc-spi"
#define PROCFS_MAX_SIZE 1024
#define BUF_FRAMES 300
/* MBAR position */
#define MPC52xx_MBAR 0xf0000000 /* Phys address */
#define MPC52xx_MBAR_VIRT 0xf0000000 /* Virt address */
#define MPC52xx_MBAR_SIZE 0x00010000
#define MPC52xx_PA(x) ((phys_addr_t)(MPC52xx_MBAR + (x)))
#define MPC52xx_VA(x) ((void __iomem *)(MPC52xx_MBAR_VIRT + (x)))
/* Registers zone offset/size */
#define MPC52xx_MMAP_CTL_OFFSET 0x0000
#define MPC52xx_MMAP_CTL_SIZE 0x068
#define MPC52xx_SDRAM_OFFSET 0x0100
#define MPC52xx_SDRAM_SIZE 0x010
#define MPC52xx_CDM_OFFSET 0x0200
#define MPC52xx_CDM_SIZE 0x038
#define MPC52xx_INTR_OFFSET 0x0500
#define MPC52xx_INTR_SIZE 0x04c
#define MPC52xx_GPTx_OFFSET(x) (0x0600 + ((x)<<4))
#define MPC52xx_GPT_SIZE 0x010
#define MPC52xx_RTC_OFFSET 0x0800
#define MPC52xx_RTC_SIZE 0x024
#define MPC52xx_GPIO_OFFSET 0x0b00
#define MPC52xx_GPIO_SIZE 0x040
#define MPC52xx_GPIO_WKUP_OFFSET 0x0c00
#define MPC52xx_GPIO_WKUP_SIZE 0x028
#define MPC52xx_PCI_OFFSET 0x0d00
#define MPC52xx_PCI_SIZE 0x100
#define MPC52xx_SDMA_OFFSET 0x1200
#define MPC52xx_SDMA_SIZE 0x100
#define MPC52xx_XLB_OFFSET 0x1f00
#define MPC52xx_XLB_SIZE 0x100
#define MPC52xx_PSCx_OFFSET(x) (((x)!=6)?(0x1e00+((x)<<9)):0x2c00)
#define MPC52xx_PSC_SIZE 0x0a0
#define PORT_CONFIG_PSC1 0x00000006
#define PSC1_CLK_EN 0x00000020
typedef unsigned long uint32;
typedef unsigned long UInteger32;
typedef unsigned short UInteger16;
struct proc_dir_entry *Our_Proc_File;
struct SPI_buffer {
char *va;
dma_addr_t pa;
};
static struct SPI_buffer SPI_tx_silence;
static struct SPI_buffer SPI_rx_bufs;
typedef struct _node {
struct SPI_buffer buffer;
struct _node *next;
} Node;
static Node *LastNode;
static Node *FirstNode;
Node *FirstNodeFree;
Node *LastNodeFree;
struct bcom_task *tx_bcom;
struct bcom_task *rx_bcom;
int r_irq;
int t_irq;
struct mpc52xx_psc *psc;
struct mpc52xx_spi_priv {
struct device *dev;
resource_size_t mem_start;
resource_size_t mem_len;
int irq;
struct mpc52xx_psc __iomem *psc;
struct bcom_task *tsk_tx;
spinlock_t dma_lock;
int period_byte_size;
u32 period_start, period_end, period_next_p;
};
static int initiator_tx;
static int initiator_rx;
static struct snd_pcm_substream *snd_SPI_substream;
static int snd_SPImgt_running = 0;
static int snd_SPImgt_started = 2;
static int SPI_pos = 0;
static int SPI_play = 0;
static int nodecounter=0;
static unsigned int dmablockcounter=0;
static struct hrtimer start_timer;
static struct timeval tclockup = {.tv_sec = 1,.tv_usec = 0};
static struct timeval tclockdown= {.tv_sec = 0,.tv_usec = 615080};
static ktime_t kt_timedown, kt_timeup ;
void (*hook_per_elap)(int, int);
UInteger32 (*hook_frames_rcv)(void);
int SPI_buffers_init(void) {
int i;
Node *node;
FirstNodeFree = (Node *)kmalloc(sizeof(Node), GFP_KERNEL);
FirstNodeFree->buffer.va = kmalloc(PERIODSIZE_HW, GFP_DMA);
FirstNodeFree->buffer.pa = virt_to_phys((void *)FirstNodeFree->buffer.va);
node = FirstNodeFree;
for (i=1;i<BUF_FRAMES;i++)
{
node->next = (Node *)kmalloc(sizeof(Node), GFP_KERNEL);
node->next->buffer.va = kmalloc(PERIODSIZE_HW, GFP_DMA);
node->next->buffer.pa = virt_to_phys((void *)node->next->buffer.va);
node = node->next;
}
LastNodeFree = node;
LastNodeFree->next=NULL;
DBG("SPI_buffers_init()\n");
// prepare reception buffer
SPI_rx_bufs.va = kmalloc(BUFSIZE, GFP_DMA);
SPI_rx_bufs.pa = virt_to_phys((void *)SPI_rx_bufs.va);
// prepare silence buffer
SPI_tx_silence.va = kmalloc(BUFSIZE, GFP_DMA);
SPI_tx_silence.pa = virt_to_phys((void *)SPI_tx_silence.va);
memset(SPI_tx_silence.va,0,BUFSIZE);
return 0;
}
int snd_SPI_pcm_trigger(struct snd_pcm_substream *substream, int cmd) {
#ifdef SND_I2S_DEBUG
printk("snd_SPI_pcm_trigger\n");
#endif
switch (cmd) {
case SNDRV_PCM_TRIGGER_START:
case SNDRV_PCM_TRIGGER_RESUME:
#ifdef SND_I2S_DEBUG
printk("START\n");
#endif
snd_SPI_substream=substream;
snd_SPImgt_started=2;
snd_SPImgt_running=1;
break;
case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND:
#ifdef SND_I2S_DEBUG
printk("STOP\n");
#endif
snd_SPImgt_running=0;
break;
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
printk(" PAUSE_PUSH\n");
break;
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
printk(" PAUSE_RELEASE\n");
break;
default:
return -EINVAL;
}
return 0;
};
EXPORT_SYMBOL(snd_SPI_pcm_trigger);
static irqreturn_t SPI_rx_irq(int irq, void *dev_id) {
// no need for TaskIntClear(rxtask), OS masks and acks IRQ
struct mpc52xx_spi_priv *priv = dev_id;
spin_lock(&priv->dma_lock);
while (bcom_buffer_done(rx_bcom)) {
struct bcom_gen_bd *bd;
bcom_retrieve_buffer(rx_bcom, NULL, NULL);
/* Submit a new one */
bd = (struct bcom_gen_bd *) bcom_prepare_next_buffer(rx_bcom);
bd->status = 512;
bd->buf_pa = SPI_rx_bufs.pa;
bcom_submit_next_buffer(rx_bcom, NULL);
bcom_enable(rx_bcom);
}
spin_unlock(&priv->dma_lock);
return IRQ_HANDLED;
};
static irqreturn_t SPI_tx_irq(int irq, void *dev_id) {
// no need for TaskIntClear(txtask), OS masks and acks IRQ
struct mpc52xx_spi_priv *priv = dev_id;
struct bcom_gen_bd *bd;
Node *node;
if(psc->mpc52xx_psc_status&0x1800) {
printk("PSC Reset\n");
psc->command = MPC52xx_PSC_RST_RX;
psc->command = MPC52xx_PSC_RST_TX;
psc->command = MPC52xx_PSC_SEL_MODE_REG_1;
psc->command = MPC52xx_PSC_RST_ERR_STAT;
psc->command = MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE;
};
spin_lock(&priv->dma_lock);
for(;;)
{
if(!bcom_buffer_done(tx_bcom)) {
break;
}
bcom_retrieve_buffer(tx_bcom, NULL, NULL);
/* Submit a new one */
bd = (struct bcom_gen_bd *) bcom_prepare_next_buffer(tx_bcom);
if (snd_SPImgt_running)
{
if((FirstNode == NULL)) {
bd->status = PERIODSIZE_HW;
bd->buf_pa = SPI_tx_silence.pa;
bcom_submit_next_buffer(tx_bcom, NULL);
if(hook_per_elap != NULL) {
hook_per_elap(SPI_pos, SPI_play);
}
}
else
{
node=FirstNode;
FirstNode=node->next;
if(FirstNode==NULL)LastNode=NULL;
bd->status = PERIODSIZE_HW;
bd->buf_pa = (void *)(((u32)node->buffer.pa));
bcom_submit_next_buffer(tx_bcom, NULL);
node->next=NULL;
if(LastNodeFree!=NULL)
LastNodeFree->next=node;
LastNodeFree=node;
if(FirstNodeFree==NULL)FirstNodeFree=LastNodeFree;
nodecounter--;
}
dmablockcounter++;
} else {
bd->status = PERIODSIZE_HW;
bd->buf_pa = SPI_tx_silence.pa;
bcom_submit_next_buffer(tx_bcom, NULL);
}
bcom_enable(tx_bcom);
}
spin_unlock(&priv->dma_lock);
return IRQ_HANDLED;
};
typedef struct {
unsigned short l;
unsigned short r;
} sample_t;
static int frame=0;
static Node *nodebuild;
static int counter =0;
static int *ptr=NULL;
int snd_SPI_pcm_copy(struct snd_pcm_substream *substream,
int voice,
snd_pcm_uframes_t pos,
void *src,
snd_pcm_uframes_t count) {
snd_pcm_uframes_t i;
// sample_t* data = (sample_t*) src;
UInteger32 *data = (UInteger32 *) src;
int cnt=count;
// unsigned short aux;
// printk("1.cnt %d, frame %d\n",cnt, frame);
while (cnt > 0)
{
counter++;
if(counter == 1000){
// printk("Frames: %d\n",nodecounter);
counter=0;
}
if(ptr==NULL)
{
if(FirstNodeFree != NULL)
{
nodebuild = FirstNodeFree;
FirstNodeFree = FirstNodeFree->next;
if(FirstNodeFree==NULL)LastNodeFree=NULL;
}
else
{
nodebuild = (Node *)kmalloc(sizeof(Node), GFP_KERNEL);
nodebuild->buffer.va = kmalloc(PERIODSIZE_HW, GFP_DMA);
nodebuild->buffer.pa = virt_to_phys((void *)nodebuild->buffer.va);
nodebuild->next=NULL;
// printk("Getting more Frames buffers, num of nodes %d\n",nodecounter);
}
ptr=(int *)nodebuild->buffer.va;
frame=0;
}
// printk("2.cnt %d, frame %d\n",cnt, frame);
if(cnt >= (FPP_HW -frame))
{
for(i=0;i<(FPP_HW-frame);i++) {
// printk(" 0x%04x ",data->l);
// printk(" 0x%04x ",data->r);
//Big Endian
// aux=((data->l>>8)&0xff)+((data->l << 8)&0xff00);
// *(ptr+(i*SLOTS)+(frame*SLOTS)) = (aux<<16);
// aux=((data->r>>8)&0xff)+((data->r << 8)&0xff00);
// *(ptr+(i*SLOTS)+(frame*SLOTS)+1) = (aux<<16);
//Little Endian
// *(ptr+(i*SLOTS)+(frame*SLOTS)) = (data->l<<16);
// *(ptr+(i*SLOTS)+(frame*SLOTS)+1) = (data->r<<16);
//Raw Data
// printk("src: 0x%08x\n", *(UInteger32 *)data);
*(ptr+i) = *(UInteger32 *)data;
data++;
};
cnt=cnt-(FPP_HW-frame);
frame=0;
ptr=NULL;
nodebuild->next=NULL;
if(LastNode != NULL) LastNode->next = nodebuild;
if(FirstNode == NULL) FirstNode = nodebuild;
LastNode = nodebuild;
nodecounter++;
// printk("3.cnt %d, frame %d\n",cnt, frame);
}
else
{
for(i=0;i<cnt;i++) {
// printk("%04x ",data->l);
// printk("%04x ",data->r);
//Big Endian
// aux=((data->l>>8)&0xff)+((data->l << 8)&0xff00);
// *(ptr+(i*SLOTS)+(frame*SLOTS)) = (aux<<16);
// aux=((data->r>>8)&0xff)+((data->r << 8)&0xff00);
// *(ptr+(i*SLOTS)+(frame*SLOTS)+1) = (aux<<16);
//Little Endian
// *(ptr+(i*SLOTS)+(frame*SLOTS)) = (data->l<<16);
// *(ptr+(i*SLOTS)+(frame*SLOTS)+1) = (data->r<<16);
//Raw Data
*(ptr+i) = *(UInteger32 *)data;
data++;
// printk("f\n");
}
frame=cnt+frame;
cnt=0;
// printk("4.cnt %d, frame %d\n",cnt, frame);
}
}
return 0;
};
EXPORT_SYMBOL(snd_SPI_pcm_copy);
static enum hrtimer_restart timer_funct (void *data) {
static unsigned int counter = 0;
static unsigned int start = 0;
UInteger32 framesnum;
static int diff=0;
counter = dmablockcounter*128;
dmablockcounter=0;
framesnum=hook_frames_rcv();
// printk("Frequenz=%d\n",framesnum);
if(snd_SPImgt_running){
diff=diff+counter-framesnum;
start=1;
}
else
{
start=0;
}
hrtimer_forward(&start_timer, hrtimer_cb_get_time(&start_timer),kt_timeup);
return HRTIMER_RESTART;
}
static void SPI_setup(void)
{
// printk("SPI_setup()\n");
int psc_num = 1, rv;
phys_addr_t rx_fifo;
phys_addr_t tx_fifo;
struct bcom_bd *bd;
struct mpc52xx_spi_priv *priv;
uint32 SICR;
struct mpc52xx_cdm __iomem *cdm;
priv = (struct mpc52xx_spi_priv *)kmalloc(sizeof(struct mpc52xx_spi_priv), GFP_KERNEL);
struct mpc52xx_gpio __iomem *gpio =
(struct mpc52xx_gpio __iomem *) MPC52xx_PA(MPC52xx_GPIO_OFFSET);
switch(psc_num) {
case 1:
initiator_tx = BCOM_INITIATOR_PSC1_TX;
initiator_rx = BCOM_INITIATOR_PSC1_RX;
break;
case 2:
initiator_tx = BCOM_INITIATOR_PSC2_TX;
initiator_rx = BCOM_INITIATOR_PSC2_RX;
break;
default:
panic("snd-SPImgt.o: invalid value for psc_num (%i)\n",psc_num);
break;
};
// printk("Before request mem region\n");
if (!request_mem_region(0xF0002000, 0x00000100, DRV_NAME)) {
printk(KERN_ERR DRV_NAME ": request_mem_region failed\n");
rv = -EBUSY;
}
// printk("Before ioremaps\n");
psc = ioremap(MPC52xx_PA(MPC52xx_PSCx_OFFSET(1)), MPC52xx_PSC_SIZE);
gpio = ioremap(MPC52xx_PA(MPC52xx_GPIO_OFFSET), MPC52xx_GPIO_SIZE);
cdm = ioremap(MPC52xx_PA(MPC52xx_CDM_OFFSET), MPC52xx_CDM_SIZE);
psc->tfdata = 0xF0010000; // Power-down [Table 1, MAX5712 Datasheet]
gpio->port_config |= PORT_CONFIG_PSC1;
cdm->clk_enables |= PSC1_CLK_EN;
cdm->mclken_div_psc1 = 0x8010;
rx_fifo = MPC52xx_PA(MPC52xx_PSCx_OFFSET(psc_num))+0x60;
tx_fifo = MPC52xx_PA(MPC52xx_PSCx_OFFSET(psc_num))+0x80;
spin_lock_init(&priv->dma_lock);
// printk("Before Tasks init\n");
rx_bcom = bcom_gen_bd_rx_init(2, (phys_addr_t)rx_fifo, initiator_rx, BCOM_IPR_PSC1_RX, 512);
tx_bcom = bcom_gen_bd_tx_init(8, (phys_addr_t)tx_fifo, initiator_tx, BCOM_IPR_PSC1_TX);
r_irq = bcom_get_task_irq(rx_bcom);
t_irq = bcom_get_task_irq(tx_bcom);
printk("r_irq %d 0x%08x t_irq %d 0x%08x, r_tasknum %d, t_tasknum %d\n", r_irq, r_irq, t_irq, t_irq, rx_bcom->tasknum, tx_bcom->tasknum);
psc->command = (MPC52xx_PSC_TX_DISABLE | MPC52xx_PSC_RX_DISABLE);
psc->command = MPC52xx_PSC_RST_RX;
psc->command = MPC52xx_PSC_RST_TX;
psc->command = MPC52xx_PSC_RST_ERR_STAT;
psc->op1 = 0x03;
udelay(10);
psc->op0 = 0x02;
udelay(50);
SICR = 0x0F90E000;
psc->command = 0x0A;
psc->sicr = SICR;
psc->ctur = 0x03;
psc->ctlr = 0x34;
psc->ccr = 0x070F0000;
psc->rfalarm = RX_ALARM;
psc->tfalarm = TX_ALARM;
psc->rfcntl = RX_GRAN;
psc->tfcntl = TX_GRAN;
psc->isr_imr.isr = 0x00;
psc->isr_imr.imr = 0x00;
psc->mode = 0x00; /* set RX interrupt to RxRDY */
psc->command = (MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE);
psc->tfdata = 0xF0010000; // Power-down [Table 1, MAX5712 Datasheet]
udelay(100);
psc->tfdata = 0xF0000000; // Wake-up [Table 1, MAX5712 Datasheet]
udelay(100);
// printk("Before request_irq's\n");
if (request_irq(r_irq, &SPI_rx_irq, /*IRQF_DISABLED*/0, "SPI rx dma", priv)) {
printk(KERN_ERR "SPI: SDMA rx irq allocation failed\n");
return;
}
if (request_irq(t_irq, &SPI_tx_irq, /*IRQF_DISABLED*/0, "SPI tx dma", priv)) {
printk(KERN_ERR "SPI: SDMA tx irq allocation failed\n");
return;
}
bcom_gen_bd_tx_reset(tx_bcom);
bcom_gen_bd_rx_reset(rx_bcom);
// printk("Before submitting a buffer\n");
spin_lock(&priv->dma_lock);
while (!bcom_queue_full(tx_bcom)) {
struct bcom_gen_bd *bd;
/* Submit a new one */
bd = (struct bcom_gen_bd *) bcom_prepare_next_buffer(tx_bcom);
bd->status = PERIODSIZE_HW;
bd->buf_pa = SPI_tx_silence.pa;
bcom_submit_next_buffer(tx_bcom, NULL);;
}
spin_unlock(&priv->dma_lock);
bd = bcom_prepare_next_buffer(rx_bcom);
bd->status = 512;
bd->data[0] = SPI_rx_bufs.pa;
bcom_submit_next_buffer(rx_bcom, (void *)SPI_rx_bufs.pa);
psc->command = MPC52xx_PSC_RST_RX;
psc->command = MPC52xx_PSC_RST_TX;
psc->command = MPC52xx_PSC_TX_ENABLE | MPC52xx_PSC_RX_ENABLE;
bcom_enable(tx_bcom);
bcom_enable(rx_bcom);
kt_timeup = timeval_to_ktime(tclockup);
kt_timedown = timeval_to_ktime(tclockdown);
hrtimer_init(&start_timer, CLOCK_REALTIME, HRTIMER_MODE_REL);
start_timer.function = timer_funct;
// printk("Before exit in Setup_SPI()\n");
}
void register_period_elapsed(void (*funcptr)()) {
/* printk("Function registered\n");*/
hook_per_elap = funcptr;
};
void register_hook_frames_rcv(UInteger32 (*funcptr)()) {
/* printk("Function registered\n");*/
hook_frames_rcv = funcptr;
hrtimer_start(&start_timer, kt_timeup, HRTIMER_MODE_REL);
};
int snd_SPI_pcm_prepare(struct snd_pcm_substream * substream) {
#ifdef SND_I2S_DEBUG
snd_pcm_runtime_t *runtime = substream->runtime;
printk("snd_I2Smgt_pcm_prepare\n");
printk(" runtime->buffer_size=%i\n",(int)runtime->buffer_size);
printk(" runtime->period_size=%i\n",(int)runtime->period_size);
printk(" runtime->periods=%i\n",(int)runtime->periods);
#endif
SPI_play = SPI_pos = 0;
return 0;
};
EXPORT_SYMBOL(register_period_elapsed);
EXPORT_SYMBOL(register_hook_frames_rcv);
EXPORT_SYMBOL(snd_SPI_pcm_prepare);
int SPIspeaker_init(void) {
SPI_buffers_init();
SPI_setup();
return 0;
}
void SPIspeaker_exit(void) {
/* Freeing buffer SPIspeaker */
if (SPI_rx_bufs.va) {
kfree(SPI_rx_bufs.va);
}
if (SPI_tx_silence.va) {
kfree(SPI_tx_silence.va);
}
}
module_init(SPIspeaker_init);
module_exit(SPIspeaker_exit);
MODULE_DESCRIPTION("MPC52xx SPI");
MODULE_AUTHOR("Pedro Domínguez,,,, (pedro.dominguez@aed-engineering.com)");
MODULE_LICENSE("GPL");
^ permalink raw reply
* Re: [PATCH 8/11] cell: generalize io-workarounds code
From: Arnd Bergmann @ 2008-03-05 11:52 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173611.1791041378.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch splits cell io-workaround code into spider-pci dependent
> code and a generic part, and also adds interfaces to the generic
> io-workaround mechanism.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
> ---
>
> Please test on CellBlade because I don't have any access to CellBlade.
>
Ok, I'll ask around for volunteers to test it, he patch looks good so far.
^ permalink raw reply
* RE: Virtual device hdlc0 asks to que packet!
From: Joakim Tjernlund @ 2008-03-05 11:52 UTC (permalink / raw)
To: rmcguire; +Cc: linuxppc-embedded
In-Reply-To: <1204711476.20637.54.camel@gentoo-jocke.transmode.se>
On Wed, 2008-03-05 at 11:04 +0100, Joakim Tjernlund wrote:
> On Wed, 2008-03-05 at 00:43 -0800, Russell McGuire wrote:
> > Jocke,
> >
> > I wonder how one change this? I don't remember any of the API calls
> > referencing this, so maybe the default to 1000? Or perhaps that is protocol
> > specific. I will hunt through some of Freescale's Ethernet drivers and see
> > if I can't find anything.
>
> default is 1000 for ethernet.
> See tx_queue_len in net/ethernet/eth.c,
> ether_setup(struct net_device *dev)
>
> Maybe you can find out from there.
In
int mpc8360hdlc_register_netdev_ops(struct net_device *dev, dev_data_t *dev_data)
add
dev->tx_queue_len = 100;
Jocke
^ permalink raw reply
* Re: [PATCH 11/11] hvcbeat: fix buffer manipulation
From: Arnd Bergmann @ 2008-03-05 11:51 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.174154.660275727.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch fixes a potential bug at drivers/char/hvc_beat.c.
> =A0- hvc_put_term_char routine will decrement "rest" variable twice,
> =A0 =A0and forget to advance "buf" pointer by "nlen" bytes.
> This bug was not hit because the output handler in
> drivers/char/hvc_console.c splits given output into 16 bytes
> at maximum.
>=20
> Reported-by: Timur Tabi <timur@freescale.com>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
obviously correct
^ permalink raw reply
* Re: [PATCH 10/11] celleb: add support for PCI Express
From: Arnd Bergmann @ 2008-03-05 11:49 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173919.1683988103.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch adds support for PCI Express port on Celleb. I/O space
> of this PCI Express port is not mapped in memory space. So we use
> the io-workaround mechanism to make accesses indirect.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
This one looks good, but I wonder if we should make it possible to
also use it on QS20, which the current code doesn't allow.
It's a rather hypothetical question, because QS20 has been replaced
by QS21 as a product and it never supported PCIe cards with I/O space
mappings, but it would be the "right" thing to do.
Since you don't have the QS20 hardware to test that, and I currently
doubt anyone at IBM has the energy to do the work, it will probably
never get done. If you send another version of the patch, maybe you
can add comments to hint that this is actually possible, just hasn't
been implemented.
^ permalink raw reply
* Re: [PATCH 9/11] celleb: consolidate io-workarounds code
From: Arnd Bergmann @ 2008-03-05 11:43 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173755.-1264110031.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> Now, we can use generic io-workarounds mechanism and the workaround
> code for spider-pci. This patch changes Celleb PCI code to use
> spider-pci code.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Removing code is always good, and this one obviously only impacts
celleb, so I'm confident it doesn't hurt on QS20.
^ permalink raw reply
* Re: [PATCH 7/11] celleb: move miscellaneous files for Beat
From: Arnd Bergmann @ 2008-03-05 11:39 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173432.84368866.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch moves miscellaneous files for Beat into platforms/cell/.
> All files in this patch are used by celleb-beat only.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
if you address my comment to patch 2/11
^ permalink raw reply
* Re: [PATCH 6/11] celleb: move a file for SPU on Beat
From: Arnd Bergmann @ 2008-03-05 11:39 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173310.63047261.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch moves SPU support code on Beat into platforms/cell/.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
if you address my comment to patch 2/11
^ permalink raw reply
* Re: [PATCH 5/11] celleb: move files for Beat mmu and iommu
From: Arnd Bergmann @ 2008-03-05 11:38 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.173059.-1962665427.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch moves files for mmu and iommu on Beat into platforms/cell/.
> All files in this patch are used by celleb-beat only.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
if you address my comment to patch 2/11
^ permalink raw reply
* Re: [PATCH 4/11] celleb: move files for Beat hvcall interfaces
From: Arnd Bergmann @ 2008-03-05 11:38 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.172751.-494090812.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch moves files for Beat hvcall interfaces into platforms/cell/.
> All files in this patch are used by celleb-beat only.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
if you address my comment to patch 2/11
^ permalink raw reply
* Re: [PATCH 3/11] celleb: move the SCC related code for celleb
From: Arnd Bergmann @ 2008-03-05 11:37 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.172602.-345488266.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This patch moves the SCC (Super Companion Chip) related code for celleb
> into platforms/cell/.
> All files in this patch are used by celleb-beat and celleb-native commonly.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
if you address my comment to patch 2/11
^ permalink raw reply
* Re: [PATCH 2/11] celleb: move the base part for celleb support
From: Arnd Bergmann @ 2008-03-05 11:36 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.172345.-1625872818.kouish@swc.toshiba.co.jp>
T24gV2VkbmVzZGF5IDA1IE1hcmNoIDIwMDgsIElzaGl6YWtpIEtvdSB3cm90ZToKPiBUaGlzIHBh
dGNoIG1vdmVzIHRoZSBiYXNlIGNvZGUgZm9yIGNlbGxlYiBzdXBwb3J0IGludG8gcGxhdGZvcm1z
L2NlbGwvLgo+IEFsbCBmaWxlcyBpbiB0aGlzIHBhdGNoIGFyZSB1c2VkIGJ5IGNlbGxlYi1iZWF0
IGFuZCBjZWxsZWItbmF0aXZlIGNvbW1vbmx5LgoKTW92aW5nIGFyb3VuZCB0aGUgZmlsZXMgdGhp
cyB3YXkgaXMgZ29vZCwgYnV0Cgo+ICsrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9N
YWtlZmlsZaCgoKCgoDIwMDgtMDMtMDQgMTQ6MDA6MjguMDAwMDAwMDAwICArMDkwMCAKPiBAQCAt
MjYsMyArMjYsMjAgQEAKPiCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg
IKAgc3B1ZnMvCj4goAo+IKBvYmotJChDT05GSUdfUENJX01TSSmgoKCgoKCgoKCgoKCgoKCgoKAr
PSBheG9uX21zaS5vCj4gKwo+ICsKPiArIyBjZWxsZWIgc3R1ZmYKPiAraWZlcSAoJChDT05GSUdf
UFBDX0NFTExFQikseSkKPiArb2JqLXmgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg
Kz0gY2VsbGViX3NldHVwLm8gXAo+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg
oKCgoKAgoCBjZWxsZWJfcGNpLm8gY2VsbGViX3NjY19lcGNpLm8gXAo+ICugoKCgoKCgoKCgoKCg
oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgoCBjZWxsZWJfc2NjX3BjaWV4Lm8gXAo+ICugoKCg
oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgoCBjZWxsZWJfc2NjX3VoYy5vIFwK
PiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIKAgYmVhdC5vIGJlYXRf
aHRhYi5vIGJlYXRfaHZDYWxsLm8gXAo+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg
oKCgoKCgoKAgoCBiZWF0X2ludGVycnVwdC5vIGJlYXRfaW9tbXUubyBcCj4gK6CgoKCgoKCgoKCg
oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCCgIGlvLXdvcmthcm91bmRzLm8gc3BpZGVyLXBj
aS5vCj4gKwo+ICtvYmotJChDT05GSUdfU01QKaCgoKCgoKCgoKCgoKCgoKCgoKCgoKArPSBiZWF0
X3NtcC5vCj4gK29iai0kKENPTkZJR19QUENfVURCR19CRUFUKaCgoKCgoKCgoKCgoCs9IGJlYXRf
dWRiZy5vCj4gK29iai0kKENPTkZJR19TRVJJQUxfVFhYOSmgoKCgoKCgoKCgoKCgoCs9IGNlbGxl
Yl9zY2Nfc2lvLm8KPiArb2JqLSQoQ09ORklHX1NQVV9CQVNFKaCgoKCgoKCgoKCgoKCgoKCgKz0g
YmVhdF9zcHVfcHJpdjEubwo+ICtlbmRpZgoKVGhpcyBsb29rcyBsaWtlIHlvdSBhcmUgcmVmZXJl
bmNpbmcgZmlsZXMgaW4gdGhlIE1ha2VmaWxlIHRoYXQgYXJlIG1vdmVkCmluIHRoZSBsYXRlciBw
YXRjaGVzLiBJbiBvcmRlciB0byBtYWtlIHRoZSBnaXQtYmlzZWN0IHdvcmsgY29ycmVjdGx5Cm9u
IHRoZSBrZXJuZWwgYWZ0ZXIgdGhlIHBhdGNoZXMgYXJlIGFwcGxpZWQsIEknZCBzdWdnZXN0IGVp
dGhlciBtb3ZpbmcKYWxsIGZpbGVzIGF0IG9uY2UsIG9yIHRvIG1vZGlmeSB0aGUgTWFrZWZpbGUg
aW4gZXZlcnkgc3RlcCBvZiB0aGUgd2F5CnNvIHRoYXQgdGhlIGtlcm5lbCBzdGlsbCBidWlsZHMu
CgoJQXJuZCA8PjwK
^ permalink raw reply
* Re: [PATCH 1/11] celleb: coding style cleanup
From: Arnd Bergmann @ 2008-03-05 11:32 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.172143.-1350505489.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba.co.jp>
Acked-by: Arnd Bergmann <arnd@arndb.de>
all changes in here look right, and they don't change the generated
code.
^ permalink raw reply
* Re: [PATCH 0/11] celleb: patchset for 2.6.26
From: Arnd Bergmann @ 2008-03-05 11:31 UTC (permalink / raw)
To: linuxppc-dev; +Cc: paulus
In-Reply-To: <20080305.172000.-1300537299.kouish@swc.toshiba.co.jp>
On Wednesday 05 March 2008, Ishizaki Kou wrote:
> This is a patchset for 2.6.26 which contains following changes:
>=20
> - cleanup =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
[PATCH 1/11]
> - move celleb files into platforms/cell/ =A0[PATCH 2/11]..[PATCH 7/11]
> - consolidate io-workarounds code =A0 =A0 =A0 =A0 [PATCH 8/11]..[PATCH 9/=
11]
> - add support for celleb PCI Express =A0 =A0 =A0[PATCH 10/11]
> - bug fix =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
[PATCH 11/11]
>=20
> Consolidating io-workarounds code changes the code to support
> CellBlade PCI. Please test it because I don't have any access to
> CellBlade.
Thanks for your patches, the first look I had at them left a very
good impression with your work. I'll send individual acks when
I'm confident enough with them to work on QS20.
Arnd <><
^ permalink raw reply
* Re: [PATCH] ehea: Fix missing Kconfig dependency
From: Jeff Garzik @ 2008-03-05 11:29 UTC (permalink / raw)
To: Thomas Klein
Cc: Jan-Bernd Themann, netdev, linux-kernel, linux-ppc,
Christoph Raisch, Stefan Roscher
In-Reply-To: <200803031352.06322.osstklei@de.ibm.com>
Thomas Klein wrote:
> Fixed Kconfig: ehea driver requires sparse mem
>
> Signed-off-by: Thomas Klein <tklein@de.ibm.com>
>
> ---
> diff -Nurp linux-2.6.25-rc3.org/drivers/net/Kconfig linux-2.6.25-rc3/drivers/net/Kconfig
> --- linux-2.6.25-rc3.org/drivers/net/Kconfig 2008-02-24 22:25:54.000000000 +0100
> +++ linux-2.6.25-rc3/drivers/net/Kconfig 2008-03-03 13:36:48.000000000 +0100
> @@ -2513,7 +2513,7 @@ config CHELSIO_T3
>
> config EHEA
> tristate "eHEA Ethernet support"
> - depends on IBMEBUS && INET
> + depends on IBMEBUS && INET && SPARSEMEM
> select INET_LRO
> ---help---
applied
^ permalink raw reply
* RE: I2S driver
From: Angelo @ 2008-03-05 10:45 UTC (permalink / raw)
To: Pedro Luis D. L.
In-Reply-To: <BLU106-W11BB87023EFF6EED3D8E4DCA110@phx.gbl>
[-- Attachment #1: Type: text/plain, Size: 298 bytes --]
Pedro wrote:
>Which library do you mean? I don't understand, sorry.
In your previous mail (with code), each lines with an "#include " don't show the name of header file.
thanks
---------------------------------
L'email della prossima generazione? Puoi averla con la Nuova Yahoo! Mail
[-- Attachment #2: Type: text/html, Size: 472 bytes --]
^ permalink raw reply
* Re: [PATCH] math-emu: delete PowerPC old math-emu headers
From: Benjamin Herrenschmidt @ 2008-03-05 10:44 UTC (permalink / raw)
To: Liu Yu; +Cc: linuxppc-dev
In-Reply-To: <12047077481825-git-send-email-Yu.Liu@freescale.com>
On Wed, 2008-03-05 at 17:02 +0800, Liu Yu wrote:
> Use common headers as a replacement.
> The Common headers are located in "include/math-emu/",
> they are used by multiple platforms such as s390, sparc, alpha.
>
> As the common headers have more developers,
> they are more popular and more stable.
>
> In fact, PowerPC old math-emu headers cannot handle float point
> exceptions exactly while the common headers can.
That sounds like an excellent idea. However, were you able to run some
kind of test suite to verify that the emulation works properly ?
Cheers,
Ben.
^ permalink raw reply
* RE: I2S driver
From: Pedro Luis D. L. @ 2008-03-05 10:09 UTC (permalink / raw)
To: linuxppc-embedded
In-Reply-To: <538035.10329.qm@web23104.mail.ird.yahoo.com>
Angelo wrote:
> Thanks for code.
> But why i can't see library?
Which library do you mean? I don't understand, sorry.
=20
>>After the module I send you also the code from another module that>establ=
ishes PSC as I2S configuration. Clocks where adjusted to send>the audio dat=
a also at 44.1 Khz as fine tunned as possible due to>communication requirem=
ents of the attached DAC in that hardware.
> You'll send me another code?
This code was already in my previous email. After "------------------------=
-------------------" at the end of the email. Check it again, hehehe.
> And what about my file lite5200b.dts?
> I must enable some like this?
> // PSC3 in CODEC mode example
> //i2s@2400 { // PSC3
> // device_type =3D "sound";
> // compatible =3D "mpc5200b-psc-i2s";//not 5200 compatible
> // cell-index =3D ;
> // reg =3D ;
> // interrupts =3D ;
> // interrupt-parent =3D <&mpc5200_pic>;
> //};
I didn't need it. :-)
>=20
> ________________________________
> L'email della prossima generazione? Puoi averla con la Nuova Yahoo! Mail
_________________________________________________________________
Tecnolog=EDa, moda, motor, viajes,=85suscr=EDbete a nuestros boletines para=
estar siempre a la =FAltima
http://newsletters.msn.com/hm/maintenanceeses.asp?L=3DES&C=3DES&P=3DWCMaint=
enance&Brand=3DWL&RU=3Dhttp%3a%2f%2fmail.live.com=
^ permalink raw reply
* RE: Virtual device hdlc0 asks to que packet!
From: Joakim Tjernlund @ 2008-03-05 10:04 UTC (permalink / raw)
To: rmcguire; +Cc: linuxppc-embedded
In-Reply-To: <002801c87e9c$f57e4430$6405a8c0@absolut>
On Wed, 2008-03-05 at 00:43 -0800, Russell McGuire wrote:
> Jocke,
>
> I wonder how one change this? I don't remember any of the API calls
> referencing this, so maybe the default to 1000? Or perhaps that is protocol
> specific. I will hunt through some of Freescale's Ethernet drivers and see
> if I can't find anything.
default is 1000 for ethernet.
See tx_queue_len in net/ethernet/eth.c,
ether_setup(struct net_device *dev)
Maybe you can find out from there.
>
> I know that inside the driver, I have 32 RX, and 32 TX buffers <buffer
> descriptors> available. There needs to be some smarter way to manage it
> though than raw numbers. Large file transfers, if they are cached, can
> easily over flow any number of buffers.
>
> Thanks for the note.
>
> -Russ
>
> > -----Original Message-----
> > From: Joakim Tjernlund [mailto:joakim.tjernlund@transmode.se]
> > Sent: Wednesday, March 05, 2008 12:12 AM
> > To: rmcguire@videopresence.com
> > Cc: linuxppc-embedded@ozlabs.org
> > Subject: Re: Virtual device hdlc0 asks to que packet!
> >
> >
> > On Tue, 2008-03-04 at 15:33 -0800, Russell McGuire wrote:
> > > All,
> > >
> > > Background MPC8360, using a T1 PHY as an HDLC device.
> > >
> > > Developing my hdlc driver, and was writing a simple send utility. To
> > test it
> > > out. Things seem well when I had massive delays in between the write()
> > or
> > > sendot(), and I was able to attain 100+Kbytes/sec. However, when I
> > replaced
> > > the simple usleeps(xxx) with select statements, suddenly I started
> > getting a
> > > ton of these messages.
> > >
> > > "Virtual device hdlc0 asks to que packet!"
> > >
> > > Along with dropped or non-sent data.
> > >
> > > In my driver I am tracking the available TX buffers, and issue a
> > > netif_stop_que() statement inside the start_xmit() call, with a
> > > corresponding netif_wake_que() in the tx_handler.
> > >
> > > Is there something else that needs to be done in order to make a select
> > > statement wait for the socket to not be busy? It seems that it always
> > > returns immediately with no timeout.
> > >
> > > I guess the other pieces of the scenario are as follows:
> > >
> > > * Using 'sethdlc hdlc0 hdlc' for the mode, so no IP stack is used.
> > > * Opening the socket to the hdlc device directly to the device itself,
> > i.e.
> > > no port number socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
> > >
> > > I have used both sendto() and write() to pass data down, and they both
> > > return as if all the data has been sent, i.e. I never get an error.
> > >
> > > -Russ
> >
> > When playing with your driver I noticed that the hdlc interfaces had
> > txqueuelen:0
> > Normal eth interfaces has txqueuelen:1000. Maybe you need to add a
> > txqueue to the hdlc interfaces?
> >
> > Jocke
> >
> > PS.
> > The driver seems to work now, I get both TX and RX IRQs now.
>
>
^ permalink raw reply
* RE: [PATCH] math-emu: delete PowerPC old math-emu headers
From: Liu Yu @ 2008-03-05 8:57 UTC (permalink / raw)
To: Liu Yu, linuxppc-dev
In-Reply-To: <12047077481825-git-send-email-Yu.Liu@freescale.com>
Sorry. I forgot to add the serial number.
The three math-emu patches are in the same serial.
> -----Original Message-----
> From: Liu Yu=20
> Sent: Wednesday, March 05, 2008 5:02 PM
> To: linuxppc-dev@ozlabs.org
> Cc: Liu Yu
> Subject: [PATCH] math-emu: delete PowerPC old math-emu headers
>=20
> Use common headers as a replacement.
> The Common headers are located in "include/math-emu/",
> they are used by multiple platforms such as s390, sparc, alpha.
>=20
> As the common headers have more developers,
> they are more popular and more stable.
>=20
> In fact, PowerPC old math-emu headers cannot handle float point
> exceptions exactly while the common headers can.
>=20
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox