···139139config SA1100_SHANNON140140 bool "Shannon"141141 select ARM_SA1100_CPUFREQ142142+ select REGULATOR143143+ select REGULATOR_FIXED_VOLTAGE142144 help143145 The Shannon (also known as a Tuxscreen, and also as a IS2630) was a144146 limited edition webphone produced by Philips. The Shannon is a SA1100
···1414extern int pcmcia_h3600_init(struct device *);1515extern int pcmcia_pangolin_init(struct device *);1616extern int pcmcia_pfs168_init(struct device *);1717-extern int pcmcia_shannon_init(struct device *);1817extern int pcmcia_simpad_init(struct device *);1918extern int pcmcia_stork_init(struct device *);2019extern int pcmcia_system3_init(struct device *);
-104
drivers/pcmcia/sa1100_shannon.c
···11-// SPDX-License-Identifier: GPL-2.022-/*33- * drivers/pcmcia/sa1100_shannon.c44- *55- * PCMCIA implementation routines for Shannon66- *77- */88-#include <linux/module.h>99-#include <linux/kernel.h>1010-#include <linux/device.h>1111-#include <linux/init.h>1212-#include <linux/io.h>1313-1414-#include <mach/hardware.h>1515-#include <asm/mach-types.h>1616-#include <mach/shannon.h>1717-#include <asm/irq.h>1818-#include "sa1100_generic.h"1919-2020-static int shannon_pcmcia_hw_init(struct soc_pcmcia_socket *skt)2121-{2222- /* All those are inputs */2323- GAFR &= ~(GPIO_GPIO(SHANNON_GPIO_EJECT_0) |2424- GPIO_GPIO(SHANNON_GPIO_EJECT_1) |2525- GPIO_GPIO(SHANNON_GPIO_RDY_0) |2626- GPIO_GPIO(SHANNON_GPIO_RDY_1));2727-2828- if (skt->nr == 0) {2929- skt->stat[SOC_STAT_CD].gpio = SHANNON_GPIO_EJECT_0;3030- skt->stat[SOC_STAT_CD].name = "PCMCIA_CD_0";3131- skt->stat[SOC_STAT_RDY].gpio = SHANNON_GPIO_RDY_0;3232- skt->stat[SOC_STAT_RDY].name = "PCMCIA_RDY_0";3333- } else {3434- skt->stat[SOC_STAT_CD].gpio = SHANNON_GPIO_EJECT_1;3535- skt->stat[SOC_STAT_CD].name = "PCMCIA_CD_1";3636- skt->stat[SOC_STAT_RDY].gpio = SHANNON_GPIO_RDY_1;3737- skt->stat[SOC_STAT_RDY].name = "PCMCIA_RDY_1";3838- }3939-4040- return 0;4141-}4242-4343-static void4444-shannon_pcmcia_socket_state(struct soc_pcmcia_socket *skt,4545- struct pcmcia_state *state)4646-{4747- switch (skt->nr) {4848- case 0:4949- state->bvd1 = 1; 5050- state->bvd2 = 1; 5151- state->vs_3v = 1; /* FIXME Can only apply 3.3V on Shannon. */5252- state->vs_Xv = 0;5353- break;5454-5555- case 1:5656- state->bvd1 = 1; 5757- state->bvd2 = 1; 5858- state->vs_3v = 1; /* FIXME Can only apply 3.3V on Shannon. */5959- state->vs_Xv = 0;6060- break;6161- }6262-}6363-6464-static int6565-shannon_pcmcia_configure_socket(struct soc_pcmcia_socket *skt,6666- const socket_state_t *state)6767-{6868- switch (state->Vcc) {6969- case 0: /* power off */7070- printk(KERN_WARNING "%s(): CS asked for 0V, still applying 3.3V..\n", __func__);7171- break;7272- case 50:7373- printk(KERN_WARNING "%s(): CS asked for 5V, applying 3.3V..\n", __func__);7474- case 33:7575- break;7676- default:7777- printk(KERN_ERR "%s(): unrecognized Vcc %u\n",7878- __func__, state->Vcc);7979- return -1;8080- }8181-8282- printk(KERN_WARNING "%s(): Warning, Can't perform reset\n", __func__);8383-8484- /* Silently ignore Vpp, output enable, speaker enable. */8585-8686- return 0;8787-}8888-8989-static struct pcmcia_low_level shannon_pcmcia_ops = {9090- .owner = THIS_MODULE,9191- .hw_init = shannon_pcmcia_hw_init,9292- .socket_state = shannon_pcmcia_socket_state,9393- .configure_socket = shannon_pcmcia_configure_socket,9494-};9595-9696-int pcmcia_shannon_init(struct device *dev)9797-{9898- int ret = -ENODEV;9999-100100- if (machine_is_shannon())101101- ret = sa11xx_drv_pcmcia_probe(dev, &shannon_pcmcia_ops, 0, 2);102102-103103- return ret;104104-}