imx51_spi.c revision 1.1
11.1Shkenken/*	$NetBSD: imx51_spi.c,v 1.1 2014/03/22 09:28:08 hkenken Exp $	*/
21.1Shkenken
31.1Shkenken/*-
41.1Shkenken * Copyright (c) 2014  Genetec Corporation.  All rights reserved.
51.1Shkenken * Written by Hashimoto Kenichi for Genetec Corporation.
61.1Shkenken *
71.1Shkenken * Redistribution and use in source and binary forms, with or without
81.1Shkenken * modification, are permitted provided that the following conditions
91.1Shkenken * are met:
101.1Shkenken * 1. Redistributions of source code must retain the above copyright
111.1Shkenken *    notice, this list of conditions and the following disclaimer.
121.1Shkenken * 2. Redistributions in binary form must reproduce the above copyright
131.1Shkenken *    notice, this list of conditions and the following disclaimer in the
141.1Shkenken *    documentation and/or other materials provided with the distribution.
151.1Shkenken *
161.1Shkenken * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
171.1Shkenken * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
181.1Shkenken * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
191.1Shkenken * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
201.1Shkenken * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
211.1Shkenken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
221.1Shkenken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
231.1Shkenken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
241.1Shkenken * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
251.1Shkenken * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
261.1Shkenken * SUCH DAMAGE.
271.1Shkenken */
281.1Shkenken
291.1Shkenken#include <sys/cdefs.h>
301.1Shkenken__KERNEL_RCSID(0, "$NetBSD: imx51_spi.c,v 1.1 2014/03/22 09:28:08 hkenken Exp $");
311.1Shkenken
321.1Shkenken#include "locators.h"
331.1Shkenken#include "opt_imx.h"
341.1Shkenken#include "opt_imxspi.h"
351.1Shkenken
361.1Shkenken#include <sys/param.h>
371.1Shkenken#include <sys/bus.h>
381.1Shkenken#include <sys/device.h>
391.1Shkenken
401.1Shkenken#include <arm/imx/imxspivar.h>
411.1Shkenken#include <arm/imx/imx51reg.h>
421.1Shkenken#include <arm/imx/imx51var.h>
431.1Shkenken#include <arm/imx/imx51_ccmvar.h>
441.1Shkenken
451.1Shkenkenstruct imx51spi_softc {
461.1Shkenken	struct imxspi_softc sc_spi;
471.1Shkenken	struct spi_chipset_tag sc_tag;
481.1Shkenken};
491.1Shkenken
501.1ShkenkenCFATTACH_DECL_NEW(imx51_spi, sizeof(struct imx51spi_softc),
511.1Shkenken    imxspi_match, imxspi_attach, NULL, NULL);
521.1Shkenken
531.1Shkenkenstatic int
541.1Shkenkenimxspi_cs_enable(void *arg, int slave)
551.1Shkenken{
561.1Shkenken	return 0;
571.1Shkenken}
581.1Shkenken
591.1Shkenkenstatic int
601.1Shkenkenimxspi_cs_disable(void *arg, int slave)
611.1Shkenken{
621.1Shkenken	return 0;
631.1Shkenken}
641.1Shkenken
651.1Shkenkenint
661.1Shkenkenimxspi_match(device_t parent, cfdata_t cf, void *aux)
671.1Shkenken{
681.1Shkenken	if (strcmp(cf->cf_name, "imxspi") == 0)
691.1Shkenken		return 1;
701.1Shkenken
711.1Shkenken	return 0;
721.1Shkenken}
731.1Shkenken
741.1Shkenkenvoid
751.1Shkenkenimxspi_attach(device_t parent, device_t self, void *aux)
761.1Shkenken{
771.1Shkenken	struct imx51spi_softc *sc = device_private(self);
781.1Shkenken	struct axi_attach_args *aa = aux;
791.1Shkenken	struct imxspi_attach_args saa;
801.1Shkenken	int cf_flags = device_cfdata(self)->cf_flags;
811.1Shkenken
821.1Shkenken	sc->sc_tag.cookie = sc;
831.1Shkenken	sc->sc_tag.spi_cs_enable = imxspi_cs_enable;
841.1Shkenken	sc->sc_tag.spi_cs_disable = imxspi_cs_disable;
851.1Shkenken
861.1Shkenken	saa.saa_iot = aa->aa_iot;
871.1Shkenken	saa.saa_addr = aa->aa_addr;
881.1Shkenken	saa.saa_size = aa->aa_size;
891.1Shkenken	saa.saa_irq = aa->aa_irq;
901.1Shkenken	saa.saa_enhanced = cf_flags;
911.1Shkenken
921.1Shkenken	saa.saa_nslaves = IMXSPINSLAVES;
931.1Shkenken	saa.saa_freq = imx51_get_clock(IMX51CLK_CSPI_CLK_ROOT);
941.1Shkenken	saa.saa_tag = &sc->sc_tag;
951.1Shkenken
961.1Shkenken	sc->sc_spi.sc_dev = self;
971.1Shkenken
981.1Shkenken	imxspi_attach_common(parent, &sc->sc_spi, &saa);
991.1Shkenken}
100