From: <hap...@us...> - 2007-09-17 19:42:02
|
Revision: 1329 http://hackndev.svn.sourceforge.net/hackndev/?rev=1329&view=rev Author: happy-slapin Date: 2007-09-17 12:41:58 -0700 (Mon, 17 Sep 2007) Log Message: ----------- cleanup: getting from hh.org Modified Paths: -------------- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig =================================================================== --- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig 2007-09-17 15:37:25 UTC (rev 1328) +++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/Kconfig 2007-09-17 19:41:58 UTC (rev 1329) @@ -810,23 +810,19 @@ via the file /proc/rtc and its behaviour is set by various ioctls on /dev/rtc. -# -# This is a weird duplicate copy of the driver, please update your config to use -# RTC_DRV_SA1100 instead! -# -#config SA1100_RTC -# tristate "SA11x0/PXA2xx RTC support" -# depends on ARCH_SA1100 || ARCH_PXA -# help -# If you say Y here and create a character special file /dev/rtc with -# major number 10 and minor number 135 using mknod ("man mknod"), you -# will get access to the real time clock built into your SA11x0 or -# PXA2xx CPU. It reports status information via the file /proc/rtc -# and its behaviour is set by various ioctls on /dev/rtc. -# -# To compile this driver as a module, choose M here: the -# module will be called sa1100-rtc. +config SA1100_RTC + tristate "SA11x0/PXA2xx RTC support" + depends on ARCH_SA1100 || ARCH_PXA + help + If you say Y here and create a character special file /dev/rtc with + major number 10 and minor number 135 using mknod ("man mknod"), you + will get access to the real time clock built into your SA11x0 or + PXA2xx CPU. It reports status information via the file /proc/rtc + and its behaviour is set by various ioctls on /dev/rtc. + To compile this driver as a module, choose M here: the + module will be called sa1100-rtc. + config GEN_RTC tristate "Generic /dev/rtc emulation" depends on RTC!=y && !IA64 && !ARM && !M32R && !SPARC && !FRV Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c =================================================================== --- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c 2007-09-17 15:37:25 UTC (rev 1328) +++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/char/sa1100-rtc.c 2007-09-17 19:41:58 UTC (rev 1329) @@ -1,16 +1,4 @@ /* - * - * NOTE: The file you're looking for is in drivers/rtc, please don't use this one - * it'll be removed eventually. - * - * - * - * - */ -#error This is a weird duplicate copy of the driver, please update your config to use \ -RTC_DRV_SA1100 instead! - -/* * linux/drivers/char/sa1100-rtc.c * * Real Time Clock interface for Linux on StrongARM SA1x00 Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c =================================================================== --- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c 2007-09-17 15:37:25 UTC (rev 1328) +++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/htc-egpio.c 2007-09-17 19:41:58 UTC (rev 1329) @@ -11,6 +11,7 @@ #include <linux/errno.h> /* ENODEV */ #include <linux/interrupt.h> /* enable_irq_wake */ #include <linux/spinlock.h> /* spinlock_t */ +#include <linux/platform_device.h> /* platform_device */ #include <linux/module.h> #include <linux/gpiodev2.h> #include <linux/mfd/htc-egpio.h> @@ -138,12 +139,9 @@ for (i=0; i<pdata->nr_pins; i++) { struct htc_egpio_pinInfo *pi = &pdata->pins[i]; if (pi->type == HTC_EGPIO_TYPE_INPUT - && pi->pin_nr == (gpio_no & GPIO_BASE_MASK) + && pi->gpio == gpio_no && pi->input_irq >= 0) - return pi->input_irq + ei->irqStart; - if (pi->type == HTC_EGPIO_TYPE_IRQ - && pi->pin_nr == (gpio_no & GPIO_BASE_MASK)) - return pi->pin_nr + ei->irqStart; + return (pi->input_irq & 0xf) + ei->irqStart; } return -ENODEV; } @@ -181,10 +179,10 @@ static void setup_pin(struct egpio_info *ei, struct htc_egpio_pinInfo *pi) { - struct htc_egpio_pinInfo dummy; + int pin = pi->gpio & GPIO_BASE_MASK; - if (pi->pin_nr < 0 || pi->pin_nr > 16*MAX_EGPIO_REGS) { - printk(KERN_ERR "EGPIO invalid pin %d\n", pi->pin_nr); + if (pi->gpio < 0 || pin > 16*MAX_EGPIO_REGS) { + printk(KERN_ERR "EGPIO invalid pin %d\n", pi->gpio); return; } @@ -192,24 +190,19 @@ case HTC_EGPIO_TYPE_INPUT: if (pi->input_irq < 0) break; - dummy.pin_nr = pi->input_irq; - pi = &dummy; - /* NO BREAK */ - case HTC_EGPIO_TYPE_IRQ: - if (ei->ackRegister != u16pos(pi->pin_nr)) { + pin = pi->input_irq & GPIO_BASE_MASK; + if (ei->ackRegister != u16pos(pin)) { printk(KERN_ERR "EGPIO irq conflict %d vs %d\n" - , ei->ackRegister, u16pos(pi->pin_nr)); + , ei->ackRegister, u16pos(pin)); return; } break; - case HTC_EGPIO_TYPE_OUTPUT: { - int pin = pi->pin_nr; + case HTC_EGPIO_TYPE_OUTPUT: if (ei->maxRegs < u16pos(pin)) ei->maxRegs = u16pos(pin); if (pi->output_initial) ei->cached_values[u16pos(pin)] |= u16bit(pin); break; - } default: printk(KERN_ERR "EGPIO unknown type %d\n", pi->type); } @@ -221,6 +214,7 @@ struct resource *res; struct egpio_info *ei; int irq, i, ret; + struct gpio_ops ops; /* Initialize ei data structure. */ ei = kzalloc(sizeof(*ei), GFP_KERNEL); @@ -247,18 +241,12 @@ , res->start, ei->addrBase); ei->bus_shift = pdata->bus_shift; - pdata->ops.get = egpio_get; - pdata->ops.set = egpio_set; - pdata->ops.to_irq = egpio_to_irq; platform_set_drvdata(pdev, ei); - { - struct gpio_ops ops; ops.get_value = egpio_get; ops.set_value = egpio_set; ops.to_irq = egpio_to_irq; gpiodev_register(pdata->gpio_base, &pdev->dev, &ops); - } /* Go through list of pins. */ ei->irqStart = pdata->irq_base; Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c =================================================================== --- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c 2007-09-17 15:37:25 UTC (rev 1328) +++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/pasic3_base.c 2007-09-17 19:41:58 UTC (rev 1329) @@ -94,13 +94,10 @@ struct device *dev = ds1wm_dev->dev.parent; int c; - /* FIXME: use this to detect magician/pasic3 for now */ - if (ds1wm_clk.rate == 4000000) { - c = pasic3_read_register(dev, 0x28); - pasic3_write_register(dev, 0x28, c & 0x7f); + c = pasic3_read_register(dev, 0x28); + pasic3_write_register(dev, 0x28, c & 0x7f); - pr_debug ("pasic3: DS1WM OWM_EN low (active) %02x\n", c & 0x7f); - } + pr_debug ("pasic3: DS1WM OWM_EN low (active) %02x\n", c & 0x7f); } static void ds1wm_disable(struct platform_device *ds1wm_dev) @@ -108,13 +105,10 @@ struct device *dev = ds1wm_dev->dev.parent; int c; - /* FIXME: use this to detect magician/pasic3 for now */ - if (ds1wm_clk.rate == 4000000) { - c = pasic3_read_register(dev, 0x28); - pasic3_write_register(dev, 0x28, c | 0x80); + c = pasic3_read_register(dev, 0x28); + pasic3_write_register(dev, 0x28, c | 0x80); - pr_debug ("pasic3: DS1WM OWM_EN high (inactive) %02x\n", c | 0x80); - } + pr_debug ("pasic3: DS1WM OWM_EN high (inactive) %02x\n", c | 0x80); } static struct ds1wm_platform_data __devinit ds1wm_platform_data = { Modified: linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c =================================================================== --- linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c 2007-09-17 15:37:25 UTC (rev 1328) +++ linux4palm/linux/branches/cleanup-branch-never-commit/drivers/mfd/samcop_base.c 2007-09-17 19:41:58 UTC (rev 1329) @@ -54,9 +54,11 @@ #include <asm/hardware/ipaq-samcop.h> #include <linux/mfd/samcop_base.h> #include <asm/hardware/samcop-sdi.h> +#include <asm/hardware/samcop-fsi.h> #include <asm/hardware/samcop-dma.h> #include <asm/arch/pxa-dmabounce.h> #include "../mmc/samcop_sdi.h" +#include "../misc/samcop_fsi.h" #include <asm/arch/irq.h> #include <asm/arch/clock.h> @@ -581,7 +583,31 @@ set_irq_chained_handler(samcop->irq_nr, samcop_irq_demux); } + /************************************************************* + * SAMCOP FS interface hooks and initialization + *************************************************************/ + +static u32 samcop_fsi_read_register(struct device *dev, u32 reg) +{ + struct samcop_data *samcop = dev->parent->driver_data; + + return samcop_read_register(samcop, _SAMCOP_FSI_Base + reg); +} + +static void samcop_fsi_write_register(struct device *dev, u32 reg, u32 val) +{ + struct samcop_data *samcop = dev->parent->driver_data; + + samcop_write_register(samcop, _SAMCOP_FSI_Base + reg, val); +} + +static struct samcop_fsi_data samcop_fsi_data = { + .read_reg = samcop_fsi_read_register, + .write_reg = samcop_fsi_write_register, +}; + +/************************************************************* * SAMCOP SD interface hooks and initialization *************************************************************/ int samcop_dma_needs_bounce(struct device *dev, dma_addr_t addr, size_t size) @@ -1125,6 +1151,7 @@ .start = _SAMCOP_FSI_Base, .end = _SAMCOP_FSI_Base + 0x1f, .irq = _IRQ_SAMCOP_FCD, + .platform_data = &samcop_fsi_data, }, { .id = { -1 }, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |