// SPDX-License-Identifier: GPL-2.0
/*
* linux / drivers / pcmcia / sa1100_neponset . c
*
* Neponset PCMCIA specific routines
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <asm /mach-types.h>
#include "sa1111_generic.h"
#include "max1600.h"
/*
* Neponset uses the Maxim MAX1600 , with the following connections :
*
* MAX1600 Neponset
*
* A0VCC SA - 1111 GPIO A < 1 >
* A1VCC SA - 1111 GPIO A < 0 >
* A0VPP CPLD NCR A0VPP
* A1VPP CPLD NCR A1VPP
* B0VCC SA - 1111 GPIO A < 2 >
* B1VCC SA - 1111 GPIO A < 3 >
* B0VPP ground ( slot B is CF )
* B1VPP ground ( slot B is CF )
*
* VX VCC ( 5 V )
* VY VCC3_3 ( 3 . 3 V )
* 12 INA 12 V
* 12 INB ground ( slot B is CF )
*
* The MAX1600 CODE pin is tied to ground , placing the device in
* " Standard Intel code " mode . Refer to the Maxim data sheet for
* the corresponding truth table .
*/
static int neponset_pcmcia_hw_init(struct soc_pcmcia_socket *skt)
{
struct max1600 *m;
int ret;
ret = max1600_init(skt->socket.dev.parent, &m,
skt->nr ? MAX1600_CHAN_B : MAX1600_CHAN_A,
MAX1600_CODE_LOW);
if (ret == 0 )
skt->driver_data = m;
return ret;
}
static int
neponset_pcmcia_configure_socket(struct soc_pcmcia_socket *skt, const socket_state_t *state)
{
struct max1600 *m = skt->driver_data;
int ret;
ret = sa1111_pcmcia_configure_socket(skt, state);
if (ret == 0 )
ret = max1600_configure(m, state->Vcc, state->Vpp);
return ret;
}
static struct pcmcia_low_level neponset_pcmcia_ops = {
.owner = THIS_MODULE,
.hw_init = neponset_pcmcia_hw_init,
.configure_socket = neponset_pcmcia_configure_socket,
.first = 0 ,
.nr = 2 ,
};
int pcmcia_neponset_init(struct sa1111_dev *sadev)
{
sa11xx_drv_pcmcia_ops(&neponset_pcmcia_ops);
return sa1111_pcmcia_add(sadev, &neponset_pcmcia_ops,
sa11xx_drv_pcmcia_add_one);
}
Messung V0.5 in Prozent C=97 H=91 G=93
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-28)
¤
*© Formatika GbR, Deutschland