Edit

IABSD.fr/src/sys/dev/ic/ccp.c

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2024-09-04 07:45:08
    Hash : 8eadc5ec
    Message : make psp attach to ccp as a different driver 'fine with me' hshoexer, ok bluhm@

  • sys/dev/ic/ccp.c
  • /*	$OpenBSD: ccp.c,v 1.11 2024/09/04 07:45:08 jsg Exp $ */
    
    /*
     * Copyright (c) 2018 David Gwynne <dlg@openbsd.org>
     *
     * Permission to use, copy, modify, and distribute this software for any
     * purpose with or without fee is hereby granted, provided that the above
     * copyright notice and this permission notice appear in all copies.
     *
     * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
     * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
     * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
     * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
     * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
     * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
     * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
     */
    
    #include <sys/param.h>
    #include <sys/systm.h>
    #include <sys/device.h>
    #include <sys/timeout.h>
    
    #include <machine/bus.h>
    
    #include <dev/ic/ccpvar.h>
    
    #define CCP_REG_TRNG		0xc
    
    static void	ccp_rng(void *);
    
    struct cfdriver ccp_cd = {
    	NULL,
    	"ccp",
    	DV_DULL
    };
    
    void
    ccp_attach(struct ccp_softc *sc)
    {
    	timeout_set(&sc->sc_tick, ccp_rng, sc);
    	ccp_rng(sc);
    
    	printf("\n");
    }
    
    static void
    ccp_rng(void *arg)
    {
    	struct ccp_softc *sc = arg;
    	uint32_t trng;
    
    	trng = bus_space_read_4(sc->sc_iot, sc->sc_ioh, CCP_REG_TRNG);
    	if (trng != 0)
    		enqueue_randomness(trng);
    
    	timeout_add_msec(&sc->sc_tick, 100);
    }